using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Web; using System.Web.Services; using HIGHWAY = TableDataService.Model.HIGHWAY; using SDK = WebService.SDK; using Newtonsoft.Json.Linq; using OperatingData.SDK; using Newtonsoft.Json; using System.IO; using System.Data.OleDb; using HCC = HZQR.Common.Common; using HZQR.Common; namespace TableDataService { /// /// Service 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 // [System.Web.Script.Services.ScriptService] public class Service : System.Web.Services.WebService { protected static string _OracleConnStr = ConfigurationManager.AppSettings["OracleConnStr"].ToString(); protected static string _OracleConnStrSellData = ConfigurationManager.AppSettings["OracleConnStrSellData"]; protected static string _OracleHelperString = ConfigurationManager.AppSettings["OracleHelperString"].ToString(); protected static string _LogUrl = ConfigurationManager.AppSettings["LogUrl"]; protected static string _ColudUrl = ConfigurationManager.AppSettings["ColudUrl"]; protected static string _IsUploadColud = ConfigurationManager.AppSettings["IsUploadColud"]; protected static string _IsLog = ConfigurationManager.AppSettings["IsLog"]; protected static string _IsSaleSplit = ConfigurationManager.AppSettings["IsSaleSplit"]; //protected static string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); //protected static string _AUTHORIZATION_CODE = ConfigurationManager.AppSettings["AUTHORIZATION_CODE"].ToString(); //protected string _IsUpLoad = ConfigurationManager.AppSettings["IsUpload"].ToString(); //protected string _IsDownload = ConfigurationManager.AppSettings["IsDownload"].ToString(); //protected string _IsCheckAuth = ConfigurationManager.AppSettings["IsCheckAuth"].ToString(); private static int _MaxDataQuantity = 4; private static int _MaxDataDownload = 10; /// /// 本地连接 /// OracleHelper LocalOracle { get; set; } /// /// 授权连接 /// OracleHelper AuthOracle { get; set; } #region 数据上传 #region 方法 -> 数据上传 /// /// 数据上传 /// /// 机器授权码 /// 上传数据表名 /// 传输数据,json字符串格式 /// json字符串,存储服务区编码、门店编码、门店内码、收银机号、MAC地址、最近一次数据上传时间 /// [WebMethod] public string UploadTableData(string code, string tableName, string jsonString, string orderString = "") { //if (_IsUpLoad == "0") //{ // return "{\"error\": -1 ,\"msg\": \"上传接口已关闭!\",\"rows\":[]}"; //} //获取本地收银数据库连接 if (LocalOracle == null) { LocalOracle = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); } if (!string.IsNullOrEmpty(orderString)) { try { JObject _OrderString = JObject.Parse(orderString); /* 判断orderString中是否缺失必填项【服务区编码、门店编码、门店内码、收银机号、收银机本地数据最早时间】 * 这些参数是数据上传至哪台机器的判断条件 */ if (_OrderString.Property("SERVERPARTCODE") == null || _OrderString.Property("SHOPCODE") == null || _OrderString.Property("MACHINECODE") == null) { return "{\"error\": -1 ,\"msg\": \"获取数据上传失败:JSON参数解析异常!\",\"rows\":[]}"; } //服务区编码 string _SERVERPARTCODE = _OrderString.Property("SERVERPARTCODE").Value.ToString(); //门店编码 string _SHOPCODE = _OrderString.Property("SHOPCODE").Value.ToString(); //门店ID string _SERVERPARTSHOP_ID = _OrderString.Property("SERVERPARTSHOP_ID") == null ? "" : _OrderString.Property("SERVERPARTSHOP_ID").Value.ToString(); //收银机编码 string _MACHINECODE = _OrderString.Property("MACHINECODE").Value.ToString(); //Mac地址 string _MACADDRESS = _OrderString.Property("MACADDRESS") == null ? "" : _OrderString.Property("MACADDRESS").Value.ToString(); //收银机上传时间,预留字段,暂不使用 string _ENDDATE = _OrderString.Property("ENDDATE") == null ? "" : _OrderString.Property("ENDDATE").Value.ToString(); //必填项“服务区编码、门店内码、门店编码”不可为空 if (string.IsNullOrWhiteSpace(_SERVERPARTCODE) || string.IsNullOrWhiteSpace(_SHOPCODE) || string.IsNullOrWhiteSpace(_MACHINECODE) || string.IsNullOrWhiteSpace(_ENDDATE)) { return "{\"error\": -1 ,\"msg\": \"获取数据上传失败:JSON缺少必要参数:" + "SERVERPARTCODE、SHOPCODE、MACHINECODE \",\"rows\":[]}"; } string[] codes = new string[6]; codes[0] = _SERVERPARTCODE; //服务区编码 codes[1] = _SHOPCODE; //门店编码 codes[2] = _SERVERPARTSHOP_ID; //门店内码 codes[3] = _MACHINECODE; //机器编码 codes[4] = _ENDDATE; //收银机本地数据最早时间 codes[5] = _MACADDRESS; //MAC地址 //返回数据上传结果 return Method.UploadMethod.DataUploading(LocalOracle, tableName, jsonString, codes); } catch { } } else { return "{\"error\": -1 ,\"msg\": \"获取数据上传失败:JSON参数解析异常!\",\"rows\":[]}"; } return "{\"error\": -1 ,\"msg\": \"获取数据上传失败:发生异常!\",\"rows\":[]}"; } #endregion #endregion #region 数据下发 #region 方法 -> 数据下发 /// /// 数据下发 /// /// /// /// /// [WebMethod] public string DownloadTableData(string code, string tableName, string jsonString, string orderString = "") { //if (_IsDownload == "0") //{ // return "{\"error\": -1 ,\"msg\": \"下载接口已关闭!\",\"rows\":[]}"; //} //获取本地收银数据库连接 if (LocalOracle == null) { LocalOracle = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); } //获取存储机器授权码的数据库连接 if (AuthOracle == null) { try { AuthOracle = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3], _OracleHelperString.Split(',')[4]); } catch { AuthOracle = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3]); } } //OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], // _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); //OracleHelper _AuthorCode; //try //{ // _AuthorCode = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], // _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3], _OracleHelperString.Split(',')[4]); //} //catch //{ // _AuthorCode = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], // _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3]); //} if (!string.IsNullOrWhiteSpace(jsonString)) { try { JObject _JsonString = JObject.Parse(jsonString); /* 判断jsonString中是否缺失必填项【服务区编码、门店编码、门店内码、收银机号、收银机本地数据最早时间】 * 这些参数是数据上传至哪台机器的判断条件 */ if (_JsonString.Property("SERVERPARTCODE") == null || _JsonString.Property("SERVERPARTSHOP_ID") == null || _JsonString.Property("SHOPCODE") == null || _JsonString.Property("MACHINECODE") == null) { return "{\"error\": -1 ,\"msg\": \"获取数据分发失败:JSON参数解析异常!\",\"rows\":[]}"; } string _SERVERPARTCODE = _JsonString.Property("SERVERPARTCODE").Value.ToString(); //服务区编码 string _SHOPCODE = _JsonString.Property("SHOPCODE").Value.ToString(); //门店编码 string _SERVERPARTSHOP_ID = _JsonString.Property("SERVERPARTSHOP_ID").Value.ToString(); //门店ID string _MACADDRESS = _JsonString.Property("MACADDRESS").Value.ToString(); //Mac地址 string _MACHINECODE = _JsonString.Property("MACHINECODE").Value.ToString(); //收银机编码 //if (_JsonString.Property("PROVINCE_CODE") != null) //{ // _PROVINCE_CODE = _JsonString.Property("PROVINCE_CODE").Value.ToString(); //} //else //{ // try // { // List _ServerpartShopList = new List(); // } // catch { } //} //如果门店ID是空的,则从数据库直接读取对应门店的ID if (string.IsNullOrWhiteSpace(_SERVERPARTSHOP_ID) && !string.IsNullOrWhiteSpace(_SERVERPARTCODE) && !string.IsNullOrWhiteSpace(_SHOPCODE)) { try { //_SERVERPARTSHOP_ID = _OracleHelper.ExcuteSqlGetDataSet( _SERVERPARTSHOP_ID = LocalOracle.ExcuteSqlGetDataSet( string.Format(@"SELECT SERVERPARTSHOP_ID FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE_EX WHERE SERVERPART_CODE = '{0}' AND SHOPCODE = '{1}'", _SERVERPARTCODE, _SHOPCODE)).Tables[0].Rows[0]["SERVERPARTSHOP_ID"].ToString(); } catch { } if (string.IsNullOrWhiteSpace(_SERVERPARTSHOP_ID)) { try { //_SERVERPARTSHOP_ID = _OracleHelper.ExcuteSqlGetDataSet( _SERVERPARTSHOP_ID = LocalOracle.ExcuteSqlGetDataSet( string.Format(@"SELECT SERVERPARTSHOP_ID FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE WHERE SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}'", _SERVERPARTCODE, _SHOPCODE)).Tables[0].Rows[0]["SERVERPARTSHOP_ID"].ToString(); } catch { try { //_SERVERPARTSHOP_ID = _OracleHelper.ExcuteSqlGetDataSet( _SERVERPARTSHOP_ID = LocalOracle.ExcuteSqlGetDataSet( string.Format(@"SELECT SERVERPARTSHOP_ID FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE WHERE SERVERPART_CODE = '{0}' AND SHOPCODE = '{1}'", _SERVERPARTCODE, _SHOPCODE)).Tables[0].Rows[0]["SERVERPARTSHOP_ID"].ToString(); } catch { } } } } string[] codes = null; //如果是机器信息配置表【T_CONFIGURATION】、T_ADVERTISING【广告信息表】,不需要进行MAC地址和授权码信息的认证 if (tableName != "HIGHWAY_EXCHANGE.T_CONFIGURATION" && tableName != "HIGHWAY_EXCHANGE.T_ADVERTISING") { //百色服务区传输判定 if (string.IsNullOrWhiteSpace(_MACADDRESS) || (_SERVERPARTCODE == "451304" && _MACADDRESS.StartsWith("00:E2:69:"))) { return "{\"error\": -1 ,\"msg\": \"获取数据上传失败:设备异常! \",\"rows\":[]}"; } //湖南服务区(服务区编码36开头)、新疆服务区的机器(mac地址不是"68:ED:A4"开头的机器)需要进行机器授权码认证 if (_SERVERPARTCODE.StartsWith("36") || (_SERVERPARTCODE.StartsWith("65") && !_MACADDRESS.StartsWith("68:ED:A4"))) { //codes = OperationDataHelper.IsCorrectCode(_AuthorCode, code); codes = OperationDataHelper.IsCorrectCode(AuthOracle, code); if (codes == null) { return "{\"error\": -1 ,\"msg\": \"授权码错误或已过期\",\"rows\":[]}"; } } //必填项服务区编码、门店内码、门店编码不可为空!!!代码要前置判断,优先判断参数是否为空 if (string.IsNullOrWhiteSpace(_SERVERPARTCODE) || string.IsNullOrWhiteSpace(_SHOPCODE) || string.IsNullOrWhiteSpace(_SERVERPARTSHOP_ID)) { return "{\"error\": -1 ,\"msg\": \"获取数据分发失败:JSON缺少必要参数:" + "SERVERPARTCODE、SERVERPARTSHOP_ID \",\"rows\":[]}"; } else { /* 湖南服务区(服务区编码36开头)、新疆服务区的机器(mac地址不是"68:ED:A4"开头的机器) * 通过授权码获取到的服务区编码codes[0]和MAC地址codes[3] * 与上传的服务区编码【SERVERPARTCODE】、MAC地址【MACADDRESS】进行对比 * 若不一致,则提示机器信息不一致 */ if (_SERVERPARTCODE.StartsWith("36") || (_SERVERPARTCODE.StartsWith("65") && !_MACADDRESS.StartsWith("68:ED:A4"))) { if (codes[0] != _SERVERPARTCODE || codes[3] != _MACADDRESS) { return "{\"error\": -1 ,\"msg\": \"获取数据分发失败:非本设备授权码,禁止操作! \",\"rows\":[]}"; } } } } codes = new string[7]; codes[0] = _SERVERPARTCODE; //服务区编码 codes[1] = _SHOPCODE; //门店编码 codes[2] = _SERVERPARTSHOP_ID; //门店内码 codes[3] = _MACHINECODE; //机器编码 codes[4] = _MACADDRESS; //MAC地址 string _LastTime = ""; //从orderstring中获取数据上次更新的时间 if (!string.IsNullOrWhiteSpace(orderString)) { JObject _OrderString = JObject.Parse(orderString); if (_OrderString.Property("TOTALNUMBER") != null && _OrderString.Property("TOTALNUMBER").Value.ToString() == "true") { //获取下发总数 //return Method.DownloadMethod.TotalCount(_OracleHelper, tableName, jsonString, codes); if (_OrderString.Property("LASTTIME") != null) { _LastTime = _OrderString.Property("LASTTIME").Value.ToString(); } return Method.DownloadMethod.TotalCount(LocalOracle, tableName, jsonString, codes, _LastTime); } else { try { if (_OrderString.Property("PAGE") != null) { //第几页 codes[5] = _OrderString.Property("PAGE").Value.ToString(); if (int.Parse(codes[5]) <= 0) { codes[5] = null; } } } catch { codes[5] = null; } try { if (_OrderString.Property("TABLENAME") != null) { //预下发表名 codes[6] = _OrderString.Property("TABLENAME").Value.ToString(); } } catch { codes[6] = null; } } } //返回下发数据集合(json字符串格式) //return Method.DownloadMethod.DataGeneration(_OracleHelper, tableName, jsonString, codes); return Method.DownloadMethod.DataGeneration(LocalOracle, tableName, jsonString, codes, _LastTime); } catch (Exception ex) { SDK.LogHelper.WriteSendLog("下发数据接口异常:" + ex.Message); } } else { return "{\"error\": -1 ,\"msg\": \"获取数据分发失败:JSON参数解析异常!\",\"rows\":[]}"; } return "{\"error\": -1 ,\"msg\": \"获取数据下发失败:发生异常!\",\"rows\":[]}"; } /// /// 商品去重查询 /// /// 门店ID /// [WebMethod] public string CommodityDeduplication(string serverPartShop_id) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); string _strSelect = string.Format("SELECT COMMODITYEX_ID FROM HIGHWAY_EXCHANGE.T_COMMODITYEX_NEW A " + "WHERE NOT EXISTS(SELECT 1 FROM HIGHWAY_EXCHANGE.T_COMMODITYEX B " + "WHERE A.COMMODITYEX_ID = B.COMMODITYEX_ID) AND A.SERVERPARTSHOP_ID = {0}", serverPartShop_id); try { DataTable _CommodityTable = _OracleHelper.ExcuteSqlGetDataSet(_strSelect).Tables[0]; return JsonHelper.DataTableToJson(_CommodityTable); } catch { DataTable _DataTable = new DataTable(); _DataTable.Columns.Add("COMMODITYEX_ID", typeof(int)); return JsonHelper.DataTableToJson(_DataTable); } } #endregion #endregion #region 查询错误日志信息 [WebMethod] public string getTransferErrorList(string tableName, string jsonString) { try { JObject _JsonString = JObject.Parse(jsonString); if (_JsonString.Property("SERVERPARTCODE") == null || _JsonString.Property("SHOPCODE") == null || _JsonString.Property("MACHINECODE") == null) { return "{\"error\": -1 ,\"msg\": \"获取数据失败:JSON参数解析异常!\",\"rows\":[]}"; } string _SERVERPARTCODE = _JsonString.Property("SERVERPARTCODE").Value.ToString(); //服务区编码 string _SHOPCODE = _JsonString.Property("SHOPCODE").Value.ToString(); //门店编码 string _MACHINECODE = _JsonString.Property("MACHINECODE").Value.ToString(); //收银机编码 if (!string.IsNullOrWhiteSpace(tableName) && !string.IsNullOrWhiteSpace(_SERVERPARTCODE) && !string.IsNullOrWhiteSpace(_SHOPCODE) && !string.IsNullOrWhiteSpace(_MACHINECODE)) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); DataSet _DataSet = _OracleHelper.ExcuteSqlGetDataSet( string.Format(@"SELECT * FROM (SELECT ROWNUM AS rowno, t.* FROM HIGHWAY_EXCHANGE.T_TRANSMISSIONERROR t WHERE SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' AND MACHINECODE = '{2}' AND TABLENAME = '{3}' AND ROWNUM <= 20 ORDER BY OPERATE_DATE DESC) table_alias WHERE table_alias.rowno > 0", _SERVERPARTCODE, _SHOPCODE, _MACHINECODE, tableName)); return JsonHelper.DataSetToJson(_DataSet); } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"获取数据失败:" + ex.ToString() + "\",\"rows\":[]}"; } return "{\"error\": -1 ,\"msg\": \"暂无数据!\",\"rows\":[]}"; } #endregion #region 方法 -> 检查必要参数 /// /// 检查必要参数 /// /// /// /// private string ISCheckData(string jsonString, string[] _RequiredDatas) { if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); if (_JsonArray.Count > _MaxDataQuantity * 100) { return "{\"error\": -1 ,\"msg\": \"添加失败:json数据包不可超过400条数据\",\"rows\":[]}"; } for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if ((_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) || (_Json.Property(_RequiredData.ToUpper()) != null && _Json.Property(_RequiredData.ToUpper()).Value.ToString() == "") || (_Json.Property(_RequiredData.ToLower()) != null && _Json.Property(_RequiredData.ToLower()).Value.ToString() == "")) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[]}"; } } } return null; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[]}"; } } #endregion #region 方法 -> 添加结账数据 /// /// 添加结账数据 /// /// /// [WebMethod] public string AddEndaccountData(string code, string jsonString) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { //必填项 string[] _RequiredDatas = { "ENDACCOUNT_STARTDATE", "ENDACCOUNT_DATE", "TOTALCOUNT", "TOTALSELLAMOUNT", "CASHPAY" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _Data = JsonHelper.JSONStringToList( jsonString, "(ENDACCOUNT_STARTDATE|ENDACCOUNT_DATE)"); if (_Data != null && _Data.Count > 0) { foreach (HIGHWAY.ENDACCOUNT _ENDACCOUNT in _Data) { if (string.IsNullOrEmpty(_ENDACCOUNT.SERVERPARTCODE)) { _ENDACCOUNT.SERVERPARTCODE = codes[0]; } if (string.IsNullOrEmpty(_ENDACCOUNT.SHOPCODE)) { _ENDACCOUNT.SHOPCODE = codes[1]; } OperationDataHelper.InsertTableData(_OracleHelper, _ENDACCOUNT, "HIGHWAY_EXCHANGE.T_ENDACCOUNT", "ENDACCOUNT_ID", "HIGHWAY_EXCHANGE.SEQ_ENDACCOUNT.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 添加单品报表 /// /// 添加COMMODITYSALE表 /// /// /// [WebMethod] public string AddCommoditysaleData(string code, string jsonString) { OracleHelper _OracleHelper = new OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); //WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { //必填项 string[] _RequiredDatas = { "STARTDATE", "ENDDATE", "COMMODITY_CODE", "TOTALCOUNT", "TOTALSELLAMOUNT" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _Data = JsonHelper.JSONStringToList( jsonString, "(STARTDATE|ENDDATE)"); if (_Data != null && _Data.Count > 0) { foreach (HIGHWAY.COMMODITYSALE _COMMODITYSALE in _Data) { if (string.IsNullOrEmpty(_COMMODITYSALE.SERVERPARTCODE)) { _COMMODITYSALE.SERVERPARTCODE = codes[0]; } if (string.IsNullOrEmpty(_COMMODITYSALE.SHOPCODE)) { _COMMODITYSALE.SHOPCODE = codes[1]; } OperationDataHelper.InsertTableData(_OracleHelper, _COMMODITYSALE, "HIGHWAY_EXCHANGE.T_COMMODITYSALE", "COMMODITYSALE_ID", "HIGHWAY_EXCHANGE.SEQ_COMMODITYSALE.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 添加收银员报表 /// /// 添加收银员报表 /// /// /// [WebMethod] public string AddPersonsellData(string code, string jsonString) { OracleHelper _OracleHelper = new OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { //必填项 string[] _RequiredDatas = { "STARTDATE", "ENDDATE", "TOTALCOUNT", "TOTALSELLAMOUNT", "CASHPAY" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _Data = JsonHelper.JSONStringToList( jsonString, "(STARTDATE|ENDDATE)"); if (_Data != null && _Data.Count > 0) { foreach (HIGHWAY.PERSONSELL _PERSONSELL in _Data) { if (string.IsNullOrEmpty(_PERSONSELL.SERVERPARTCODE)) { _PERSONSELL.SERVERPARTCODE = codes[0]; } if (string.IsNullOrEmpty(_PERSONSELL.SHOPCODE)) { _PERSONSELL.SHOPCODE = codes[1]; } OperationDataHelper.InsertTableData(_OracleHelper, _PERSONSELL, "HIGHWAY_EXCHANGE.T_PERSONSELL", "PERSONSELL_ID", "HIGHWAY_EXCHANGE.SEQ_PERSONSELL.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 添加销售流水集合 /// /// 添加销售流水集合 /// /// /// [WebMethod] public string AddTransfer_selldata(string code, string jsonString) { string _UpLoadServerPart = ConfigurationManager.AppSettings["UpLoadServerPart"];//获取需要同步到云平台的服务区流水数据 //获取数据库链接字符串 OracleHelper _OracleHelper = new OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog("添加销售流水集合:" + code); //验证授权码是否合法 string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { #region 必填项验证 //必填项 string[] _RequiredDatas = { "SELLDATA_DATE", "TICKETCODE", "SELLCOUNT", "OFFPRICE", "FACTAMOUNT","TRANSFER_FIRSTDATAS" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion //启动单品云平台上传 if (!string.IsNullOrEmpty(_UpLoadServerPart) && _UpLoadServerPart.Contains(codes[0])) { //是否需要执行销售流水同步接口 if (!string.IsNullOrEmpty(_IsUploadColud) && _IsUploadColud == "1" && !string.IsNullOrEmpty(_ColudUrl)) { Thread _Thread = new Thread(() => UpLoadSaleCloud(code, jsonString)) { IsBackground = true }; _Thread.Start(); } } //解析销售流水json字符串 List _Data = JsonHelper.JSONStringToList(jsonString); if (_Data != null && _Data.Count > 0) { //执行数据插入 foreach (HIGHWAY.TRANSFER_SELLDATA _TRANSFER_SELLDATA in _Data) { _TRANSFER_SELLDATA.SERVERPARTCODE = codes[0]; _TRANSFER_SELLDATA.SHOPCODE = codes[1]; OperationDataHelper.InsertTableData(_OracleHelper, _TRANSFER_SELLDATA, "HIGHWAY_EXCHANGE.T_TRANSFER_SELLDATA", "TRANSFER_ID", "HIGHWAY_EXCHANGE.SEQ_TRANSFER_SELLDATA.NEXTVAL"); } //启动流水拆解 if (!string.IsNullOrEmpty(_IsSaleSplit) && _IsSaleSplit == "1") { Thread _Thread = new Thread(() => SellDataSplit(_Data, codes)) { IsBackground = true }; _Thread.Start(); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { if (!string.IsNullOrEmpty(_IsLog) && _IsLog == "1" && !string.IsNullOrEmpty(_LogUrl)) { Hashtable hashtable = new Hashtable { { "jsonString", "添加失败:JSON参数解析异常!" } }; SoapWSHelper.QuerySoapWebServiceString(_LogUrl, "LogWriteSendLog", hashtable); } return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { //判断是否需要记录错误日志,用于同步销售流水至云平台时,记录出现错误的流水数据,可以进行复查 if (!string.IsNullOrEmpty(_IsLog) && _IsLog == "1" && !string.IsNullOrEmpty(_LogUrl)) { Hashtable hashtable = new Hashtable { { "jsonString", "添加失败:" + ex.ToString() } }; SoapWSHelper.QuerySoapWebServiceString(_LogUrl, "LogWriteSendLog", hashtable); ; } return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 获取指令 [WebMethod] public string GetCommand(string server_code) { try { if (!string.IsNullOrEmpty(server_code)) { OracleHelper _OracleHelper = new OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); string _SqlString = string.Format(@"SELECT * FROM HIGHWAY_EXCHANGE.T_COMMAND WHERE SERVER_CODE = '{0}' AND NVL(COMMAND_STATE,0) = 0 ", server_code); DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(_SqlString).Tables[0]; if (_DataTable != null && _DataTable.Rows.Count > 0) { return "{\"error\": 1 ,\"msg\": \"指令获取成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"暂无指令!\",\"rows\":\"\"}"; } } } catch { } return "{\"error\": -1 ,\"msg\": \"指令获取失败!\",\"rows\":\"\"}"; } #endregion #region 方法 -> 获取服务器密码 /// /// 获取收银机密码 /// /// [WebMethod] public string GetServerInfo(string server_code, string server_name) { try { if (!string.IsNullOrEmpty(server_code) && !string.IsNullOrEmpty(server_name)) { OracleHelper _OracleHelper = new OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); string _SqlString = string.Format(@"SELECT SERVER_USERNAME,SERVER_PASSWORD FROM HIGHWAY_EXCHANGE.T_SERVERBASEINFO WHERE SERVER_CODE = '{0}' AND SERVER_USERNAME = '{1}'", server_code, server_name); DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(_SqlString).Tables[0]; if (_DataTable != null && _DataTable.Rows.Count > 0) { return "{\"error\": 1 ,\"msg\": \"获取成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"暂无数据!\",\"rows\":\"\"}"; } } } catch { } return "{\"error\": -1 ,\"msg\": \"获取失败!\",\"rows\":\"\"}"; } #endregion #region 方法 -> 更新操作命令状态 /// /// 获取收银机密码 /// /// [WebMethod] public string UpdateCommand(string servercode, string comid, string backinfo, string backstate, string backdate) { try { if (!string.IsNullOrEmpty(servercode) && !string.IsNullOrEmpty(comid) && !string.IsNullOrEmpty(backstate) && !string.IsNullOrEmpty(backdate)) { OracleHelper _OracleHelper = new OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); string _SqlString = string.Format(@"UPDATE HIGHWAY_EXCHANGE.T_COMMAND SET FEEDBACK_STATE = {0},FEEDBACK_DATE = {1} {2} WHERE COMMAND_ID = {3} AND SERVER_CODE = '{4}' ", backstate, "TO_DATE('" + backdate + "','YYYY/MM/DD HH24:MI:SS')", string.IsNullOrEmpty(backinfo) ? "" : " AND FEEDBACK_INFO = '" + backinfo + "'", comid, servercode); _OracleHelper.ExcuteSql(_SqlString); return "{\"error\": 1 ,\"msg\": \"更新成功!\",\"rows\":\"\"}"; } } catch { } return "{\"error\": -1 ,\"msg\": \" 更新失败!\",\"rows\":\"\"}"; } #endregion #region 方法 -> 查询数据 /// /// 查询数据 /// /// /// [WebMethod] public string SearchData(string code, string DataType, string MachineCode, string StartDate, string EndDate) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); DataTable _DataTable = new DataTable(); string SqlString = ""; string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { //必填项 if (!string.IsNullOrEmpty(DataType)) { switch (DataType) { case "Endaccount": #region 结账数据 if (!string.IsNullOrEmpty(MachineCode)) { SqlString += " AND MACHINECODE = '" + MachineCode + "'"; } if (!string.IsNullOrEmpty(StartDate)) { SqlString += " AND ENDACCOUNT_DATE >= TO_DATE('" + StartDate + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(EndDate)) { SqlString += " AND ENDACCOUNT_DATE <= TO_DATE('" + EndDate + "','YYYY/MM/DD HH24:MI:SS')"; } _DataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(@"SELECT '{0}' AS code, SERVERPARTCODE,SHOPCODE,MACHINECODE,ENDACCOUNT_STARTDATE,ENDACCOUNT_DATE, ENDPERSONCODE,TICKETCOUNT,TOTALCOUNT,TOTALSELLAMOUNT,TOTALOFFAMOUNT, CASH,CREDITCARD,TICKETBILL,VIPPERSON,COSTBILL,OTHERPAY,CASHPAY FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT_EX WHERE SERVERPARTCODE = '{1}' AND SHOPCODE = '{2}'{3} ORDER BY ENDACCOUNT_DATE,SERVERPARTCODE,SHOPCODE,MACHINECODE", code, codes[0], codes[1], SqlString)).Tables[0]; if (_DataTable.Rows.Count > 0) { return "{\"error\": 1 ,\"msg\": \"查询成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + "}"; } else { return "{\"error\": 0 ,\"msg\": \"查询成功!\",\"rows\":[{}]}"; } #endregion case "Personsell": #region 收银员报表 if (!string.IsNullOrEmpty(MachineCode)) { SqlString += " AND MACHINECODE = '" + MachineCode + "'"; } if (!string.IsNullOrEmpty(StartDate)) { SqlString += " AND ENDDATE >= TO_DATE('" + StartDate + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(EndDate)) { SqlString += " AND ENDDATE <= TO_DATE('" + EndDate + "','YYYY/MM/DD HH24:MI:SS')"; } _DataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(@"SELECT '{0}' AS code, SERVERPARTCODE,SHOPCODE,MACHINECODE,STARTDATE,ENDDATE,CASHWORKER_CODE, TICKETCOUNT,TOTALCOUNT,TOTALSELLAMOUNT,TOTALOFFAMOUNT, CASH,CREDITCARD,TICKETBILL,VIPPERSON,COSTBILL,OTHERPAY,CASHPAY FROM HIGHWAY_EXCHANGE.T_PERSONSELL_EX WHERE SERVERPARTCODE = '{1}' AND SHOPCODE = '{2}'{3} ORDER BY ENDDATE,SERVERPARTCODE,SHOPCODE,MACHINECODE", code, codes[0], codes[1], SqlString)).Tables[0]; if (_DataTable.Rows.Count > 0) { return "{\"error\": 1 ,\"msg\": \"查询成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + "}"; } else { return "{\"error\": 0 ,\"msg\": \"查询成功!\",\"rows\":[{}]}"; } #endregion case "Commoditysale": #region 单品报表 if (!string.IsNullOrEmpty(StartDate)) { SqlString += " AND ENDDATE >= TO_DATE('" + StartDate + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(EndDate)) { SqlString += " AND ENDDATE <= TO_DATE('" + EndDate + "','YYYY/MM/DD HH24:MI:SS')"; } _DataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(@"SELECT '{0}' AS code, SERVERPARTCODE,SHOPCODE,STARTDATE,ENDDATE,COMMODITY_TYPE,COMMODITY_CODE, COMMODITY_NAME,TICKETCOUNT,TOTALCOUNT,TOTALSELLAMOUNT,TOTALOFFAMOUNT FROM HIGHWAY_EXCHANGE.T_COMMODITYSALE_EX WHERE SERVERPARTCODE = '{1}' AND SHOPCODE = '{2}'{3} ORDER BY SERVERPARTCODE,SHOPCODE,ENDDATE", code, codes[0], codes[1], SqlString)).Tables[0]; if (_DataTable.Rows.Count > 0) { return "{\"error\": 1 ,\"msg\": \"查询成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + "}"; } else { return "{\"error\": 0 ,\"msg\": \"查询成功!\",\"rows\":[{}]}"; } #endregion case "Transfer_sell": #region 销售流水 if (!string.IsNullOrEmpty(MachineCode)) { SqlString += " AND MACHINECODE = '" + MachineCode + "'"; } if (!string.IsNullOrEmpty(StartDate)) { SqlString += " AND SELLDATA_DATE >= TO_DATE('" + StartDate + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(EndDate)) { SqlString += " AND SELLDATA_DATE <= TO_DATE('" + EndDate + "','YYYY/MM/DD HH24:MI:SS')"; } _DataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(@"SELECT '{0}' AS code, SERVERPARTCODE,SHOPCODE,MACHINECODE,SELLDATA_DATE,TICKETCODE,WORKERCODE, SELLCOUNT,OFFPRICE,FACTAMOUNT,TRANSFER_FIRSTDATAS,TRANSFER_SECONDDATAS, TRANSFER_THIRDDATAS,TRANSFER_FORTHDATAS,TRANSFER_FIFTHDATAS FROM HIGHWAY_EXCHANGE.T_TRANSFER_SELLDATA WHERE SERVERPARTCODE = '{1}' AND SHOPCODE = '{2}'{3} ORDER BY SERVERPARTCODE,SHOPCODE,MACHINECODE,SELLDATA_DATE", code, codes[0], codes[1], SqlString)).Tables[0]; if (_DataTable.Rows.Count > 0) { return "{\"error\": 1 ,\"msg\": \"查询成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + "}"; } else { return "{\"error\": 0 ,\"msg\": \"查询成功!\",\"rows\":[{}]}"; } #endregion default: return "{\"error\": -1 ,\"msg\": \"查询失败:数据类型解析异常!\",\"rows\":[{}]}"; } } else { return "{\"error\": -1 ,\"msg\": \"查询失败:数据类型解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 查询流水数据 /// /// 查询流水主表数据 /// /// /// [WebMethod] public string getStreamByCode(string serverpartcode, string shopcode, string sellmaster_code) { if (!string.IsNullOrEmpty(serverpartcode) && !string.IsNullOrEmpty(sellmaster_code)) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); DataSet _DataSetSellmaster = _OracleHelper.ExcuteSqlGetDataSet(string.Format( @"SELECT * FROM HIGHWAY_EXCHANGE.T_SELLMASTER WHERE SERVERPARTCODE = '{0}' AND SHOPCODE = '{1}' AND SELLMASTER_CODE = '{2}'", serverpartcode, shopcode, sellmaster_code)); if (_DataSetSellmaster != null && _DataSetSellmaster.Tables.Count > 0) { DataSet _DataSetSelldetails = _OracleHelper.ExcuteSqlGetDataSet(string.Format( @"SELECT * FROM HIGHWAY_EXCHANGE.T_SELLDETAILS WHERE SELLMASTER_CODE = '{0}'", sellmaster_code)); if (_DataSetSelldetails != null && _DataSetSelldetails.Tables.Count > 0) { return "{\"SELLMASTER\":" + JsonHelper.DataSetToJson(_DataSetSellmaster) + ",\"SELLDETAILS\":" + JsonHelper.DataSetToJson(_DataSetSelldetails) + "}"; } } } return ""; } #endregion #region 方法 -> 获取实时流水数据(一小时) /// /// 获取实时流水数据(一小时) /// /// 授权码 /// 查询参数 /// [WebMethod] public string GetSellMasterByCode(string code, string jsonString) { SDK.OracleHelper _OracleHelper = new SDK.OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); return new SDK.SellMasterHelper().GetSellMaster(_OracleHelper, code, jsonString); } #endregion #region 方法 -> 添加商品数据 /// /// 添加商品数据 /// /// /// [WebMethod] public string AddGoodsInfo(string code, string jsonString) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); //WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); WebService.SDK.LogHelper.WriteSendLog("添加商品数据:" + code); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { //WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { //必填项 string[] _RequiredDatas = { "COMMODITY_TYPE", "COMMODITY_CODE", "COMMODITY_NAME", "COMMODITY_BARCODE", "COMMODITY_UNIT", "COMMODITY_RULE", "COMMODITY_RETAILPRICE", "COMMODITY_PURCHASEPRICE", "COMMODITY_MEMBERPRICE", "BUSINESSTYPE" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _Data = JsonHelper.JSONStringToList(jsonString); if (_Data != null && _Data.Count > 0) { foreach (HIGHWAY.COMMODITYEX _COMMODITYEX in _Data) { _COMMODITYEX.SERVERPARTCODE = codes[0]; _COMMODITYEX.SHOPCODE = codes[1]; OperationDataHelper.InsertTableData(_OracleHelper, _COMMODITYEX, "HIGHWAY_STORAGE.T_COMMODITYEX", "COMMODITYEX_ID", "HIGHWAY_STORAGE.SEQ_COMMODITYEX.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.Message.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 实时库存 [WebMethod] public string AddStockInfo(string code, string jsonString) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { //WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { //必填项 string[] _RequiredDatas = { "COMMODITY_CODE", "COMMODITY_NAME", "COMMODITY_BARCODE", "COMMODITY_UNIT", "COMMODITY_RULE", "PURCHASE_TAXPRICE", "PURCHASE_PRICE", "OVERPLUSCOUNT", "SURPLUS_TAXPRICE", "SURPLUS_PRICE", "OPERATE_STATE", "CHECK_INDEX" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _Data = JsonHelper.JSONStringToList(jsonString); if (_Data != null && _Data.Count > 0) { foreach (HIGHWAY.GOODSSTOCKEX _GOODSSTOCKEX in _Data) { _GOODSSTOCKEX.SERVERPARTCODE = codes[0]; _GOODSSTOCKEX.SHOPCODE = codes[1]; OperationDataHelper.InsertTableData(_OracleHelper, _GOODSSTOCKEX, "HIGHWAY_STORAGE.T_GOODSSTOCKEX", "GOODSSTOCKEX_ID", "HIGHWAY_STORAGE.SEQ_GOODSSTOCKEX.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 进销存数据 [WebMethod] public string AddInSaleInfo(string code, string jsonString) { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); //WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); WebService.SDK.LogHelper.WriteSendLog("添加进销存数据:" + code); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { //WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { //必填项 string[] _RequiredDatas = { "COMMODITY_CODE","COMMODITY_NAME","COMMODITY_BARCODE","COMMODITY_UNIT","COMMODITY_RULE", "PURCHASE_COUNT","PURCHASE_TAXAMOUNT","PURCHASE_AMOUNT","SELL_COUNT","SELL_TOTALTAXAMOUNT", "SELL_TOTALAMOUNT","SELL_TAXCOST","SELL_COST","TRANSFER_COUNT","TRANSFER_TAXAMOUNT", "TRANSFER_AMOUNT","RECEIVE_COUNT","RECEIVE_TAXAMOUNT","RECEIVE_AMOUNT","BACK_COUNT", "BACK_TAXAMOUNT","BACK_AMOUNT","LOSSPROFIT_COUNT","LOSSPROFIT_TAXAMOUNT", "LOSSPROFIT_AMOUNT","LOSSPROFIT_CHECKCOUNT","LOSSPROFIT_CHECKTAXAMOUNT"}; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _Data = JsonHelper.JSONStringToList(jsonString); if (_Data != null && _Data.Count > 0) { foreach (HIGHWAY.INSALES_STATISTICEX _GOODSSTOCKEX in _Data) { _GOODSSTOCKEX.SERVERPARTCODE = codes[0]; _GOODSSTOCKEX.SHOPCODE = codes[1]; OperationDataHelper.InsertTableData(_OracleHelper, _GOODSSTOCKEX, "HIGHWAY_STORAGE.T_INSALES_STATISTICEX", "INSALES_STATISTICEX_ID", "HIGHWAY_STORAGE.SEQ_INSALES_STATISTICEX.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 配送单数据 [WebMethod] public string SearchDeliverData(string code, string jsonString)//string StartDate, string EndDate, string ShopCode { //记载传入参数信息 //WebService.SDK.LogHelper.WriteSendLog(code + "," + jsonString); WebService.SDK.LogHelper.WriteSendLog("添加配送单数据:" + code); string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); string _AUTHORIZATION_CODE = ConfigurationManager.AppSettings["AUTHORIZATION_CODE"].ToString(); string SqlString = "", TableName = "SELLER_STORAGE.V_GOODSDELIVER", StartDate = "", EndDate = "", ShopCode = "", SearchType = "", Deliver_Code = "", OtherCondition = ""; DataTable _DataTable = new DataTable(), _DetailDataTable = new DataTable(); OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); //读取参数信息 if (code.Split('|').Length > 1) { jsonString = code.Split('|')[1]; code = code.Split('|')[0]; } if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); #region 解析参数内容 try { code = _Json["code"].ToString(); } catch { } try { StartDate = _Json["StartDate"].ToString(); } catch { } try { EndDate = _Json["EndDate"].ToString(); } catch { } try { ShopCode = _Json["ShopCode"].ToString(); } catch { } try { SearchType = _Json["SearchType"].ToString(); } catch { } try { Deliver_Code = _Json["Deliver_Code"].ToString(); } catch { } #endregion } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null && code != _AUTHORIZATION_CODE) { return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } try { if (_AUTHORIZATION_CODE == code) { TableName = "SELLER_STORAGE.V_GOODSDELIVER_GAS"; if (!string.IsNullOrEmpty(ShopCode)) { SqlString = "SHOPCODE = '" + ShopCode + "'"; OtherCondition = " AND SHOPCODE = '" + ShopCode + "'"; } else { SqlString = "1 = 1"; } } else { SqlString = "SERVERPART_CODE = '" + codes[0] + "' AND SHOPCODE = '" + codes[1] + "'"; OtherCondition = " AND SERVERPART_CODE = '" + codes[0] + "' AND SHOPCODE = '" + codes[1] + "'"; } switch (SearchType) { case "0": if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_GOODSDELIVER WHERE SHOPCODE = '" + ShopCode + "' AND GOODSDELIVER_CODE = '" + Deliver_Code + "'").Tables[0].Rows.Count > 0) { return "{\"error\": 0 ,\"msg\": \"单据已更新!\",\"rows\":[{}]}"; } else { try { SqlString = @"INSERT INTO HIGHWAY_EXCHANGE.T_GOODSDELIVER (GOODSDELIVER_CODE,SHOPCODE) VALUES ('" + Deliver_Code + "','" + ShopCode + "')"; _OracleHelper.ExcuteSql(SqlString); return "{\"error\": 1 ,\"msg\": \"更新成功!\",\"rows\":[{}]}"; } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message + "\r\n" + SqlString); return "{\"error\": -1 ,\"msg\": \"更新失败:" + ex.Message + "\",\"rows\":[{}]}"; } } default: //必填项 if (!string.IsNullOrEmpty(StartDate) || !string.IsNullOrEmpty(EndDate)) { DataTable OtherConditionTable = null; #region 配送单数据 #region 查询条件 if (!string.IsNullOrEmpty(StartDate)) { try { SqlString += " AND DELIVER_DATE >= TO_DATE('" + DateTime.Parse(StartDate).ToString() + "','YYYY/MM/DD HH24:MI:SS')"; OtherCondition += " AND DELIVER_DATE < TO_DATE('" + DateTime.Parse(StartDate).ToString() + "','YYYY/MM/DD HH24:MI:SS')"; } catch { SqlString += " AND DELIVER_DATE >= TO_DATE('" + StartDate.Substring(0, 4) + "/" + StartDate.Substring(4, 2) + "/" + StartDate.Substring(6, 2) + " " + StartDate.Substring(8, 2) + ":" + StartDate.Substring(10, 2) + ":" + StartDate.Substring(12, 2) + "','YYYY/MM/DD HH24:MI:SS')"; OtherCondition += " AND DELIVER_DATE < TO_DATE('" + StartDate.Substring(0, 4) + "/" + StartDate.Substring(4, 2) + "/" + StartDate.Substring(6, 2) + " " + StartDate.Substring(8, 2) + ":" + StartDate.Substring(10, 2) + ":" + StartDate.Substring(12, 2) + "','YYYY/MM/DD HH24:MI:SS')"; } } if (!string.IsNullOrEmpty(EndDate)) { try { SqlString += " AND DELIVER_DATE <= TO_DATE('" + DateTime.Parse(EndDate).ToString() + "','YYYY/MM/DD HH24:MI:SS')"; OtherCondition += " AND DELIVER_DATE < TO_DATE('" + DateTime.Parse(EndDate).ToString() + "','YYYY/MM/DD HH24:MI:SS')"; } catch { SqlString += " AND DELIVER_DATE <= TO_DATE('" + EndDate.Substring(0, 4) + "/" + EndDate.Substring(4, 2) + "/" + EndDate.Substring(6, 2) + " " + EndDate.Substring(8, 2) + ":" + EndDate.Substring(10, 2) + ":" + EndDate.Substring(12, 2) + "','YYYY/MM/DD HH24:MI:SS')"; OtherCondition += " AND DELIVER_DATE < TO_DATE('" + EndDate.Substring(0, 4) + "/" + EndDate.Substring(4, 2) + "/" + EndDate.Substring(6, 2) + " " + EndDate.Substring(8, 2) + ":" + EndDate.Substring(10, 2) + ":" + EndDate.Substring(12, 2) + "','YYYY/MM/DD HH24:MI:SS')"; } } #endregion SqlString = string.Format(@"SELECT '{0}' AS code, SERVERPART_NAME,SERVERPARTSHOP_NAME, TO_CHAR(DELIVER_DATE,'YYYYMMDDHH24MISS') AS DELIVER_DATE,GOODSDELIVER_CODE,GOODSDELIVER_STAFF, GOODSDELIVER_STAFFTEL,ACTUAL_TAXAMOUNT,GOODSDELIVER_DESC,SERVERPARTSHOP_ID FROM {1} WHERE {2}", !string.IsNullOrEmpty(ShopCode) ? ShopCode : code, TableName, SqlString); if (SearchType == "1") { OtherConditionTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT WM_CONCAT(GOODSDELIVER_CODE || SHOPCODE) FROM HIGHWAY_EXCHANGE.T_GOODSDELIVER").Tables[0]; if (OtherConditionTable.Rows.Count > 0 && OtherConditionTable.Rows[0][0].ToString() != "") { SqlString += string.Format(@" UNION ALL SELECT '{0}' AS code, SERVERPART_NAME,SERVERPARTSHOP_NAME, TO_CHAR(DELIVER_DATE,'YYYYMMDDHH24MISS') AS DELIVER_DATE,GOODSDELIVER_CODE,GOODSDELIVER_STAFF, GOODSDELIVER_STAFFTEL,ACTUAL_TAXAMOUNT,GOODSDELIVER_DESC,SERVERPARTSHOP_ID FROM {1} WHERE GOODSDELIVER_CODE || SHOPCODE NOT IN ({2}){3}", !string.IsNullOrEmpty(ShopCode) ? ShopCode : code, TableName, "'" + OtherConditionTable.Rows[0][0].ToString().Replace(",", "','") + "'", OtherCondition); } else { SqlString += string.Format(@" UNION ALL SELECT '{0}' AS code, SERVERPART_NAME,SERVERPARTSHOP_NAME, TO_CHAR(DELIVER_DATE,'YYYYMMDDHH24MISS') AS DELIVER_DATE,GOODSDELIVER_CODE,GOODSDELIVER_STAFF, GOODSDELIVER_STAFFTEL,ACTUAL_TAXAMOUNT,GOODSDELIVER_DESC,SERVERPARTSHOP_ID FROM {1} WHERE 1 = 1{2}", !string.IsNullOrEmpty(ShopCode) ? ShopCode : code, TableName, OtherCondition); } } _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); _DataTable = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (_DataTable.Rows.Count > 0) { object[] GOODSDELIVER_CODE = _DataTable.AsEnumerable().Select(r => r.Field("GOODSDELIVER_CODE")).ToArray(); string _GOODSDELIVER_CODE = "", GOODSDELIVER_CODES = string.Format("'{0}'", string.Join("','", GOODSDELIVER_CODE)); _DetailDataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format( @"SELECT NEWSHOPCODE AS code,GOODSDELIVER_CODE,COMMODITY_NAME,COMMODITY_BARCODE, COMMODITY_RULE,DELIVER_UNIT,UNIT_COUNT,DELIVER_COUNT,DELIVER_TOTALCOUNT, AVERAGE_PRICE,DELIVER_PRICE AS DELIVER_TAXPRICE,GUARANTEE_MONTHS FROM SELLER_STORAGE.V_GOODSDELIVERBILL_GAS WHERE GOODSDELIVER_CODE IN ({1}) AND SERVERPARTSHOP_ID = {2} ORDER BY GOODSDELIVER_CODE,COMMODITY_BARCODE,COMMODITY_NAME,COMMODITY_RULE,DELIVER_UNIT,UNIT_COUNT, DELIVER_COUNT,DELIVER_TOTALCOUNT,AVERAGE_PRICE,DELIVER_TAXPRICE,GUARANTEE_MONTHS", !string.IsNullOrEmpty(ShopCode) ? ShopCode : code, GOODSDELIVER_CODES, _DataTable.Rows[0]["SERVERPARTSHOP_ID"].ToString())).Tables[0]; int RowNum = 1; for (int RowCount = 0; RowCount < _DetailDataTable.Rows.Count; RowCount++) { if (_GOODSDELIVER_CODE != _DetailDataTable.Rows[RowCount]["GOODSDELIVER_CODE"].ToString()) { _GOODSDELIVER_CODE = _DetailDataTable.Rows[RowCount]["GOODSDELIVER_CODE"].ToString(); RowNum = 1; } _DetailDataTable.Rows[RowCount]["GOODSDELIVER_CODE"] = _DetailDataTable.Rows[RowCount]["code"].ToString() + "-" + _GOODSDELIVER_CODE + "-" + RowNum.ToString().PadLeft(3, '0'); RowNum++; } return "{\"error\": 1 ,\"msg\": \"查询成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + ",\"details\":" + JsonHelper.DataTableToJson(_DetailDataTable) + "}"; } else { return "{\"error\": 0 ,\"msg\": \"查询成功!\",\"rows\":[{}]}"; } #endregion } else { return "{\"error\": -1 ,\"msg\": \"查询失败:数据类型解析异常!\",\"rows\":[{}]}"; } } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message + "\r\n" + SqlString); return "{\"error\": -1 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 添加订单数据 /// /// 添加订单数据 /// /// /// [WebMethod] public string AddPurchaseData(string code, string jsonString) { try { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); //WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); WebService.SDK.LogHelper.WriteSendLog("添加订单数据:" + code); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; } //必填项 string[] _RequiredDatas = { "SHOPCODE", "FUUID", "TOTAL_COUNT" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _Data = JsonHelper.JSONStringToList(jsonString, "(PURCHASE_DATE)"); if (_Data != null && _Data.Count > 0) { foreach (HIGHWAY.PURCHASEDETAIL _PURCHASEDETAIL in _Data) { if (string.IsNullOrEmpty(_PURCHASEDETAIL.SERVERPARTCODE)) { _PURCHASEDETAIL.SERVERPARTCODE = codes[0]; } if (string.IsNullOrEmpty(_PURCHASEDETAIL.SHOPCODE)) { _PURCHASEDETAIL.SHOPCODE = codes[1]; } OperationDataHelper.InsertTableData(_OracleHelper, _PURCHASEDETAIL, "HIGHWAY_STORAGE.T_PURCHASEDETAIL", "PURCHASEDETAIL_ID", "HIGHWAY_STORAGE.SEQ_PURCHASEDETAIL.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_Data, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 移动支付交易统计传输接口 /// /// 移动支付交易统计传输接口 /// /// 授权码 /// Json格式数据 /// [WebMethod] public string DailyMobilepay(string code, string jsonString) { try { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteReceiveLog(code + "\r\n" + jsonString); //string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); //if (codes == null) //{ // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; //} WebService.SDK.CommonHelper.MobilePayOperators _MobilePayOperators; try { if (!Enum.TryParse(code.ToDecrypt(), out _MobilePayOperators)) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } } catch { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } string[] _RequiredDatas = { "MERCHANT_CODE", "TICKET_AMOUNT", "DEDUCTION_RATE", "TAXFEE_AMOUNT", "TRADE_DATE" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _MPSEPARATEList = JsonHelper.JSONStringToList(jsonString, "(TRADE_DATE)"); if (_MPSEPARATEList != null && _MPSEPARATEList.Count > 0) { foreach (HIGHWAY.MPSEPARATE _MPSEPARATE in _MPSEPARATEList) { if (string.IsNullOrWhiteSpace(_MPSEPARATE.TRANSACTION_TRENCH)) { _MPSEPARATE.TRANSACTION_TRENCH = ((int)_MobilePayOperators).ToString(); } OperationDataHelper.InsertTableData(_OracleHelper, _MPSEPARATE, "HIGHWAY_EXCHANGE.T_MPSEPARATE", "MPSEPARATE_ID", "HIGHWAY_EXCHANGE.SEQ_MPSEPARATE.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_MPSEPARATEList, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 移动支付交易流水传输接口 /// /// 移动支付交易统计传输接口 /// /// 授权码 /// Json格式数据 /// [WebMethod] public string DailyMobilepayList(string code, string jsonString) { try { string _OracleConnStrPayList = ConfigurationManager.AppSettings["OracleConnStr"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleConnStrPayList.Split(',')[0], _OracleConnStrPayList.Split(',')[1], _OracleConnStrPayList.Split(',')[2], _OracleConnStrPayList.Split(',')[3]); WebService.SDK.LogHelper.WriteReceiveLog(code + "\r\n" + jsonString); //string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); //if (codes == null) //{ // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; //} WebService.SDK.CommonHelper.MobilePayOperators _MobilePayOperators; try { if (!Enum.TryParse(code.ToDecrypt(), out _MobilePayOperators)) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } } catch { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } string[] _RequiredDatas = { "MERCHANT_CODE", "TICKET_AMOUNT", "DEDUCTION_RATE", "TAXFEE_AMOUNT", "TRADE_DATE" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List recordsList = JsonHelper.JSONStringToList(jsonString, "(TRADE_DATE)"); if (recordsList != null && recordsList.Count > 0) { foreach (HIGHWAY.MobilePayment_Records _MobilePayment_Records in recordsList) { if (string.IsNullOrWhiteSpace(_MobilePayment_Records.Transaction_Trench)) { _MobilePayment_Records.Transaction_Trench = ((int)_MobilePayOperators).ToString(); } if (_MobilePayment_Records.Ticket_Code.Contains("-") || _MobilePayment_Records.Ticket_Code.Substring(0, 1) == "B") { _MobilePayment_Records.Ticket_Type = 1; } else { _MobilePayment_Records.Ticket_Type = 0; } try { //拆分服务区、门店、机器编号 string ticketCode = _MobilePayment_Records.Ticket_Code; _MobilePayment_Records.ServerPart_Code = ticketCode.Substring(0, 6); _MobilePayment_Records.ServerPartShop_Code = (ticketCode.Length == 28 ? ticketCode.Substring(6, 4) : ticketCode.Substring(6, 6)); _MobilePayment_Records.MachineCode = (ticketCode.Length == 28 ? ticketCode.Substring(10, 4) : ticketCode.Substring(12, 4)); //拆分下单时间 string dateString = ticketCode.Substring(ticketCode.Length - 14, 8); string hourString = ticketCode.Substring(ticketCode.Length - 6, 6); string dateStr = dateString.Substring(0, 4) + "-" + dateString.Substring(4, 2) + "-" + dateString.Substring(6, 2); string hourStr = hourString.Substring(0, 2) + ":" + hourString.Substring(2, 2) + ":" + hourString.Substring(4, 2); DateTime Order_Date = Convert.ToDateTime(dateStr + " " + hourStr); //string minutes = ticketCode.Substring(ticketCode.Length - 14, 8); _MobilePayment_Records.Order_Date = Order_Date; } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "DailyMobilepayList", "移动支付交易流水传输接口"); } OperationDataHelper.InsertTableData(_OracleHelper, _MobilePayment_Records, "HIGHWAY_SELLDATA.T_MOBILEPAYMENT_RECORDS", "MOBILEPAYMENT_RECORDS_ID", "HIGHWAY_SELLDATA.SEQ_MOBILEPAYMENT_RECORDS.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(recordsList, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 海鼎相关接口 #region 方法 -> 获取企业信息 /// /// 获取企业信息 /// /// /// [WebMethod] public string GetCompanyInfo(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string[] _RequiredDatas = { "sign", "Start_Date", "End_Date", "time_stamp", "Membership_Company" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } _Dictionary.Clear(); _Dictionary.Add("time_stamp", _Json["time_stamp"].ToString()); _Dictionary.Add("Membership_Company", _Json["Membership_Company"].ToString()); _Dictionary.Add("Start_Date", _Json["Start_Date"].ToString()); _Dictionary.Add("End_Date", _Json["End_Date"].ToString()); if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion string SqlString = ""; DataTable _DataTable = new DataTable(); if (!string.IsNullOrEmpty(_Dictionary["Membership_Company"].ToString())) { SqlString += " AND Membership_Company = '" + _Dictionary["Membership_Company"].ToString() + "'"; } if (!string.IsNullOrEmpty(_Dictionary["Start_Date"].ToString())) { SqlString += " AND OPERATE_DATE >= TO_DATE('" + _Dictionary["Start_Date"].ToString() + "','YYYY/MM/DD')"; } if (!string.IsNullOrEmpty(_Dictionary["End_Date"].ToString())) { SqlString += " AND OPERATE_DATE < TO_DATE('" + _Dictionary["End_Date"].ToString() + "','YYYY/MM/DD') + 1"; } _DataTable = _OracleHelper.ExcuteSqlGetDataSet(string.Format(@"SELECT TO_CHAR(COMPANY_ID) AS MEMBERSHIP_COMPANY,COMPANY_NAME,COMPANY_SHORTNAME,OPERATE_DATE FROM MEMBERSHIP_STORAGE.T_COMPANY WHERE 1 = 1{0} ORDER BY OPERATE_DATE,COMPANY_NAME", SqlString)).Tables[0]; if (_DataTable.Rows.Count > 0) { foreach (DataRow _DataRow in _DataTable.Rows) { _DataRow["MEMBERSHIP_COMPANY"] = _DataRow["MEMBERSHIP_COMPANY"].ToEncrypt(); } _DataTable.Columns["MEMBERSHIP_COMPANY"].ColumnName = "Membership_Company"; _DataTable.Columns["COMPANY_NAME"].ColumnName = "Company_Name"; _DataTable.Columns["COMPANY_SHORTNAME"].ColumnName = "Company_Shortname"; _DataTable.Columns["OPERATE_DATE"].ColumnName = "Operate_Date"; return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":" + JsonHelper.DataTableToJson(_DataTable) + "}"; } else { return "{\"error\": 101 ,\"msg\": \"查询成功!\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 获取会员信息 /// /// 获取会员信息 /// /// /// [WebMethod] public string GetMembershipInfo(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string[] _RequiredDatas = { "sign", "time_stamp", "Membership_Card", "Membership_Name", "Membership_Mobilephone" }; //"Membership_Type", "Start_Date", "End_Date", "Membership_ID", "Membership_Company", Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "Membership_Card": case "Membership_Name": case "Membership_Mobilephone": EmptyCount++; if (EmptyCount == 3) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } //_Dictionary.Add("time_stamp", _Json["time_stamp"].ToString()); //_Dictionary.Add("Membership_ID", _Json["Membership_ID"].ToString()); //_Dictionary.Add("Membership_Company", _Json["Membership_Company"].ToString()); //_Dictionary.Add("Membership_Type", _Json["Membership_Type"].ToString()); //_Dictionary.Add("Membership_Name", _Json["Membership_Name"].ToString()); //_Dictionary.Add("Membership_Mobilephone", _Json["Membership_Mobilephone"].ToString()); //_Dictionary.Add("Start_Date", _Json["Start_Date"].ToString()); //_Dictionary.Add("End_Date", _Json["End_Date"].ToString()); if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "MemberQuery"); sb.AppendFormat("&Membership_Card={0}", _Dictionary["Membership_Card"].ToString()); sb.AppendFormat("&Membership_Name={0}", _Dictionary["Membership_Name"].ToString()); sb.AppendFormat("&Membership_Mobilephone={0}", _Dictionary["Membership_Mobilephone"].ToString()); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Company_Name"] = _JObject["Result_Data"]["Company_Name"]; info["Membership_Type"] = _JObject["Result_Data"]["Membership_Type"]; info["Membership_Name"] = _JObject["Result_Data"]["Membership_Name"]; info["Membership_Sex"] = _JObject["Result_Data"]["Membership_Sex"]; info["Membership_Mobilephone"] = _JObject["Result_Data"]["Membership_Mobilephone"]; info["Membership_Card"] = _JObject["Result_Data"]["Membership_Card"]; info["Operate_Date"] = _JObject["Result_Data"]["Operate_Date"]; return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 获取卡户信息 /// /// 获取卡户信息 /// /// /// [WebMethod] public string GetICCardInfo(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string[] _RequiredDatas = { "sign", "time_stamp", "Membership_Name", "Membership_Card" }; //"Membership_ID", "Start_Date", "End_Date", Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "Membership_Card": case "Membership_Name": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } //_Dictionary.Add("time_stamp", _Json["time_stamp"].ToString()); //_Dictionary.Add("Membership_ID", _Json["Membership_ID"].ToString()); //_Dictionary.Add("ICCard_Code", _Json["ICCard_Code"].ToString()); //_Dictionary.Add("Membership_Card", _Json["Membership_Card"].ToString()); //_Dictionary.Add("Start_Date", _Json["Start_Date"].ToString()); //_Dictionary.Add("End_Date", _Json["End_Date"].ToString()); if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "ICCardQuery"); sb.AppendFormat("&Membership_Card={0}", _Dictionary["Membership_Card"].ToString()); sb.AppendFormat("&Membership_Name={0}", _Dictionary["Membership_Name"].ToString()); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Membership_Type"] = _JObject["Result_Data"]["Membership_Type"]; info["Membership_Name"] = _JObject["Result_Data"]["Membership_Name"]; info["ICCard_Statue"] = _JObject["Result_Data"]["ICCard_Statue"]; info["Account_Balance"] = _JObject["Result_Data"]["Account_Balance"]; info["Membership_Point"] = _JObject["Result_Data"]["Membership_Point"]; info["Operate_Date"] = _JObject["Result_Data"]["Operate_Date"]; return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单支付 /// /// 订单支付 /// /// /// [WebMethod] public string OrderPay(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"支付失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"支付失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string[] _RequiredDatas = { "sign", "time_stamp" , "ECode", "Membership_Card", "TicketCode", //"Membership_ID", "MachineCode", "Recode_Type", "Recode_Amount" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "ECode": //会员电子码 case "Membership_Card": //会员实体卡号 EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"支付失败:JSON缺少必要支付参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"支付失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } //实付金额 if (_Json["Fact_Amount"] != null) { _Dictionary.Add("Fact_Amount", _Json["Fact_Amount"].ToString()); } //抵用积分 if (_Json["Consume_Point"] != null) { _Dictionary.Add("Consume_Point", _Json["Consume_Point"].ToString()); } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"支付失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"支付失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _SERVERPART_ID = "NULL", _SERVERPART_NAME = "", _SERVERPARTSHOP_ID = "NULL", _SHOPNAME = "", _PROVINCE_CODE = "", _TicketCode = _Dictionary["TicketCode"].ToString(), _MachineCode = _Dictionary["MachineCode"].ToString(), _ECode = _Dictionary.ContainsKey("ECode") ? _Dictionary["ECode"].ToString() : "", _Membership_Card = _Dictionary.ContainsKey("Membership_Card") ? _Dictionary["Membership_Card"].ToString() : "", _Recode_Type = _Dictionary["Recode_Type"].ToString(), _Recode_Amount = _Dictionary["Recode_Amount"].ToString(), _Recode_Date = DateTime.Now.ToString(), _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); if (!_Dictionary.TryGetValue("Fact_Amount", out string _Fact_Amount)) { _Fact_Amount = _Recode_Amount; } if (!_Dictionary.TryGetValue("Consume_Point", out string _Consume_Point)) { _Consume_Point = "0"; } #endregion //获取服务区门店信息 DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { _PROVINCE_CODE = _SERVERPARTSHOP.Rows[0]["PROVINCE_CODE"].ToString(); _SERVERPART_ID = _SERVERPARTSHOP.Rows[0]["SERVERPART_ID"].ToString(); _SERVERPART_NAME = _SERVERPARTSHOP.Rows[0]["SERVERPART_NAME"].ToString(); _SERVERPARTSHOP_ID = _SERVERPARTSHOP.Rows[0]["SERVERPARTSHOP_ID"].ToString(); _SHOPNAME = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "OrderPay"); sb.AppendFormat("&Membership_ECode={0}", _ECode); sb.AppendFormat("&Membership_Card={0}", _Membership_Card); sb.AppendFormat("&Fact_Amount={0}", _Fact_Amount); sb.AppendFormat("&Consume_Point={0}", _Consume_Point); sb.AppendFormat("&Recode_Amount={0}", _Recode_Amount); sb.AppendFormat("&TicketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&Recode_Type={0}", _Dictionary["Recode_Type"].ToString()); sb.AppendFormat("&Province_Code={0}", _PROVINCE_CODE); sb.AppendFormat("&Serverpart_ID={0}", _SERVERPART_ID); sb.AppendFormat("&Serverpart_Code={0}", _ServerpartCode); sb.AppendFormat("&Serverpart_Name={0}", _SERVERPART_NAME); sb.AppendFormat("&ServerpartShop_ID={0}", _SERVERPARTSHOP_ID); sb.AppendFormat("&ServerpartShop_Code={0}", _ShopCode); sb.AppendFormat("&ServerpartShop_Name={0}", _SHOPNAME); sb.AppendFormat("&MachineCode={0}", _Dictionary["MachineCode"].ToString()); sb.AppendFormat("&Recode_Date={0}", _Recode_Date); sb.AppendFormat("&PlatformCode={0}", _PlatformCode); sb.AppendFormat("&RecordPoint={0}", 0); //海鼎饭卡支付不做积分 string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": HIGHWAY.RECHARGERECORD _RECHARGERECORD = new HIGHWAY.RECHARGERECORD(); _RECHARGERECORD.Serverpart_Name = _SERVERPART_NAME; _RECHARGERECORD.ShopName = _SHOPNAME; _RECHARGERECORD.MachineCode = _Dictionary["MachineCode"].ToString(); _RECHARGERECORD.TicketCode = _Dictionary["TicketCode"].ToString(); _RECHARGERECORD.PlatformCode = _PlatformCode; _RECHARGERECORD.Recode_Type = int.Parse(_JObject["Result_Data"]["Recode_Type"].ToString()); _RECHARGERECORD.Recode_Amount = double.Parse(_Recode_Amount).Round(2); _RECHARGERECORD.Fact_Amount = double.Parse(_Fact_Amount).Round(2); _RECHARGERECORD.Consume_Point = double.Parse(_Consume_Point).Round(2); _RECHARGERECORD.Current_Point = double.Parse(_JObject["Result_Data"]["Current_Point"].ToString()).Round(2); _RECHARGERECORD.Total_Point = double.Parse(_JObject["Result_Data"]["Total_Point"].ToString()).Round(2); //double.Parse(_Consume_Point).Round(2); //_RECHARGERECORD.Account_Balance = decimal.Parse(_ACCOUNT_BALANCE) - decimal.Parse(_Recode_Amount); _RECHARGERECORD.Pay_State = "Success"; _RECHARGERECORD.Recode_Date = DateTime.Parse(_Recode_Date); return "{\"error\": 100 ,\"msg\": \"支付成功!\",\"rows\":[" + JsonHelper.ObjectToJson(_RECHARGERECORD) + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"支付失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单查询 /// /// 订单查询 /// /// /// [WebMethod] public string OrderQuery(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string[] _RequiredDatas = { "sign", "TicketCode", "PlatformCode", "Start_Date", "End_Date", "time_stamp" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0, TimeCount = 0; JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "TicketCode": case "PlatformCode": EmptyCount++; _Dictionary.Add(_RequiredData, ""); break; case "Start_Date": case "End_Date": TimeCount++; _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { switch (_RequiredData) { case "Start_Date": case "End_Date": try { DateTime.ParseExact(_Json[_RequiredData].ToString(), "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture).ToString(); } catch { return "{\"error\": 200 ,\"msg\": \"查询失败:时间格式不正确!\",\"rows\":[{}]}"; } break; } _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (EmptyCount == 2 && TimeCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "OrderQuery"); sb.AppendFormat("&Start_Date={0}", _Dictionary["Start_Date"].ToString()); sb.AppendFormat("&PlatformCode={0}", _Dictionary["PlatformCode"].ToString()); sb.AppendFormat("&TicketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&End_Date={0}", _Dictionary["End_Date"].ToString()); sb.AppendFormat("&Serverpart_Code={0}", codes[0]); sb.AppendFormat("&ShopCode={0}", codes[1]); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + _JObject["Result_Data"] + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单退款 /// /// 获取会员、卡户信息 /// /// /// [WebMethod] public string OrderRefund(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"退款失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"退款失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string[] _RequiredDatas = { "sign", "TicketCode", "PlatformCode", "time_stamp", "Refund_Amount" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"退款失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"退款失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"退款失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "OrderRefund"); sb.AppendFormat("&TicketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&Refund_Amount={0}", _Dictionary["Refund_Amount"].ToString()); sb.AppendFormat("&Ori_PlatformCode={0}", _Dictionary["PlatformCode"].ToString()); sb.AppendFormat("&Serverpart_Code={0}", codes[0]); sb.AppendFormat("&ShopCode={0}", codes[1]); sb.AppendFormat("&PlatformCode={0}", code + DateTime.Now.ToString("yyyyMMddHHmmss")); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"退款成功!\",\"rows\":[" + _JObject["Result_Data"] + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"退款失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 优惠券验证接口 /// /// 会员电子优惠券验证接口 /// /// 授权码 /// /// [WebMethod] public string CouponCheck(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"优惠券校验失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"优惠券校验失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string _UseType = ""; //0:查验优惠券,1:使用优惠券 string[] _RequiredDatas = { "sign", "time_stamp" , "UseType", "ECode", "Membership_Card", "MachineCode", "TicketCode", "CouponCode", "ConsumeAmount" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "Membership_Card": case "ECode": break; case "MachineCode": case "TicketCode": case "ConsumeAmount": if (_UseType == "1") { return "{\"error\": 200 ,\"msg\": \"优惠券校验失败:JSON缺少必要支付参数\",\"rows\":[{}]}"; } break; default: return "{\"error\": 200 ,\"msg\": \"优惠券校验失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); if (_RequiredData.ToLower() == "usetype") { _UseType = _Json[_RequiredData].ToString(); } } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"优惠券校验失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"优惠券校验失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion if (string.IsNullOrEmpty(_Dictionary["CouponCode"].ToString())) { return "{\"error\": 205 ,\"msg\": \"优惠券校验失败:找不到优惠券信息!\",\"rows\":[{}]}"; } DataTable _CONSUMPTIONRECORD = new DataTable(); List SQLStringArray = new List(); string _ServerpartCode = codes[0]; //服务区编码 string _ShopCode = codes[1]; //门店编码 string _SERVERPART_ID = ""; //服务区ID string _SERVERPART_NAME = ""; //服务区名称 string _SERVERPARTSHOP_ID = ""; //门店ID string _SHOPNAME = ""; //门店名称 string _PROVINCE_CODE = ConfigurationManager.AppSettings["PROVINCE_CODE"]; //省份编码 string _MachineCode = _Dictionary["MachineCode"].ToString(); //机器号 string _TicketCode = _Dictionary["TicketCode"].ToString(); //订单号 string _CouponCode = _Dictionary["CouponCode"].ToString(); //优惠券编号 if (_CouponCode.Length < 6) { return "{\"error\": 208 ,\"msg\": \"优惠券核销失败:无效优惠券!\",\"rows\":[{}]}"; } //_CouponCode = _CouponCode.Substring(0, 6); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { _PROVINCE_CODE = _SERVERPARTSHOP.Rows[0]["PROVINCE_CODE"].ToString(); _SERVERPART_ID = _SERVERPARTSHOP.Rows[0]["SERVERPART_ID"].ToString(); _SERVERPART_NAME = _SERVERPARTSHOP.Rows[0]["SERVERPART_NAME"].ToString(); _SERVERPARTSHOP_ID = _SERVERPARTSHOP.Rows[0]["SERVERPARTSHOP_ID"].ToString(); _SHOPNAME = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } if (_UseType == "0") { StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "CheckCoupon"); sb.AppendFormat("&COUPON_CODE={0}", _CouponCode); sb.AppendFormat("&PROVINCE_CODE={0}", _PROVINCE_CODE); sb.AppendFormat("&SERVERPARTSHOP_ID={0}", _SERVERPARTSHOP_ID); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["ResultCode"].ToString()) { case "100": info["Serverpart_Name"] = _SERVERPART_NAME; //优惠券ID info["ShopName"] = _SHOPNAME; //门店名称 info["MachineCode"] = _MachineCode; //机器编码 info["TicketCode"] = _TicketCode; //订单编号(商户系统) info["PlatformCode"] = ""; //优惠券金额 info["CouponName"] = _JObject["CouponName"]; //优惠券名称 info["CouponCode"] = _JObject["CouponCode"]; //优惠券编码 info["CouponType"] = _JObject["CouponType"]; //优惠形式(1000:满减券;2000:折扣券) info["Threshold_Amount"] = _JObject["Threshold_Amount"]; //起付金额 info["CouponAmount"] = _JObject["CouponAmount"]; //优惠券价值(满100减20则为20;8折券则为0.8) info["Coupon_State"] = _JObject["Coupon_State"]; //优惠券状态(0:未使用,1:已使用,2:已失效) return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; case "102": return "{\"error\": 102 ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; case "999": default: return "{\"error\": 999 ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; } } else { string _ConsumeAmount = _Dictionary["ConsumeAmount"].ToString(); //实付金额 string _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); if (string.IsNullOrEmpty(_ConsumeAmount) || decimal.Parse(_ConsumeAmount) < 0) { return "{\"error\": 204 ,\"msg\": \"优惠券核销失败:交易金额错误!\",\"rows\":[{}]}"; } StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "WriteOffCoupon"); //sb.AppendFormat("&CONSUMPTIONRECORD_ID={0}", _CONSUMPTIONRECORD_ID); sb.AppendFormat("&CONSUMPTIONRECORD_TYPE={0}", 5050); sb.AppendFormat("&COUPON_CODE={0}", _CouponCode); sb.AppendFormat("&PROVINCE_CODE={0}", _PROVINCE_CODE); sb.AppendFormat("&SERVERPARTSHOP_ID={0}", _SERVERPARTSHOP_ID); sb.AppendFormat("&MACHINECODE={0}", _MachineCode); sb.AppendFormat("&ORDERAMOUNT={0}", _ConsumeAmount); sb.AppendFormat("&CONSUMEAMOUNT={0}", _ConsumeAmount); sb.AppendFormat("&VIPRATEAMOUNT={0}", 0); sb.AppendFormat("&TICKET_CODE={0}", _TicketCode); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["ResultCode"].ToString()) { case "100": info["Serverpart_Name"] = _SERVERPART_NAME; //优惠券ID info["ShopName"] = _SHOPNAME; //门店名称 info["MachineCode"] = _MachineCode; //机器编码 info["TicketCode"] = _TicketCode; //订单编号(商户系统) info["PlatformCode"] = _PlatformCode; //优惠券金额 info["CouponName"] = _JObject["CouponName"]; //优惠券名称 info["CouponCode"] = _JObject["CouponCode"]; //优惠券编码 info["CouponType"] = _JObject["CouponType"]; //优惠形式(1000:满减券;2000:折扣券) info["CouponAmount"] = _JObject["CouponAmount"]; //优惠券价值(满100减20则为20;8折券则为0.8) info["Coupon_State"] = _JObject["Coupon_State"]; //优惠券状态(0:未使用,1:已使用,2:已失效) return "{\"error\": 100 ,\"msg\": \"核销成功!\",\"rows\":[" + info + "]}"; case "999": return "{\"error\": 999 ,\"msg\": \"核销失败!" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; default: return "{\"error\": 305 ,\"msg\": \"核销失败!" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; } } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"优惠券验证失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 优惠券撤销接口 /// /// 会员电子优惠券验证接口 /// /// 授权码 /// /// [WebMethod] public string CouponRevoke(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"优惠券撤销失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"优惠券撤销失败:授权码错误\",\"rows\":[{}]}"; } #region 必填项验证 string[] _RequiredDatas = { "sign", "time_stamp", "TicketCode", "CouponCode" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"优惠券撤销失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"优惠券撤销失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"优惠券撤销失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion if (string.IsNullOrEmpty(_Dictionary["CouponCode"].ToString())) { return "{\"error\": 205 ,\"msg\": \"优惠券撤销失败:找不到优惠券信息!\",\"rows\":[{}]}"; } DataTable _CONSUMPTIONRECORD = new DataTable(); List SQLStringArray = new List(); string _ServerpartCode = codes[0]; //服务区编码 string _ShopCode = codes[1]; //门店编码 string _SERVERPART_ID = ""; //服务区ID string _SERVERPART_NAME = ""; //服务区名称 string _SERVERPARTSHOP_ID = ""; //门店ID string _SHOPNAME = ""; //门店名称 string _PROVINCE_CODE = ConfigurationManager.AppSettings["PROVINCE_CODE"]; //省份编码 string _TicketCode = _Dictionary["TicketCode"].ToString(); //订单号 string _CouponCode = _Dictionary["CouponCode"].ToString(); //优惠券编号 if (_CouponCode.Length < 6) { return "{\"error\": 208 ,\"msg\": \"优惠券撤销失败:无效优惠券!\",\"rows\":[{}]}"; } //_CouponCode = _CouponCode.Substring(0, 6); //获取服务区、门店基础信息 DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { _PROVINCE_CODE = _SERVERPARTSHOP.Rows[0]["PROVINCE_CODE"].ToString(); _SERVERPART_ID = _SERVERPARTSHOP.Rows[0]["SERVERPART_ID"].ToString(); _SERVERPART_NAME = _SERVERPARTSHOP.Rows[0]["SERVERPART_NAME"].ToString(); _SERVERPARTSHOP_ID = _SERVERPARTSHOP.Rows[0]["SERVERPARTSHOP_ID"].ToString(); _SHOPNAME = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "RevokeCoupon"); sb.AppendFormat("&CouponCode={0}", _CouponCode); sb.AppendFormat("&TicketCode={0}", _TicketCode); sb.AppendFormat("&provinceCode={0}", _PROVINCE_CODE); sb.AppendFormat("&serverpartshopID={0}", _SERVERPARTSHOP_ID); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["ResultCode"].ToString()) { case "100": info["TicketCode"] = _TicketCode; //订单编号(商户系统) info["CouponCode"] = _CouponCode; //优惠券编码 info["CouponName"] = _JObject["CouponName"]; //优惠券名称 return "{\"error\": 100 ,\"msg\": \"撤销成功!\",\"rows\":[" + info + "]}"; case "999": return "{\"error\": 999 ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; default: return "{\"error\": 102 ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"优惠券撤销失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #endregion #region 方法 -> 第三方商城相关 //#region 方法 -> 获取微信会员信息 ///// ///// 获取会员信息 ///// ///// ///// //[WebMethod] //public string GetWeChatMembershipInfo(string code, string jsonString) //{ // try // { // string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); // OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], // _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); // OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], // _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); // WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); // if (string.IsNullOrEmpty(code) || code.Length < 10) // { // return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; // } // string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); // string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); // if (codes == null) // { // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; // } // #region 必填项验证 // string[] _RequiredDatas = { "sign", "WeChatPhone", "WeChatUnionID", "Time_stamp" }; // Dictionary _Dictionary = new Dictionary(); // if (!string.IsNullOrEmpty(jsonString)) // { // int EmptyCount = 0; //非必填项未传参数量 // JObject _Json = JObject.Parse(jsonString); // foreach (string _RequiredData in _RequiredDatas) // { // if (_Json.Property(_RequiredData) == null) // { // switch (_RequiredData) // { // case "WeChatPhone": // case "WeChatUnionID": // EmptyCount++; // if (EmptyCount == 2) // { // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; // } // _Dictionary.Add(_RequiredData, ""); // break; // default: // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + // _RequiredData + "\",\"rows\":[{}]}"; // } // } // else if (_RequiredData.ToLower() != "sign") // { // _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); // } // } // if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) // { // return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; // } // } // else // { // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; // } // #endregion // //查询会员信息 // StringBuilder sb = new StringBuilder(); // sb.AppendFormat("?action_type={0}", "MemberQuery"); // sb.AppendFormat("&Membership_Mobilephone={0}", _Dictionary["WeChatPhone"].ToString()); // string parameters = sb.ToString(); // string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; // string RequestUrl = _BaseUrl + parameters; // string format = "application/json;charset=UTF-8"; // string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); // JObject _JObject = JObject.Parse(reString); // JObject info = new JObject(); // switch (_JObject["Result_Code"].ToString()) // { // case "100": // info["Membership_Type"] = _JObject["Result_Data"]["Membership_Type"]; // info["Membership_Level"] = _JObject["Result_Data"]["Membership_Level"]; // info["Membership_Code"] = _JObject["Result_Data"]["Membership_Card"]; // info["Membership_Name"] = _JObject["Result_Data"]["Membership_Name"]; // info["Membership_Sex"] = _JObject["Result_Data"]["Membership_Sex"]; // info["Membership_Birthday"] = _JObject["Result_Data"]["Membership_Birthday"]; // info["Membership_MobilePhone"] = _JObject["Result_Data"]["Membership_Mobilephone"]; // info["Membership_Address"] = _JObject["Result_Data"]["Membership_Address"]; // info["Membership_Point"] = _JObject["Result_Data"]["Membership_Point"]; // info["Account_Balance"] = _JObject["Result_Data"]["Account_Balance"]; // return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; // default: // return "{\"error\": 101 ,\"msg\": \"查询成功!无会员信息!\",\"rows\":[{}]}"; // } // } // catch (Exception ex) // { // WebService.SDK.LogHelper.WriteSendLog(ex.Message); // return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; // } //} //#endregion //#region 方法 -> 获取会员收货地址 ///// ///// 获取会员收货地址 ///// ///// ///// //[WebMethod] //public string GetReceiveAddress(string code, string jsonString) //{ // try // { // string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); // OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], // _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); // OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], // _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); // WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); // if (string.IsNullOrEmpty(code) || code.Length < 10) // { // return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; // } // string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); // string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); // if (codes == null) // { // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; // } // #region 必填项验证 // string[] _RequiredDatas = { "sign", "WeChatPhone", "WeChatUnionID", "Time_stamp" }; // Dictionary _Dictionary = new Dictionary(); // if (!string.IsNullOrEmpty(jsonString)) // { // int EmptyCount = 0; //非必填项未传参数量 // JObject _Json = JObject.Parse(jsonString); // foreach (string _RequiredData in _RequiredDatas) // { // if (_Json.Property(_RequiredData) == null) // { // switch (_RequiredData) // { // case "WeChatPhone": // case "WeChatUnionID": // EmptyCount++; // if (EmptyCount == 2) // { // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; // } // _Dictionary.Add(_RequiredData, ""); // break; // default: // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + // _RequiredData + "\",\"rows\":[{}]}"; // } // } // else if (_RequiredData.ToLower() != "sign") // { // _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); // } // } // if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) // { // return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; // } // } // else // { // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; // } // #endregion // //查询会员信息 // StringBuilder sb = new StringBuilder(); // sb.AppendFormat("?action_type={0}", "getReceiveAddress"); // sb.AppendFormat("&WeChatPhone={0}", _Dictionary["WeChatPhone"].ToString()); // sb.AppendFormat("&WeChatUnionID={0}", _Dictionary["WeChatUnionID"].ToString()); // string parameters = sb.ToString(); // string _BaseUrl = ConfigurationManager.AppSettings["BaseUrl"]; // string RequestUrl = _BaseUrl + parameters; // string format = "application/json;charset=UTF-8"; // string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); // JObject _JObject = JObject.Parse(reString); // JObject info = new JObject(); // switch (_JObject["ResultCode"].ToString()) // { // case "100": // return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + _JObject["Data"] + "]}"; // default: // return "{\"error\": " + _JObject["ResultCode"].ToString() + " ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; // } // } // catch (Exception ex) // { // WebService.SDK.LogHelper.WriteSendLog(ex.Message); // return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; // } //} //#endregion //#region 方法 -> 同步会员收货地址 ///// ///// 同步会员收货地址 ///// ///// ///// //[WebMethod] //public string UploadReceiveAddress(string code, string jsonString) //{ // try // { // string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); // OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], // _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); // OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], // _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); // WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); // if (string.IsNullOrEmpty(code) || code.Length < 10) // { // return "{\"error\": 201 ,\"msg\": \"同步失败:授权码错误\",\"rows\":[{}]}"; // } // string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); // string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); // if (codes == null) // { // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": 201 ,\"msg\": \"同步失败:授权码错误\",\"rows\":[{}]}"; // } // #region 必填项验证 // string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "WeChatUnionID", "ReceiveAddressID", "ReceiveCity", // "ReceiveAddress", "ReceiveLinker_Name", "ReceiveLinker_Sex", "Linker_MobilePhone", "IsDefault", "TargetType" }; // Dictionary _Dictionary = new Dictionary(); // if (!string.IsNullOrEmpty(jsonString)) // { // int EmptyCount = 0; //非必填项未传参数量 // JObject _Json = JObject.Parse(jsonString); // foreach (string _RequiredData in _RequiredDatas) // { // if (_Json.Property(_RequiredData) == null) // { // switch (_RequiredData) // { // case "ReceiveAddressID": // _Dictionary.Add(_RequiredData, ""); // break; // case "WeChatPhone": // case "WeChatUnionID": // EmptyCount++; // if (EmptyCount == 2) // { // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; // } // _Dictionary.Add(_RequiredData, ""); // break; // default: // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + // _RequiredData + "\",\"rows\":[{}]}"; // } // } // else if (_RequiredData.ToLower() != "sign") // { // _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); // } // } // if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) // { // return "{\"error\": 202 ,\"msg\": \"同步失败:数据签名不通过!\",\"rows\":[{}]}"; // } // } // else // { // return "{\"error\": 200 ,\"msg\": \"同步失败:JSON参数解析异常!\",\"rows\":[{}]}"; // } // #endregion // //记录会员消费信息 // StringBuilder sb = new StringBuilder(); // sb.AppendFormat("?action_type={0}", "uploadReceiveAddress"); // sb.AppendFormat("&WeChatPhone={0}", _Dictionary["WeChatPhone"].ToString()); // sb.AppendFormat("&WeChatUnionID={0}", _Dictionary["WeChatUnionID"].ToString()); // sb.AppendFormat("&ReceiveCity={0}", HttpUtility.UrlEncode(_Dictionary["ReceiveCity"].ToString())); // sb.AppendFormat("&ReceiveAddress={0}", HttpUtility.UrlEncode(_Dictionary["ReceiveAddress"].ToString())); // sb.AppendFormat("&ReceiveLinker_Name={0}", HttpUtility.UrlEncode(_Dictionary["ReceiveLinker_Name"].ToString())); // sb.AppendFormat("&ReceiveLinker_Sex={0}", _Dictionary["ReceiveLinker_Sex"].ToString()); // sb.AppendFormat("&Linker_MobilePhone={0}", _Dictionary["Linker_MobilePhone"].ToString()); // sb.AppendFormat("&IsDefault={0}", _Dictionary["IsDefault"].ToString()); // sb.AppendFormat("&TargetType={0}", _Dictionary["TargetType"].ToString()); // sb.AppendFormat("&ReceiveAddressID={0}", _Dictionary["ReceiveAddressID"].ToString()); // string parameters = sb.ToString(); // string _BaseUrl = ConfigurationManager.AppSettings["BaseUrl"]; // string RequestUrl = _BaseUrl + parameters; // string format = "application/json;charset=UTF-8"; // string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); // JObject _JObject = JObject.Parse(reString); // JObject info = new JObject(); // switch (_JObject["ResultCode"].ToString()) // { // case "100": // info["ReceiveAddressID"] = _Dictionary["ReceiveAddressID"]; //收货地址内码 // info["ReceiveCity"] = _Dictionary["ReceiveCity"]; //收货市区 // info["ReceiveAddress"] = _Dictionary["ReceiveAddress"]; //收货详细地址 // info["ReceiveLinker_Name"] = _Dictionary["ReceiveLinker_Name"]; //收货人 // info["ReceiveLinker_Sex"] = _Dictionary["ReceiveLinker_Sex"]; //收货人性别 // info["Linker_MobilePhone"] = _Dictionary["Linker_MobilePhone"]; //手机号码 // info["IsDefault"] = _Dictionary["IsDefault"]; //是否默认地址 // info["TargetType"] = _Dictionary["TargetType"]; //地址标签 // return "{\"error\": 100 ,\"msg\": \"同步成功!\",\"rows\":[" + info + "]}"; // default: // return "{\"error\": " + _JObject["ResultCode"].ToString() + " ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; // } // } // catch (Exception ex) // { // WebService.SDK.LogHelper.WriteSendLog(ex.Message); // return "{\"error\": 999 ,\"msg\": \"同步失败:" + ex.Message + "\",\"rows\":[{}]}"; // } //} //#endregion //#region 方法 -> 记录消费信息 ///// ///// 记录消费信息 ///// ///// ///// //[WebMethod] //public string RecordConsumption(string code, string jsonString) //{ // try // { // string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); // //内部会员信息数据库链接 // OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], // _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); // //授权码验证数据库链接 // OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], // _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); // WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); // if (string.IsNullOrEmpty(code) || code.Length < 10) // { // return "{\"error\": 201 ,\"msg\": \"记录失败:授权码错误\",\"rows\":[{}]}"; // } // string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); // string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); // if (codes == null) // { // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": 201 ,\"msg\": \"记录失败:授权码错误\",\"rows\":[{}]}"; // } // #region 必填项验证 // string _Recode_Type = "", _Recode_Desc = ""; // string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "WeChatUnionID", "Recode_Type", "Membership_Name", // "TicketCode", "Recode_Amount", "Consume_Point", "Fact_Amount", "Recode_Date", "Recode_Desc", "CommodityInfo"}; // Dictionary _Dictionary = new Dictionary(); // if (!string.IsNullOrEmpty(jsonString)) // { // int EmptyCount = 0; //非必填项未传参数量 // JObject _Json = JObject.Parse(jsonString); // foreach (string _RequiredData in _RequiredDatas) // { // if (_Json.Property(_RequiredData) == null) // { // if (_Recode_Type != "9000" && _RequiredData == "Recode_Desc") // { // continue; // } // else // { // switch (_RequiredData) // { // case "Membership_Name": // case "CommodityInfo": // break; // case "Consume_Point": // //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 // if (code.StartsWith("330005") || code == "888888012002") // { // _Dictionary.Add("Consume_Point", "0"); // } // break; // case "WeChatPhone": // case "WeChatUnionID": // EmptyCount++; // if (EmptyCount == 2) // { // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; // } // //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 // if (code.StartsWith("330005") || code == "888888012002") // { // _Dictionary.Add(_RequiredData, ""); // } // break; // default: // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + // _RequiredData + "\",\"rows\":[{}]}"; // } // } // } // else if (_RequiredData.ToLower() != "sign") // { // if (_RequiredData == "Recode_Type") // { // _Recode_Type = _Json[_RequiredData].ToString(); // } // else if (_RequiredData == "Recode_Desc") // { // _Recode_Desc = _Json[_RequiredData].ToString(); // } // _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); // } // } // string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); // if (_Json["sign"].ToString() != sign) // { // //2020/7/27 朱梓毅增加处理逻辑 // //交易金额、实付金额签名保留两位小数 // _Dictionary.Remove("Fact_Amount"); // _Dictionary.Remove("Recode_Amount"); // _Dictionary.Add("Fact_Amount", ((decimal)_Json["Fact_Amount"]).ToString("F2")); // _Dictionary.Add("Recode_Amount", ((decimal)_Json["Recode_Amount"]).ToString("F2")); // sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); // if (_Json["sign"].ToString() != sign) // { // return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; // } // } // //非必填项 // _Dictionary.Clear(); // foreach (var item in _Json) // { // _Dictionary.Add(item.Key, _Json[item.Key].ToString()); // } // } // else // { // return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; // } // #endregion // #region 参数定义 // string _ServerpartCode = codes[0], _ShopCode = codes[1], // _SERVERPART_ID = "NULL", _SERVERPART_NAME = "", // _SERVERPARTSHOP_ID = "NULL", _SHOPNAME = "", // _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); // //业主单位 // int OwnerUnitId = 13; // try // { // OwnerUnitId = Convert.ToInt32(ConfigurationManager.AppSettings["OwnerUnitId"]); // } // catch { } // //消费类型转译 // switch (_Recode_Type) // { // //余额支付 // case "2000": // _Recode_Type = "3000"; // break; // //积分兑换 // case "3000": // _Recode_Type = "3050"; // break; // //微信支付 // case "4000": // _Recode_Type = "2000"; // break; // } // //获取消费门店信息 // DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( // @"SELECT // A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME // FROM // HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B // WHERE // A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + // _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; // if (_SERVERPARTSHOP.Rows.Count > 0) // { // _SERVERPART_ID = _SERVERPARTSHOP.Rows[0]["SERVERPART_ID"].ToString(); // _SERVERPART_NAME = _SERVERPARTSHOP.Rows[0]["SERVERPART_NAME"].ToString(); // _SERVERPARTSHOP_ID = _SERVERPARTSHOP.Rows[0]["SERVERPARTSHOP_ID"].ToString(); // _SHOPNAME = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); // } // #endregion // #region 记录会员消费信息 // StringBuilder sb = new StringBuilder(); // sb.AppendFormat("?action_type={0}", "OrderPay"); // sb.AppendFormat("&Membership_Mobilephone={0}", _Dictionary["WeChatPhone"].ToString()); // sb.AppendFormat("&Recode_Amount={0}", _Dictionary["Recode_Amount"].ToString()); // sb.AppendFormat("&Fact_Amount={0}", _Dictionary["Fact_Amount"].ToString()); // if (_Dictionary.ContainsKey("Consume_Point")) // { // sb.AppendFormat("&Consume_Point={0}", _Dictionary["Consume_Point"].ToString()); // } // sb.AppendFormat("&TicketCode={0}", _Dictionary["TicketCode"].ToString()); // sb.AppendFormat("&Recode_Type={0}", _Recode_Type); // sb.AppendFormat("&Serverpart_ID={0}", _SERVERPART_ID); // sb.AppendFormat("&Serverpart_Code={0}", _ServerpartCode); // sb.AppendFormat("&Serverpart_Name={0}", _SERVERPART_NAME); // sb.AppendFormat("&ServerpartShop_ID={0}", _SERVERPARTSHOP_ID); // sb.AppendFormat("&ServerpartShop_Code={0}", _ShopCode); // sb.AppendFormat("&ServerpartShop_Name={0}", _SHOPNAME); // sb.AppendFormat("&Recode_Date={0}", _Dictionary["Recode_Date"].ToString()); // sb.AppendFormat("&PlatformCode={0}", _PlatformCode); // sb.AppendFormat("&OwnerUnit_ID={0}", OwnerUnitId); // string parameters = sb.ToString(); // string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; // string RequestUrl = _BaseUrl + parameters; // string format = "application/json;charset=UTF-8"; // string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); // JObject _JObject = JObject.Parse(reString); // JObject info = new JObject(); // switch (_JObject["Result_Code"].ToString()) // { // case "100": // info["TicketCode"] = _Dictionary["TicketCode"].ToString(); // info["PlatformCode"] = _PlatformCode; // info["Recode_Type"] = _Dictionary["Recode_Type"].ToString(); // info["Recode_Amount"] = _Dictionary["Recode_Amount"]; // info["Fact_Amount"] = _Dictionary["Fact_Amount"]; // if (_Dictionary.ContainsKey("Consume_Point")) // { // info["Consume_Point"] = _Dictionary["Consume_Point"]; // } // info["Recode_Date"] = _Dictionary["Recode_Date"]; // info["Pay_State"] = "Success"; // info["Recode_Desc"] = _Recode_Desc; // return "{\"error\": 100 ,\"msg\": \"记录成功!\",\"rows\":[" + info + "]}"; // default: // string _Result_Code = _JObject["Result_Code"].ToString(); // switch (_Result_Code) // { // case "205": // _Result_Code = "203"; // break; // case "301": // _Result_Code = "102"; // break; // } // return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; // } // #endregion // } // catch (Exception ex) // { // WebService.SDK.LogHelper.WriteSendLog(ex.Message); // return "{\"error\": 999 ,\"msg\": \"记录失败:" + ex.Message + "\",\"rows\":[{}]}"; // } //} //#endregion //#region 方法 -> 撤销交易记录 ///// ///// 记录消费信息 ///// ///// ///// //[WebMethod] //public string RevokeConsumption(string code, string jsonString) //{ // try // { // string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); // OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], // _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); // OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], // _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); // WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); // if (string.IsNullOrEmpty(code) || code.Length < 10) // { // return "{\"error\": 201 ,\"msg\": \"撤销失败:授权码错误\",\"rows\":[{}]}"; // } // string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); // string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); // if (codes == null) // { // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": 201 ,\"msg\": \"撤销失败:授权码错误\",\"rows\":[{}]}"; // } // #region 必填项验证 // string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "WeChatUnionID", "TicketCode" }; // Dictionary _Dictionary = new Dictionary(); // if (!string.IsNullOrEmpty(jsonString)) // { // int EmptyCount = 0; //非必填项未传参数量 // JObject _Json = JObject.Parse(jsonString); // foreach (string _RequiredData in _RequiredDatas) // { // if (_Json.Property(_RequiredData) == null) // { // switch (_RequiredData) // { // case "WeChatPhone": // case "WeChatUnionID": // EmptyCount++; // if (EmptyCount == 2) // { // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; // } // //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 // if (code.StartsWith("330005") || code == "888888012002") // { // _Dictionary.Add(_RequiredData, ""); // } // break; // default: // return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + // _RequiredData + "\",\"rows\":[{}]}"; // } // } // else if (_RequiredData.ToLower() != "sign") // { // _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); // } // } // if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) // { // return "{\"error\": 202 ,\"msg\": \"撤销失败:数据签名不通过!\",\"rows\":[{}]}"; // } // } // else // { // return "{\"error\": 200 ,\"msg\": \"撤销失败:JSON参数解析异常!\",\"rows\":[{}]}"; // } // #endregion // //撤销会员消费记录 // StringBuilder sb = new StringBuilder(); // sb.AppendFormat("?action_type={0}", "revokeConsumptionByWeChat"); // sb.AppendFormat("&WeChatPhone={0}", _Dictionary["WeChatPhone"].ToString()); // if (_Dictionary.ContainsKey("WeChatUnionID")) // { // sb.AppendFormat("&WeChatUnionID={0}", _Dictionary["WeChatUnionID"].ToString()); // } // sb.AppendFormat("&TicketCode={0}", _Dictionary["TicketCode"].ToString()); // int OwnerUnitId = 13; // try // { // OwnerUnitId = Convert.ToInt32(ConfigurationManager.AppSettings["OwnerUnitId"]); // } // catch (Exception) // { // } // sb.AppendFormat("&OwnerUnitId={0}", OwnerUnitId); // string parameters = sb.ToString(); // string _BaseUrl = ConfigurationManager.AppSettings["BaseUrl"]; // string RequestUrl = _BaseUrl + parameters; // string format = "application/json;charset=UTF-8"; // string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); // JObject _JObject = JObject.Parse(reString); // JObject info = new JObject(); // switch (_JObject["ResultCode"].ToString()) // { // case "100": // info["TicketCode"] = _Dictionary["TicketCode"].ToString(); // info["PlatformCode"] = _JObject["Data"]["PlatformCode"] == null ? "" : _JObject["Data"]["PlatformCode"].ToString(); // info["Pay_State"] = "Revoke"; // return "{\"error\": 100 ,\"msg\": \"撤销成功!\",\"rows\":[" + info + "]}"; // default: // return "{\"error\": " + _JObject["ResultCode"].ToString() + " ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; // } // } // catch (Exception ex) // { // WebService.SDK.LogHelper.WriteSendLog(ex.Message); // return "{\"error\": 999 ,\"msg\": \"撤销失败:" + ex.Message + "\",\"rows\":[{}]}"; // } //} //#endregion #endregion #region 方法 -> 获取门店移动支付通道配置 /// /// 获取门店移动支付通道配置 /// /// 服务区编码 /// 业态编码 /// [WebMethod] public string MobilePayConfig(string serverPartCode, string businessType) { try { WebService.SDK.OracleHelper _OracleHelper = new WebService.SDK.OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); return WebService.SDK.PayCommon.MobilePayConfig.ShopPaymentConfig(_OracleHelper, serverPartCode, businessType); } catch (Exception ex) { return ex.Message; } } #endregion #region 方法 -> 收银端数据反馈上传 /// /// 收银机反馈通用上报接口 /// /// 上报类型: /// StateFeedback、BaseInfoFeedback /// json数据字符串 /// [WebMethod] public string FeedbackUpload(string feedbackType, string jsonData) { if (string.IsNullOrWhiteSpace(feedbackType)) { return Newtonsoft.Json.JsonConvert.SerializeObject( new WebService.SDK.FeedbackResult() { ResultCode = 305, ResultDesc = "上报类型错误" }); } try { WebService.SDK.OracleHelper _OracleHelper = new WebService.SDK.OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); return Newtonsoft.Json.JsonConvert.SerializeObject( new WebService.SDK.FeedbackHelper().Feedback(_OracleHelper, feedbackType, jsonData)); } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog($"状态反馈异常[{feedbackType}]:{ex.Message}"); return Newtonsoft.Json.JsonConvert.SerializeObject( new WebService.SDK.FeedbackResult() { ResultCode = 999, ResultDesc = $"系统异常:{ex.Message}" }); } } #endregion #region 方法 -> 收银端状态反馈通用下载接口 /// /// 收银机状态反馈通用下载接口 /// /// 下载类型: /// CommodityMachine /// 设备信息Json数据字符串 /// [WebMethod] public string FeedbackDownload(string readType, string jsonData) { if (string.IsNullOrWhiteSpace(readType)) { return Newtonsoft.Json.JsonConvert.SerializeObject( new WebService.SDK.FeedbackResult() { ResultCode = 305, ResultDesc = "下载类型错误" }); } try { WebService.SDK.OracleHelper _OracleHelper = new WebService.SDK.OracleHelper( _OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); return new WebService.SDK.FeedbackHelper().DataRead(_OracleHelper, readType, jsonData); } catch (Exception ex) { return Newtonsoft.Json.JsonConvert.SerializeObject( new WebService.SDK.FeedbackResult() { ResultCode = 999, ResultDesc = $"系统异常:{ex.Message}" }); } } #endregion #region 方法 -> 获取实时交易流水 /// /// 获取实时交易流水 /// /// /// [WebMethod] public string GetSellMasterList(string code, string jsonString) { JObject info = new JObject(); try { if (string.IsNullOrEmpty(_OracleConnStr)) { info["Error"] = "999"; info["Msg"] = "配置错误,请重试!"; return info.ToString(); } OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { info["Error"] = "200"; info["Msg"] = "查询失败:授权码错误!"; return info.ToString(); } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); info["Error"] = "200"; info["Msg"] = "查询失败:授权码错误!"; return info.ToString(); } #region 必填项验证 string[] _RequiredDatas = { "sign", "StartDate", "EndDate", "Time_stamp", "SearchType" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { info["Error"] = "200"; info["Msg"] = "查询失败:JSON缺少必要参数:" + _RequiredData; return info.ToString(); } } _Dictionary.Clear(); _Dictionary.Add("Time_stamp", _Json["Time_stamp"].ToString()); _Dictionary.Add("SearchType", _Json["SearchType"].ToString()); _Dictionary.Add("StartDate", _Json["StartDate"].ToString()); _Dictionary.Add("EndDate", _Json["EndDate"].ToString()); if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { info["Error"] = "200"; info["Msg"] = "查询失败:数据签名不通过!"; return info.ToString(); } if (_Json.Property("SellMasterCode") != null) { _Dictionary.Add("SellMasterCode", _Json["SellMasterCode"].ToString()); } else { _Dictionary.Add("SellMasterCode", ""); } } else { info["Error"] = "200"; info["Msg"] = "查询失败:JSON参数解析异常!"; return info.ToString(); } #endregion string _SERVERPARTCODE = codes[0]; string _SHOPCODE = codes[1]; //生成查询条件 string SqlString = ""; string DetilsSqlString = ""; DataTable _DataTable = new DataTable(); DataTable _DetilsDataTable = new DataTable(); if (!string.IsNullOrEmpty(_Dictionary["SellMasterCode"].ToString())) { SqlString += " AND SELLMASTER_CODE IN ('" + _Dictionary["SellMasterCode"].ToString().Replace(",", "','") + "')"; DetilsSqlString += " AND A.SELLMASTER_CODE IN ('" + _Dictionary["SellMasterCode"].ToString().Replace(",", "','") + "')"; } if (!string.IsNullOrEmpty(_Dictionary["StartDate"].ToString())) { SqlString += " AND SELLMASTER_DATE >= TO_DATE('" + _Dictionary["StartDate"].ToString() + "','YYYY/MM/DD HH24:MI:SS')"; DetilsSqlString += " AND A.SELLMASTER_DATE >= TO_DATE('" + _Dictionary["StartDate"].ToString() + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(_Dictionary["EndDate"].ToString())) { SqlString += " AND SELLMASTER_DATE < TO_DATE('" + _Dictionary["EndDate"].ToString() + "','YYYY/MM/DD HH24:MI:SS')"; DetilsSqlString += " AND A.SELLMASTER_DATE < TO_DATE('" + _Dictionary["EndDate"].ToString() + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(_SERVERPARTCODE) && !string.IsNullOrEmpty(_SHOPCODE)) { SqlString += " AND SERVERPARTCODE = '" + _SERVERPARTCODE + "' AND SHOPCODE = '" + _SHOPCODE + "'"; DetilsSqlString += " AND A.SERVERPARTCODE = '" + _SERVERPARTCODE + "' AND A.SHOPCODE = '" + _SHOPCODE + "'"; } //查询主流水 _DataTable = _OracleHelperEx.ExcuteSqlGetDataSet(string.Format( @"SELECT A.SERVERPARTCODE,A.SERVERPART_NAME AS SERVERPARTNAME,A.SHOPCODE,A.SHOPNAME, A.MACHINECODE,A.SELLWORKER_CODE AS SELLWORKERCODE,A.SELLWORKER_NAME AS SELLWORKERNAME, A.SELLMASTER_CODE AS SELLMASTERCODE,A.SELLMASTER_COUNT AS TOTALCOUNT, A.SELLMASTER_AMOUNT AS TOTALAMOUNT,A.SELLMASTER_OFFPRICE AS TOTALDISCOUNT, A.CASHPAY,A.BANKPAY,CASE A.PAYMENT_TYPE WHEN 'WECHATPAY' THEN A.MOBILEPAY ELSE 0 END AS WECHATPAY, CASE A.PAYMENT_TYPE WHEN 'ALIPAY' THEN A.MOBILEPAY ELSE 0 END AS ALIPAY, (A.OTHERPAY + A.COUPONPAY + A.INTERNALPAY) AS OTHERPAY,A.SELLMASTER_DATE AS SELLMASTERDATE FROM HIGHWAY_EXCHANGE.T_SELLMASTER A WHERE EXISTS (SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDETAILS B WHERE A.SELLMASTER_CODE = B.SELLMASTER_CODE HAVING SUM(B.SELLDETAILS_AMOUNT) = A.SELLMASTER_AMOUNT){0} ORDER BY A.SELLMASTER_DATE,A.SERVERPARTCODE,A.SHOPCODE,A.MACHINECODE", SqlString)).Tables[0]; //查询明细 if (!string.IsNullOrEmpty(_Dictionary["SearchType"].ToString()) && _Dictionary["SearchType"].ToString() == "1") { _DetilsDataTable = _OracleHelperEx.ExcuteSqlGetDataSet(string.Format( @"SELECT B.COMMODITY_BARCODE,B.COMMODITY_NAME,B.SELLDETAILS_COUNT AS SELLCOUNT, B.SELLDETAILS_PRICE AS PRICE,B.SELLDETAILS_OFFPRICE AS DISCOUNT, B.SELLDETAILS_AMOUNT AS SELLAMOUNT,A.SELLMASTER_CODE FROM HIGHWAY_EXCHANGE.T_SELLDETAILS B,HIGHWAY_EXCHANGE.T_SELLMASTER A WHERE A.SELLMASTER_CODE = B.SELLMASTER_CODE{0}", DetilsSqlString)).Tables[0]; } if (_DataTable.Rows.Count > 0 && _DetilsDataTable.Rows.Count <= 0) { //decimal.TryParse(_DataTable.Compute("SUM(TOTALCOUNT)", "").ToString(), out decimal _TotalCount); decimal.TryParse(_DataTable.Compute("SUM(TOTALAMOUNT)", "").ToString(), out decimal _TotalAmount); var SaleDateList = _DataTable.AsEnumerable().Select(p => new { ServerPartCode = p.Field("SERVERPARTCODE"), ServerPartName = p.Field("SERVERPARTNAME"), ShopCode = p.Field("SHOPCODE"), ShopName = p.Field("SHOPNAME"), MachineCode = p.Field("MACHINECODE"), SellWorkerCode = p.Field("SELLWORKERCODE"), SellWorerName = p.Field("SELLWORKERNAME"), SellMasterCode = p.Field("SELLMASTERCODE"), TotalCount = p.Field("TOTALCOUNT"), TotalAmount = p.Field("TOTALAMOUNT"), TotalDiscount = p.Field("TOTALDISCOUNT"), CashPay = p.Field("CASHPAY"), BankPay = p.Field("BANKPAY"), WeChatPay = p.Field("WECHATPAY"), AliPay = p.Field("ALIPAY"), OtherPay = p.Field("OTHERPAY"), SellMasterDate = p.Field("SELLMASTERDATE") }).ToList(); info["Error"] = "100"; info["Msg"] = "查询成功"; info["TotalCount"] = _DataTable.Rows.Count; info["TotalAmount"] = _TotalAmount; info["Data"] = JsonHelper.ListToJObject(SaleDateList)["List"]; } else if (_DataTable.Rows.Count > 0 && _DetilsDataTable.Rows.Count > 0) { //decimal.TryParse(_DataTable.Compute("SUM(TOTALCOUNT)", "").ToString(), out decimal _TotalCount); decimal.TryParse(_DataTable.Compute("SUM(TOTALAMOUNT)", "").ToString(), out decimal _TotalAmount); var SaleDetilsList = _DetilsDataTable.AsEnumerable().Select(p => new { CommodityBarcode = p.Field("COMMODITY_BARCODE"), CommodityName = p.Field("COMMODITY_NAME"), SellCount = p.Field("SELLCOUNT"), Price = p.Field("PRICE"), Discount = p.Field("DISCOUNT"), SellAmount = p.Field("SELLAMOUNT"), SellMasterCode = p.Field("SELLMASTER_CODE") }).ToList(); var SaleDateList = from t in _DataTable.AsEnumerable() group t by new { t1 = t.Field("SERVERPARTCODE"), t2 = t.Field("SERVERPARTNAME"), t3 = t.Field("SHOPCODE"), t4 = t.Field("SHOPNAME"), t5 = t.Field("MACHINECODE"), t6 = t.Field("SELLWORKERCODE"), t7 = t.Field("SELLWORKERNAME"), t8 = t.Field("SELLMASTERCODE"), t9 = t.Field("TOTALCOUNT"), t10 = t.Field("TOTALAMOUNT"), t11 = t.Field("TOTALDISCOUNT"), t12 = t.Field("CASHPAY"), t13 = t.Field("BANKPAY"), t14 = t.Field("WECHATPAY"), t15 = t.Field("ALIPAY"), t16 = t.Field("OTHERPAY"), t17 = t.Field("SELLMASTERDATE") } into p select new { ServerPartCode = p.Key.t1, ServerPartName = p.Key.t2, ShopCode = p.Key.t3, ShopName = p.Key.t4, MachineCode = p.Key.t5, SellWorkerCode = p.Key.t6, SellWorerName = p.Key.t7, SellMasterCode = p.Key.t8, TotalCount = p.Key.t9, TotalAmount = p.Key.t10, TotalDiscount = p.Key.t11, CashPay = p.Key.t12, BankPay = p.Key.t13, WeChatPay = p.Key.t14, AliPay = p.Key.t15, OtherPay = p.Key.t16, SellMasterDate = p.Key.t17, SellDetails = SaleDetilsList.Where(l => l.SellMasterCode == p.Key.t8) }; info["Error"] = "100"; info["Msg"] = "查询成功"; info["TotalCount"] = _DataTable.Rows.Count; info["TotalAmount"] = _TotalAmount; info["Data"] = JsonHelper.ListToJObject(SaleDateList.ToList())["List"]; } else { info["Error"] = "100"; info["Msg"] = "查询成功"; info["TotalCount"] = 0; info["TotalAmount"] = 0; info["Data"] = "[]"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); //return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; info["Error"] = "999"; info["Msg"] = "查询失败:" + ex.Message; } return info.ToString(); } #endregion #region 方法 -> 获取交易流水数据-移动支付对账使用 /// /// /// /// /// /// [WebMethod] public string GetSalesDataList(string Start_Date, string End_Date, string ServerPart_Code, string ServerPartShop_Code) { JObject info = new JObject(); try { if (string.IsNullOrEmpty(_OracleConnStr)) { info["Error"] = "999"; info["Msg"] = "配置错误,请重试!"; return info.ToString(); } OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); //生成查询条件 string SqlString = ""; DataTable _DataTable = new DataTable(); if (!string.IsNullOrEmpty(Start_Date)) { SqlString += " AND SELLMASTER_DATE >= TO_DATE('" + Start_Date + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(End_Date)) { SqlString += " AND SELLMASTER_DATE <= TO_DATE('" + End_Date + "','YYYY/MM/DD HH24:MI:SS')"; } if (!string.IsNullOrEmpty(ServerPart_Code)) { SqlString += " AND SERVERPARTCODE IN ('" + ServerPart_Code.Replace(",", "','") + "')"; } if (!string.IsNullOrEmpty(ServerPartShop_Code)) { SqlString += " AND SHOPCODE IN ('" + ServerPartShop_Code.Replace(",", "','") + "')"; } //查询主流水 _DataTable = _OracleHelperEx.ExcuteSqlGetDataSet(string.Format( @"SELECT A.SERVERPARTCODE,A.SERVERPART_NAME AS SERVERPARTNAME,A.SHOPCODE,A.SHOPNAME, A.MACHINECODE,A.SELLMASTER_DATE AS SELLMASTERDATE,A.SELLMASTER_COUNT AS TOTALCOUNT, A.SELLMASTER_AMOUNT AS TOTALAMOUNT,A.SELLMASTER_OFFPRICE AS TOTALDISCOUNT, CASE A.PAYMENT_TYPE WHEN 'WECHATPAY' THEN A.MOBILEPAY ELSE 0 END AS WECHATPAY, CASE A.PAYMENT_TYPE WHEN 'ALIPAY' THEN A.MOBILEPAY ELSE 0 END AS ALIPAY, MOBILEPAY,MOBILEPAY_CODE,MERCHANT_ORDER,SELLMASTER_DESC,SELLMASTER_STATE FROM HIGHWAY_SELLDATA.T_SELLMASTER A WHERE MOBILEPAY <> 0{0}", SqlString)).Tables[0]; info["Error"] = "100"; info["Msg"] = "查询成功"; info["TotalCount"] = _DataTable.Rows.Count; info["Data"] = QRWL.Common.JsonHelper.DataTableToJObject(_DataTable); } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); info["Error"] = "999"; info["Msg"] = "查询失败:" + ex.Message; } return info.ToString(); } #endregion #region 方法 -> 获取日结营收数据 /// /// 获取日结营收数据 /// /// /// [WebMethod] public string GetEndAccountList(string code, string jsonString) { JObject info = new JObject(); try { string _OracleEndConnStr = ConfigurationManager.AppSettings["OracleEndConnStr"]; if (string.IsNullOrEmpty(_OracleEndConnStr)) { info["Error"] = "999"; info["Msg"] = "配置错误,请重试!"; return info.ToString(); } OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { info["Error"] = "200"; info["Msg"] = "查询失败:授权码错误!"; return info.ToString(); } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); info["Error"] = "200"; info["Msg"] = "查询失败:授权码错误!"; return info.ToString(); } #region 必填项验证 string[] _RequiredDatas = { "sign", "StartDate", "EndDate", "Time_stamp" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { info["Error"] = "200"; info["Msg"] = "查询失败:JSON缺少必要参数:" + _RequiredData; return info.ToString(); } } _Dictionary.Clear(); _Dictionary.Add("Time_stamp", _Json["Time_stamp"].ToString()); _Dictionary.Add("StartDate", _Json["StartDate"].ToString()); _Dictionary.Add("EndDate", _Json["EndDate"].ToString()); if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { info["Error"] = "200"; info["Msg"] = "查询失败:数据签名不通过!"; return info.ToString(); } } else { info["Error"] = "200"; info["Msg"] = "查询失败:JSON参数解析异常!"; return info.ToString(); } #endregion //生成查询条件 string _SERVERPARTCODE = codes[0]; string _SHOPCODE = codes[1]; string SqlString = ""; DataTable _DataTable = new DataTable(); //过滤统计开始日期 if (!string.IsNullOrEmpty(_Dictionary["StartDate"].ToString())) { SqlString += " AND A.ENDACCOUNT_DATE >= TO_DATE('" + _Dictionary["StartDate"].ToString() + "','YYYY/MM/DD HH24:MI:SS')"; } //过滤统计结束日期 if (!string.IsNullOrEmpty(_Dictionary["EndDate"].ToString())) { SqlString += " AND A.ENDACCOUNT_DATE < TO_DATE('" + _Dictionary["EndDate"].ToString() + "','YYYY/MM/DD HH24:MI:SS')"; } //过滤服务区编码 if (!string.IsNullOrEmpty(_SERVERPARTCODE) && !string.IsNullOrEmpty(_SHOPCODE)) { SqlString += " AND A.SERVERPARTCODE = '" + _SERVERPARTCODE + "' AND A.SHOPCODE = '" + _SHOPCODE + "'"; } //查询结账数据 OracleHelper _OracleHelperEnd = new OracleHelper(_OracleEndConnStr.Split(',')[0], _OracleEndConnStr.Split(',')[1], _OracleEndConnStr.Split(',')[2], _OracleEndConnStr.Split(',')[3]); _DataTable = _OracleHelperEnd.ExcuteSqlGetDataSet(string.Format( @"SELECT A.SERVERPARTCODE,A.SERVERPART_NAME,A.SHOPCODE,A.SHOPNAME, A.MACHINECODE,A.ENDACCOUNT_STARTDATE,A.ENDACCOUNT_DATE,A.ENDPERSONCODE, A.WORKER_NAME,A.TICKETCOUNT,A.TOTALCOUNT,A.TOTALSELLAMOUNT,A.TOTALOFFAMOUNT, A.CASH,A.CREDITCARD,A.TICKETBILL AS WECHATPAY,A.OTHERPAY AS ALIPAY, (A.COSTBILL + A.VIPPERSON) AS OTHERPAY,A.CASHPAY,A.DIFFERENT_PRICE FROM HIGHWAY_SELLDATA.T_ENDACCOUNT A WHERE VALID = 1 {0} ORDER BY A.ENDACCOUNT_DATE,A.SERVERPARTCODE,A.SHOPCODE,A.MACHINECODE", SqlString)).Tables[0]; if (_DataTable.Rows.Count > 0) { var EndDateList = _DataTable.AsEnumerable().Select(p => new { ServerPartCode = p.Field("SERVERPARTCODE"), ServerPartName = p.Field("SERVERPART_NAME"), ShopCode = p.Field("SHOPCODE"), ShopName = p.Field("SHOPNAME"), MachineCode = p.Field("MACHINECODE"), SellWorkerCode = p.Field("ENDPERSONCODE"), SellWorerName = p.Field("WORKER_NAME"), TicketCount = p.Field("TICKETCOUNT"), TotalCount = p.Field("TOTALCOUNT"), TotalAmount = p.Field("TOTALSELLAMOUNT"), TotalDiscount = p.Field("TOTALOFFAMOUNT"), CashPay = p.Field("CASH"), BankPay = p.Field("CREDITCARD"), WeChatPay = p.Field("WECHATPAY"), AliPay = p.Field("ALIPAY"), OtherPay = p.Field("OTHERPAY"), CashPayment = p.Field("CASHPAY"), DifferentAmount = p.Field("DIFFERENT_PRICE"), StartDate = p.Field("ENDACCOUNT_STARTDATE"), EndDate = p.Field("ENDACCOUNT_DATE") }).ToList(); info["Error"] = "100"; info["Msg"] = "查询成功"; info["TotalCount"] = _DataTable.Rows.Count; info["Data"] = JsonHelper.ListToJObject(EndDateList)["List"]; } else { info["Error"] = "100"; info["Msg"] = "查询成功"; info["TotalCount"] = 0; info["Data"] = "[]"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); info["Error"] = "999"; info["Msg"] = "查询失败:" + ex.Message; //return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } return info.ToString(); } #endregion #region 方法 -> 上传单品集合到云平台 public void UpLoadSaleCloud(string code, string jsonString) { Hashtable hashtable = new Hashtable { { "code", code }, { "jsonString", jsonString } }; SoapWSHelper.QuerySoapWebServiceString(_ColudUrl, "AddTransfer_selldata", hashtable); } #endregion #region 方法 -> 单品拆解为流水数据 public void SellDataSplit(List _Data, string[] codes) { //单品集合拆解到流水 if (!string.IsNullOrEmpty(_OracleConnStr)) { string _SERVERPARTCODE = codes[0]; string _SHOPCODE = codes[1]; string _SERVERPART_NAME = ""; string _SHOPNAME = ""; OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); List SqlList = new List(); try { //获取服务区名称 DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT SERVERPART_NAME FROM HIGHWAY_EXCHANGE.T_SERVERPART WHERE SERVERPART_CODE = '" + _SERVERPARTCODE + "'").Tables[0]; if (_DataTable.Rows.Count > 0) { _SERVERPART_NAME = _DataTable.Rows[0][0].ToString(); } //获取门店名称 _DataTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT SHOPNAME FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE WHERE SERVERPARTCODE = '" + _SERVERPARTCODE + "' AND SHOPCODE = '" + _SHOPCODE + "'").Tables[0]; if (_DataTable.Rows.Count > 0) { _SHOPNAME = _DataTable.Rows[0][0].ToString(); } //查询收银人员信息 _DataTable = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT SELLWORKERCODE,SELLWORKERNAME FROM HIGHWAY_EXCHANGE.T_SELLWORKER WHERE SERVERPARTCODE = '" + _SERVERPARTCODE + "' AND SHOPCODE = '" + _SHOPCODE + "'").Tables[0]; //开始拆解流水集合数据 foreach (HIGHWAY.TRANSFER_SELLDATA _TRANSFER_SELLDATA in _Data) { //定义销售流水编码(门店唯一单号) string _SellMasterCode = _SERVERPARTCODE + _SHOPCODE + _TRANSFER_SELLDATA.MACHINECODE + _TRANSFER_SELLDATA.WORKERCODE + _TRANSFER_SELLDATA.SELLDATA_DATE.Value.ToString("yyyyMMddHHmmss"); string _SellWorkName = ""; //查询收银人员信息 DataRow[] _DataRow = _DataTable.Select("SELLWORKERCODE = '" + _TRANSFER_SELLDATA.WORKERCODE + "'"); if (_DataRow.Length > 0) { _SellWorkName = _DataRow[0]["SELLWORKERNAME"].ToString(); } //生成插入销售流水主表sql语句 string _InsertSql = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_SELLMASTER ( SELLMASTER_ID,SELLMASTER_CODE,SERVERPARTCODE,SERVERPART_NAME,SHOPCODE,SHOPNAME,MACHINECODE, SELLWORKER_CODE,SELLWORKER_NAME,SELLMASTER_DATE,SELLMASTER_COUNT,SELLMASTER_OFFPRICE, SELLMASTER_AMOUNT,CASHPAY,TRANSFER_STATE) VALUES(1,'{0}','{1}','{2}','{3}','{4}','{5}','{6}', '{7}',TO_DATE('{8}','YYYY/MM/DD HH24:MI:SS'),{9},{10},{11},{11},0)", _SellMasterCode, _SERVERPARTCODE, _SERVERPART_NAME, _SHOPCODE, _SHOPNAME, _TRANSFER_SELLDATA.MACHINECODE, _TRANSFER_SELLDATA.WORKERCODE, _SellWorkName, _TRANSFER_SELLDATA.SELLDATA_DATE, _TRANSFER_SELLDATA.SELLCOUNT, _TRANSFER_SELLDATA.OFFPRICE, _TRANSFER_SELLDATA.FACTAMOUNT); SqlList.Add(_InsertSql); int _LINENUM = 1; //如果第一组流水有数据,则进行拆分。数据格式:商品名^数量^总价格,商品名^数量^总价格 if (!string.IsNullOrEmpty(_TRANSFER_SELLDATA.TRANSFER_FIRSTDATAS)) { //按照,进行拆分数据,拆分出销售数据 string[] _str = _TRANSFER_SELLDATA.TRANSFER_FIRSTDATAS.Split(","); foreach (string _SaleDate in _str) { //按照^进行拆分,拆分出每个商品销售明细 string[] _temp = _SaleDate.Split('^'); if (_temp.Length > 2) { //生成商品明细插入语句 _InsertSql = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDETAILS ( SELLDETAILS_ID,SELLMASTER_CODE,COMMODITY_BARCODE,COMMODITY_NAME,SELLDETAILS_COUNT, SELLDETAILS_PRICE,SELLDETAILS_AMOUNT,LINENUM,CREATE_DATE,TRANSFER_STATE) VALUES(1,'{0}','{1}','{2}',{3},{4},{5},{6},TO_DATE('{7}','YYYY/MM/DD HH24:MI:SS'),0)", _SellMasterCode, _temp[0].Split("_")[0], _temp[0].Split("_")[1], _temp[1], (double.Parse(_temp[2]) / double.Parse(_temp[1])), _temp[2], _LINENUM, _TRANSFER_SELLDATA.SELLDATA_DATE); SqlList.Add(_InsertSql); } } } //如果第二组流水有数据,则进行拆分。数据格式:商品名^数量^总价格,商品名^数量^总价格 if (!string.IsNullOrEmpty(_TRANSFER_SELLDATA.TRANSFER_SECONDDATAS)) { string[] _str = _TRANSFER_SELLDATA.TRANSFER_SECONDDATAS.Split(","); foreach (string _SaleDate in _str) { string[] _temp = _SaleDate.Split('^'); if (_temp.Length > 2) { _InsertSql = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDETAILS ( SELLDETAILS_ID,SELLMASTER_CODE,COMMODITY_BARCODE,COMMODITY_NAME,SELLDETAILS_COUNT, SELLDETAILS_PRICE,SELLDETAILS_AMOUNT,LINENUM,CREATE_DATE,TRANSFER_STATE) VALUES(1,'{0}','{1}','{2}',{3},{4},{5},{6},TO_DATE('{7}','YYYY/MM/DD HH24:MI:SS'),0)", _SellMasterCode, _temp[0].Split("_")[0], _temp[0].Split("_")[1], _temp[1], (double.Parse(_temp[2]) / double.Parse(_temp[1])), _temp[2], _LINENUM, _TRANSFER_SELLDATA.SELLDATA_DATE); SqlList.Add(_InsertSql); } } } //如果第三组流水有数据,则进行拆分。数据格式:商品名^数量^总价格,商品名^数量^总价格 if (!string.IsNullOrEmpty(_TRANSFER_SELLDATA.TRANSFER_THIRDDATAS)) { string[] _str = _TRANSFER_SELLDATA.TRANSFER_THIRDDATAS.Split(","); foreach (string _SaleDate in _str) { string[] _temp = _SaleDate.Split('^'); if (_temp.Length > 2) { _InsertSql = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDETAILS ( SELLDETAILS_ID,SELLMASTER_CODE,COMMODITY_BARCODE,COMMODITY_NAME,SELLDETAILS_COUNT, SELLDETAILS_PRICE,SELLDETAILS_AMOUNT,LINENUM,CREATE_DATE,TRANSFER_STATE) VALUES(1,'{0}','{1}','{2}',{3},{4},{5},{6},TO_DATE('{7}','YYYY/MM/DD HH24:MI:SS'),0)", _SellMasterCode, _temp[0].Split("_")[0], _temp[0].Split("_")[1], _temp[1], (double.Parse(_temp[2]) / double.Parse(_temp[1])), _temp[2], _LINENUM, _TRANSFER_SELLDATA.SELLDATA_DATE); SqlList.Add(_InsertSql); } } } //如果第四组流水有数据,则进行拆分。数据格式:商品名^数量^总价格,商品名^数量^总价格 if (!string.IsNullOrEmpty(_TRANSFER_SELLDATA.TRANSFER_FORTHDATAS)) { string[] _str = _TRANSFER_SELLDATA.TRANSFER_FORTHDATAS.Split(","); foreach (string _SaleDate in _str) { string[] _temp = _SaleDate.Split('^'); if (_temp.Length > 2) { _InsertSql = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDETAILS ( SELLDETAILS_ID,SELLMASTER_CODE,COMMODITY_BARCODE,COMMODITY_NAME,SELLDETAILS_COUNT, SELLDETAILS_PRICE,SELLDETAILS_AMOUNT,LINENUM,CREATE_DATE,TRANSFER_STATE) VALUES(1,'{0}','{1}','{2}',{3},{4},{5},{6},TO_DATE('{7}','YYYY/MM/DD HH24:MI:SS'),0)", _SellMasterCode, _temp[0].Split("_")[0], _temp[0].Split("_")[1], _temp[1], (double.Parse(_temp[2]) / double.Parse(_temp[1])), _temp[2], _LINENUM, _TRANSFER_SELLDATA.SELLDATA_DATE); SqlList.Add(_InsertSql); } } } //如果第五组流水有数据,则进行拆分。数据格式:商品名^数量^总价格,商品名^数量^总价格 if (!string.IsNullOrEmpty(_TRANSFER_SELLDATA.TRANSFER_FIFTHDATAS)) { string[] _str = _TRANSFER_SELLDATA.TRANSFER_FIFTHDATAS.Split(","); foreach (string _SaleDate in _str) { string[] _temp = _SaleDate.Split('^'); if (_temp.Length > 2) { _InsertSql = string.Format(@"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDETAILS ( SELLDETAILS_ID,SELLMASTER_CODE,COMMODITY_BARCODE,COMMODITY_NAME,SELLDETAILS_COUNT, SELLDETAILS_PRICE,SELLDETAILS_AMOUNT,LINENUM,CREATE_DATE,TRANSFER_STATE) VALUES(1,'{0}','{1}','{2}',{3},{4},{5},{6},TO_DATE('{7}','YYYY/MM/DD HH24:MI:SS'),0)", _SellMasterCode, _temp[0].Split("_")[0], _temp[0].Split("_")[1], _temp[1], (double.Parse(_temp[2]) / double.Parse(_temp[1])), _temp[2], _LINENUM, _TRANSFER_SELLDATA.SELLDATA_DATE); SqlList.Add(_InsertSql); } } } } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog("生成流水语句错误:" + ex.ToString()); } try { _OracleHelper.ExecuteSqlTran(SqlList); } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog("执行流水拆解插入错误:" + ex.ToString()); } } } #endregion #region 方法 -> 打印错误日志 /// /// 打印错误日志 /// /// /// [WebMethod] public void LogWriteSendLog(string jsonString) { WebService.SDK.LogHelper.WriteSendLog(jsonString); } #endregion #region 方法 -> 众马商超相关 /// /// 验证必传参数 /// /// /// /// /// /// public string ValidateNecessaryParam(string code, string MD5Key, string jsonString, Dictionary _Dictionary, string[] _RequiredDatas) { //string[] _RequiredDatas = { "sign", "Time_stamp" }; if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "StartDate": case "EndDate": case "Category_Id": break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } //非必填项 _Dictionary.Clear(); foreach (var item in _Json) { _Dictionary.Add(item.Key, _Json[item.Key].ToString()); } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[{}]}"; } #region 方法 -> 获取商品分类 /// /// 获取商品分类 /// /// /// [WebMethod] public string GetCategoryList(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codeArr = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codeArr == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } Dictionary _Dictionary = new Dictionary(); #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "StartDate", "EndDate" }; string reString = ValidateNecessaryParam(code, MD5Key, jsonString, _Dictionary, _RequiredDatas); JObject _JObject = JObject.Parse(reString); if (_JObject["error"].ToString() != "100") { return reString; } #endregion //获取门店信息 string _ServerpartCode = code.Substring(0, 6), _ShopCode = code.Substring(6); //服务区编码、门店编码 //GetShopInfo(_OracleHelper, codeArr, code, ref Province_Code, ref ServerPartShop_Id); //查询商品分类列表 StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "OpenAPIGetCategoryList"); sb.AppendFormat("&ServerpartCode={0}", _ServerpartCode); sb.AppendFormat("&ShopCode={0}", _ShopCode); if (_Dictionary.ContainsKey("StartDate")) { sb.AppendFormat("&StartDate={0}", _Dictionary["StartDate"].ToString()); } if (_Dictionary.ContainsKey("EndDate")) { sb.AppendFormat("&EndDate={0}", _Dictionary["EndDate"].ToString()); } string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["BaseUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); _JObject = JObject.Parse(reString); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":" + _JObject["Result_Data"]["List"] + "}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 获取商品列表 /// /// 获取商品分类 /// /// /// [WebMethod] public string GetCommodityList(string code, string jsonString) { try { string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codeArr = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codeArr == null) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } Dictionary _Dictionary = new Dictionary(); #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "StartDate", "EndDate", "Category_Id" }; string reString = ValidateNecessaryParam(code, MD5Key, jsonString, _Dictionary, _RequiredDatas); JObject _JObject = JObject.Parse(reString); if (_JObject["error"].ToString() != "100") { return reString; } #endregion //获取门店信息 string _ServerpartCode = code.Substring(0, 6), _ShopCode = code.Substring(6); //服务区编码、门店编码 //查询商品分类列表 StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "OpenAPIGetCommodityList"); sb.AppendFormat("&ServerpartCode={0}", _ServerpartCode); sb.AppendFormat("&ShopCode={0}", _ShopCode); if (_Dictionary.ContainsKey("Category_Id")) { sb.AppendFormat("&Category_Id={0}", _Dictionary["Category_Id"].ToString()); } if (_Dictionary.ContainsKey("StartDate")) { sb.AppendFormat("&StartDate={0}", _Dictionary["StartDate"].ToString()); } if (_Dictionary.ContainsKey("EndDate")) { sb.AppendFormat("&EndDate={0}", _Dictionary["EndDate"].ToString()); } string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["BaseUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); _JObject = JObject.Parse(reString); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":" + _JObject["Result_Data"]["List"] + "}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #endregion #region 方法 -> 对外新接口 [海鼎] #region 方法 -> 获取会员信息 /// /// 获取会员信息 /// /// /// [WebMethod] public string GetMembershipInfoEx(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "time_stamp", "Membership_Card", "Membership_Name", "Membership_Mobilephone" }; //"Membership_Type", "Start_Date", "End_Date", "Membership_ID", "Membership_Company", Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "Membership_Card": case "Membership_Name": case "Membership_Mobilephone": EmptyCount++; if (EmptyCount == 3) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/GetMemberInfo"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?Membership_Card={0}", _Dictionary["Membership_Card"].ToString()); sb.AppendFormat("&Membership_Phone={0}", _Dictionary["Membership_Mobilephone"].ToString()); sb.AppendFormat("&staffName={0}", "海鼎通讯接口");//海鼎通讯接口 string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Company_Name"] = _JObject["Result_Data"]["Company_Name"]; info["Membership_Type"] = _JObject["Result_Data"]["Membership_Type"]; info["Membership_Name"] = _JObject["Result_Data"]["Membership_Name"]; info["Membership_Sex"] = _JObject["Result_Data"]["Membership_Sex"]; info["Membership_Mobilephone"] = _JObject["Result_Data"]["Membership_Mobilephone"]; info["Membership_Card"] = _JObject["Result_Data"]["Membership_Card"]; info["Operate_Date"] = _JObject["Result_Data"]["Operate_Date"]; return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 获取卡户信息 /// /// 获取卡户信息 /// /// /// [WebMethod] public string GetICCardInfoEx(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "time_stamp", "Membership_Card" }; //"Membership_ID", "Start_Date", "End_Date", Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "Membership_Card": _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/GetMemberInfo"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "ICCardQuery"); sb.AppendFormat("&Membership_Card={0}", _Dictionary["Membership_Card"].ToString()); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Membership_Type"] = _JObject["Result_Data"]["Membership_Type"]; info["Membership_Name"] = _JObject["Result_Data"]["Membership_Name"]; info["ICCard_Statue"] = _JObject["Result_Data"]["ICCard_Statue"]; info["Account_Balance"] = _JObject["Result_Data"]["Account_Balance"]; info["Membership_Point"] = _JObject["Result_Data"]["Membership_Point"]; info["Operate_Date"] = _JObject["Result_Data"]["Operate_Date"]; return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单支付 /// /// 订单支付 /// /// /// [WebMethod] public string OrderPayEx(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "time_stamp" , "ECode", "Membership_Card", "TicketCode", //"Membership_ID", "MachineCode", "Recode_Type", "Recode_Amount" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "ECode": //会员电子码 case "Membership_Card": //会员实体卡号 EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"支付失败:JSON缺少必要支付参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"支付失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } //实付金额 if (_Json["Fact_Amount"] != null) { _Dictionary.Add("Fact_Amount", _Json["Fact_Amount"].ToString()); } //抵用积分 if (_Json["Consume_Point"] != null) { _Dictionary.Add("Consume_Point", _Json["Consume_Point"].ToString()); } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"支付失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"支付失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _SERVERPART_ID = "NULL", _SERVERPART_NAME = "", _SERVERPARTSHOP_ID = "NULL", _SHOPNAME = "", _PROVINCE_CODE = "", _TicketCode = _Dictionary["TicketCode"].ToString(), _MachineCode = _Dictionary["MachineCode"].ToString(), _ECode = _Dictionary.ContainsKey("ECode") ? _Dictionary["ECode"].ToString() : "", _Membership_Card = _Dictionary.ContainsKey("Membership_Card") ? _Dictionary["Membership_Card"].ToString() : "", _Recode_Type = _Dictionary["Recode_Type"].ToString(), _Recode_Amount = _Dictionary["Recode_Amount"].ToString(), _Recode_Date = DateTime.Now.ToString(), _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); if (!_Dictionary.TryGetValue("Fact_Amount", out string _Fact_Amount)) { _Fact_Amount = _Recode_Amount; } if (!_Dictionary.TryGetValue("Consume_Point", out string _Consume_Point)) { _Consume_Point = "0"; } #endregion string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/MemberECodePay"; string reString = ""; StringBuilder sb = new StringBuilder(); if (_ECode.Length == 23) { //新的电子码支付逻辑:包含余额支付、优惠券使用、积分积累 sb.AppendFormat("?serverPartCode={0}", _ServerpartCode); sb.AppendFormat("&serverPartShopCode={0}", _ShopCode); sb.AppendFormat("&machineCode={0}", _Dictionary["MachineCode"].ToString()); sb.AppendFormat("&consumeAmount={0}", _Recode_Amount); sb.AppendFormat("&ECode={0}", _ECode); sb.AppendFormat("&ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&consumeType={0}", _Recode_Type); sb.AppendFormat("&operaterDesc={0}", "海鼎电子码支付"); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); } else if (!string.IsNullOrEmpty(_Membership_Card)) { //饭卡支付(实体卡消费) _BaseUrl += "/OpenApi/MemberCardPay?"; sb.AppendFormat("card={0}", _Membership_Card); sb.AppendFormat("&serverPartCode={0}", _ServerpartCode); sb.AppendFormat("&serverPartShopCode={0}", _ShopCode); sb.AppendFormat("&machineCode={0}", _Dictionary["MachineCode"].ToString()); sb.AppendFormat("&ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&consumeAmount={0}", _Recode_Amount); sb.AppendFormat("&operaterDesc={0}", "海鼎饭卡支付"); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); } else { #region 原支付逻辑 //获取服务区门店信息 string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); //内部会员信息数据库链接 OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { _PROVINCE_CODE = _SERVERPARTSHOP.Rows[0]["PROVINCE_CODE"].ToString(); _SERVERPART_ID = _SERVERPARTSHOP.Rows[0]["SERVERPART_ID"].ToString(); _SERVERPART_NAME = _SERVERPARTSHOP.Rows[0]["SERVERPART_NAME"].ToString(); _SERVERPARTSHOP_ID = _SERVERPARTSHOP.Rows[0]["SERVERPARTSHOP_ID"].ToString(); _SHOPNAME = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } sb.AppendFormat("?action_type={0}", "OrderPay"); sb.AppendFormat("&Membership_ECode={0}", _ECode); sb.AppendFormat("&Membership_Card={0}", _Membership_Card); sb.AppendFormat("&Fact_Amount={0}", _Fact_Amount); sb.AppendFormat("&Consume_Point={0}", _Consume_Point); sb.AppendFormat("&Recode_Amount={0}", _Recode_Amount); sb.AppendFormat("&TicketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&Recode_Type={0}", _Dictionary["Recode_Type"].ToString()); sb.AppendFormat("&Province_Code={0}", _PROVINCE_CODE); sb.AppendFormat("&Serverpart_ID={0}", _SERVERPART_ID); sb.AppendFormat("&Serverpart_Code={0}", _ServerpartCode); sb.AppendFormat("&Serverpart_Name={0}", _SERVERPART_NAME); sb.AppendFormat("&ServerpartShop_ID={0}", _SERVERPARTSHOP_ID); sb.AppendFormat("&ServerpartShop_Code={0}", _ShopCode); sb.AppendFormat("&ServerpartShop_Name={0}", _SHOPNAME); sb.AppendFormat("&MachineCode={0}", _Dictionary["MachineCode"].ToString()); sb.AppendFormat("&Recode_Date={0}", _Recode_Date); sb.AppendFormat("&PlatformCode={0}", _PlatformCode); sb.AppendFormat("&RecordPoint={0}", 0); //海鼎饭卡支付不做积分 string parameters = sb.ToString(); _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); #endregion } JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": HIGHWAY.RECHARGERECORD _RECHARGERECORD = new HIGHWAY.RECHARGERECORD(); _RECHARGERECORD.Serverpart_Name = _SERVERPART_NAME; _RECHARGERECORD.ShopName = _SHOPNAME; _RECHARGERECORD.MachineCode = _Dictionary["MachineCode"].ToString(); _RECHARGERECORD.TicketCode = _Dictionary["TicketCode"].ToString(); _RECHARGERECORD.PlatformCode = _PlatformCode; _RECHARGERECORD.Recode_Type = int.Parse(_Dictionary["Recode_Type"].ToString()); _RECHARGERECORD.Recode_Amount = double.Parse(_Recode_Amount).Round(2); _RECHARGERECORD.Fact_Amount = double.Parse(_Fact_Amount).Round(2); _RECHARGERECORD.Coupon_Amount = double.Parse(_JObject["Result_Data"]["couponAmount"].ToString()).Round(2); _RECHARGERECORD.Consume_Point = double.Parse(_Consume_Point).Round(2); _RECHARGERECORD.Current_Point = double.Parse(_JObject["Result_Data"]["currentPoint"].ToString()).Round(2); _RECHARGERECORD.Total_Point = double.Parse(_JObject["Result_Data"]["memberPoint"].ToString()).Round(2); //double.Parse(_Consume_Point).Round(2); //_RECHARGERECORD.Account_Balance = decimal.Parse(_ACCOUNT_BALANCE) - decimal.Parse(_Recode_Amount); _RECHARGERECORD.Pay_State = "Success"; _RECHARGERECORD.Recode_Date = DateTime.Parse(_Recode_Date); return "{\"error\": 100 ,\"msg\": \"支付成功!\",\"rows\":[" + JsonHelper.ObjectToJson(_RECHARGERECORD) + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"支付失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单查询 /// /// 订单查询 /// /// /// [WebMethod] public string OrderQueryEx(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "TicketCode", "PlatformCode", "Start_Date", "End_Date", "time_stamp" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0, TimeCount = 0; JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "TicketCode": case "PlatformCode": EmptyCount++; _Dictionary.Add(_RequiredData, ""); break; case "Start_Date": case "End_Date": TimeCount++; _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { switch (_RequiredData) { case "Start_Date": case "End_Date": try { DateTime.ParseExact(_Json[_RequiredData].ToString(), "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture).ToString(); } catch { return "{\"error\": 200 ,\"msg\": \"查询失败:时间格式不正确!\",\"rows\":[{}]}"; } break; } _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (EmptyCount == 2 && TimeCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion string Serverpart_Code = codes[0], ShopCode = codes[1]; string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/ConsumptionList"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?startDate={0}", _Dictionary["Start_Date"].ToString()); sb.AppendFormat("&platformCode={0}", _Dictionary["PlatformCode"].ToString()); sb.AppendFormat("&ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&endDate={0}", _Dictionary["End_Date"].ToString()); sb.AppendFormat("&serverPartCode={0}", Serverpart_Code); sb.AppendFormat("&serverPartShopCode={0}", ShopCode); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + _JObject["Result_Data"] + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单整单撤销 /// /// 获取会员、卡户信息 /// /// /// [WebMethod] public string OrderCancelEx(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "TicketCode", "MachineCode", "time_stamp" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"取消失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"取消失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"取消失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion string Serverpart_Code = codes[0], ShopCode = codes[1]; string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/CancelPay"; //string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&machineCode={0}", _Dictionary["MachineCode"].ToString()); sb.AppendFormat("&serverPartCode={0}", Serverpart_Code); sb.AppendFormat("&serverPartShopCode={0}", ShopCode); sb.AppendFormat("&operateDesc={0}", "海鼎撤销交易"); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"取消成功!\",\"rows\":[" + _JObject["Result_Data"] + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"取消失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单部分退款 /// /// 获取会员、卡户信息 /// /// /// [WebMethod] public string OrderRefundEx(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "TicketCode", "PlatformCode", "time_stamp", "ECode", "Refund_Amount", "MachineCode", "Recode_Type" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"退款失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"退款失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"退款失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _TicketCode = _Dictionary["TicketCode"].ToString(), _MachineCode = _Dictionary["MachineCode"].ToString(), _ECode = _Dictionary.ContainsKey("ECode") ? _Dictionary["ECode"].ToString() : "", _Membership_Card = _Dictionary.ContainsKey("Membership_Card") ? _Dictionary["Membership_Card"].ToString() : "", _Recode_Type = _Dictionary["Recode_Type"].ToString(), _Recode_Amount = _Dictionary["Refund_Amount"].ToString(), _Recode_Date = DateTime.Now.ToString(), _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); if (!_Dictionary.TryGetValue("Fact_Amount", out string _Fact_Amount)) { _Fact_Amount = _Recode_Amount; } if (!_Dictionary.TryGetValue("Consume_Point", out string _Consume_Point)) { _Consume_Point = "0"; } #endregion string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/MemberECodePay"; StringBuilder sb = new StringBuilder(); //部分退款:直接退款接口做负数处理 sb.AppendFormat("?serverPartCode={0}", _ServerpartCode); sb.AppendFormat("&serverPartShopCode={0}", _ShopCode); sb.AppendFormat("&machineCode={0}", _Dictionary["MachineCode"].ToString()); sb.AppendFormat("&consumeAmount={0}", -_Recode_Amount.TryParseToDouble()); sb.AppendFormat("&ECode={0}", _ECode); sb.AppendFormat("&ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&recodeType={0}", "5000"); sb.AppendFormat("&operaterDesc={0}", "海鼎部分退款"); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"退款成功!\",\"rows\":[" + _JObject["Result_Data"] + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"退款失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #endregion #region 方法 -> 对外接口商城相关[那美] #region 方法 -> 获取微信会员信息 /// /// 获取会员信息 /// /// /// [WebMethod] public string GetWeChatMembershipInfo(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "WeChatPhone", "WeChatUnionID", "Time_stamp" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "WeChatPhone": case "WeChatUnionID": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion //查询会员信息 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/GetMemberInfo"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?Membership_Phone={0}", _Dictionary["WeChatPhone"].ToString()); sb.AppendFormat("&staffName={0}", "那美通讯接口");//那美通讯接口 string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Membership_Type"] = _JObject["Result_Data"]["Membership_Type"]; info["Membership_Level"] = _JObject["Result_Data"]["Membership_Level"]; info["Membership_Code"] = _JObject["Result_Data"]["Membership_Card"]; info["Membership_Name"] = _JObject["Result_Data"]["Membership_Name"]; info["Membership_Sex"] = _JObject["Result_Data"]["Membership_Sex"]; info["Membership_Birthday"] = _JObject["Result_Data"]["Membership_Birthday"]; info["Membership_MobilePhone"] = _JObject["Result_Data"]["Membership_Mobilephone"]; info["Membership_Address"] = _JObject["Result_Data"]["Membership_Address"]; info["Membership_Point"] = _JObject["Result_Data"]["Membership_Point"]; info["Account_Balance"] = _JObject["Result_Data"]["Account_Balance"]; return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": 101 ,\"msg\": \"查询成功!无会员信息!\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 获取会员收货地址 /// /// 获取会员收货地址 /// /// /// [WebMethod] public string GetReceiveAddress(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "WeChatPhone", "WeChatUnionID", "Time_stamp" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "WeChatPhone": case "WeChatUnionID": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion //查询会员信息 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/MemberAddressList"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?Membership_Phone={0}", _Dictionary["WeChatPhone"].ToString()); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + _JObject["Result_Data"] + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["ResultDesc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 同步会员收货地址 /// /// 同步会员收货地址 /// /// /// [WebMethod] public string UploadReceiveAddress(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "WeChatUnionID", "ReceiveAddressID","ReceiveProvince", "ReceiveCity","ReceiveCounty", "ReceiveAddress", "ReceiveLinker_Name", "ReceiveLinker_Sex", "Linker_MobilePhone", "IsDefault", "TargetType" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "ReceiveAddressID": _Dictionary.Add(_RequiredData, ""); break; case "WeChatPhone": case "WeChatUnionID": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"同步失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"同步失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion //记录会员地址 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/SaveAddressList"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?Membership_Phone={0}", _Dictionary["WeChatPhone"].ToString()); sb.AppendFormat("&ReceiveProvince={0}", _Dictionary["ReceiveProvince"].ToString()); sb.AppendFormat("&ReceiveCity={0}", _Dictionary["ReceiveCity"].ToString()); sb.AppendFormat("&ReceiveCounty={0}", _Dictionary["ReceiveCounty"].ToString()); sb.AppendFormat("&ReceiveAddress={0}", _Dictionary["ReceiveAddress"].ToString()); sb.AppendFormat("&ReceiveLinker_Name={0}", _Dictionary["ReceiveLinker_Name"].ToString()); sb.AppendFormat("&ReceiveLinker_Sex={0}", _Dictionary["ReceiveLinker_Sex"].ToString()); sb.AppendFormat("&Linker_MobilePhone={0}", _Dictionary["Linker_MobilePhone"].ToString()); sb.AppendFormat("&IsDefault={0}", _Dictionary["IsDefault"].ToString()); sb.AppendFormat("&TargetType={0}", _Dictionary["TargetType"].ToString()); sb.AppendFormat("&ReceiveAddressID={0}", _Dictionary["ReceiveAddressID"].ToString()); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["ReceiveAddressID"] = _JObject["Result_Data"]["ReceiveAddressID"]; //收货地址内码 info["ReceiveProvince"] = _Dictionary["ReceiveProvince"]; //收货市区 info["ReceiveCity"] = _Dictionary["ReceiveCity"]; //收货市区 info["ReceiveCounty"] = _Dictionary["ReceiveCounty"]; //收货市区 info["ReceiveAddress"] = _Dictionary["ReceiveAddress"]; //收货详细地址 info["ReceiveLinker_Name"] = _Dictionary["ReceiveLinker_Name"]; //收货人 info["ReceiveLinker_Sex"] = _Dictionary["ReceiveLinker_Sex"]; //收货人性别 info["Linker_MobilePhone"] = _Dictionary["Linker_MobilePhone"]; //手机号码 info["IsDefault"] = _Dictionary["IsDefault"]; //是否默认地址 info["TargetType"] = _Dictionary["TargetType"]; //地址标签 return "{\"error\": 100 ,\"msg\": \"同步成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": " + _JObject["ResultCode"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"同步失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 记录消费信息 /// /// 记录消费信息 /// /// /// [WebMethod] public string RecordConsumption(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string _Recode_Type = "", _Recode_Desc = ""; string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "WeChatUnionID", "Recode_Type", "Membership_Name", "TicketCode", "Recode_Amount", "Consume_Point", "Fact_Amount", "Recode_Date", "Recode_Desc", "CommodityInfo"}; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { if (_Recode_Type != "9000" && _RequiredData == "Recode_Desc") { continue; } else { switch (_RequiredData) { case "Membership_Name": case "CommodityInfo": break; case "Consume_Point": //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 if (code.StartsWith("330005") || code == "888888012002") { _Dictionary.Add("Consume_Point", "0"); } break; case "WeChatPhone": case "WeChatUnionID": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 if (code.StartsWith("330005") || code == "888888012002") { _Dictionary.Add(_RequiredData, ""); } break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } else if (_RequiredData.ToLower() != "sign") { if (_RequiredData == "Recode_Type") { _Recode_Type = _Json[_RequiredData].ToString(); } else if (_RequiredData == "Recode_Desc") { _Recode_Desc = _Json[_RequiredData].ToString(); } _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { //2020/7/27 朱梓毅增加处理逻辑 //交易金额、实付金额签名保留两位小数 _Dictionary.Remove("Fact_Amount"); _Dictionary.Remove("Recode_Amount"); _Dictionary.Add("Fact_Amount", ((decimal)_Json["Fact_Amount"]).ToString("F2")); _Dictionary.Add("Recode_Amount", ((decimal)_Json["Recode_Amount"]).ToString("F2")); sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } //非必填项 _Dictionary.Clear(); foreach (var item in _Json) { _Dictionary.Add(item.Key, _Json[item.Key].ToString()); } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1]; //业主单位 int OwnerUnitId = 13; try { OwnerUnitId = Convert.ToInt32(ConfigurationManager.AppSettings["OwnerUnitId"]); } catch { } //消费类型转译 switch (_Recode_Type) { //余额支付 case "2000": _Recode_Type = "3000"; break; //积分兑换 case "3000": _Recode_Type = "3050"; break; //微信支付 case "4000": _Recode_Type = "2000"; break; } #endregion #region 记录会员消费信息 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/MemberMobilePay"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?MembershipPhone={0}", _Dictionary["WeChatPhone"].ToString()); sb.AppendFormat("&recodeType={0}", _Recode_Type); sb.AppendFormat("&ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&consumeAmount={0}", _Dictionary["Recode_Amount"].ToString()); if (_Dictionary.ContainsKey("Consume_Point")) { sb.AppendFormat("&consumePoint={0}", _Dictionary["Consume_Point"].ToString()); } sb.AppendFormat("&factAmount={0}", _Dictionary["Fact_Amount"].ToString()); sb.AppendFormat("&consumeDate={0}", _Dictionary["Recode_Date"].ToString()); if (_Dictionary.ContainsKey("Recode_Desc"))//组合支付的备注 { sb.AppendFormat("&Recode_Desc={0}", _Dictionary["Recode_Desc"].ToString()); } sb.AppendFormat("&consumptionDesc={0}", "驿网云仓消费"); sb.AppendFormat("&consumeType={0}", 3000);//商城订单 sb.AppendFormat("&serverPartCode={0}", _ServerpartCode); sb.AppendFormat("&serverPartShopCode={0}", _ShopCode); sb.AppendFormat("&OwnerUnitId={0}", OwnerUnitId); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["TicketCode"] = _Dictionary["TicketCode"].ToString(); info["PlatformCode"] = _JObject["Result_Data"]["platformCode"].ToString(); info["Recode_Type"] = _Dictionary["Recode_Type"].ToString(); info["Recode_Amount"] = _Dictionary["Recode_Amount"]; info["Fact_Amount"] = _Dictionary["Fact_Amount"]; if (_Dictionary.ContainsKey("Consume_Point")) { info["Consume_Point"] = _Dictionary["Consume_Point"]; } info["Recode_Date"] = _Dictionary["Recode_Date"]; info["Pay_State"] = "Success"; info["Recode_Desc"] = _Recode_Desc; return "{\"error\": 100 ,\"msg\": \"记录成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); switch (_Result_Code) { case "205": _Result_Code = "203"; break; case "301": _Result_Code = "102"; break; } return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"记录失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 交易记录查询 /// /// 记录消费信息 /// /// /// [WebMethod] public string SearchConsumptionRecord(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string _Recode_Type = ""; string[] _RequiredDatas = { "sign", "Time_stamp", "TicketCode" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } //非必填项 _Dictionary.Clear(); foreach (var item in _Json) { _Dictionary.Add(item.Key, _Json[item.Key].ToString()); } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 查询会员消费信息 //参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1]; string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"] + "OpenApi/ConsumptionList"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&serverPartCode={0}", _ServerpartCode); sb.AppendFormat("&serverPartShopCode={0}", _ShopCode); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": if (_JObject["Result_Data"]["TotalCount"].TryParseToInt() > 0) { info["TicketCode"] = _Dictionary["TicketCode"].ToString(); info["PlatformCode"] = _JObject["Result_Data"]["List"][0]["PlatformCode"]; //消费类型转译 switch (_JObject["Result_Data"]["List"][0]["Recode_Type"].TryParseToString()) { //余额支付 case "3000": _Recode_Type = "余额支付"; break; //积分兑换 case "3050": _Recode_Type = "积分兑换"; break; //微信支付 case "2000": _Recode_Type = "微信支付"; break; } info["Recode_Type"] = _Recode_Type; info["Recode_Amount"] = _JObject["Result_Data"]["List"][0]["Recode_Amount"]; info["Recode_Date"] = _JObject["Result_Data"]["List"][0]["Recode_Date"].TryParseToString(); info["Pay_State"] = _JObject["Result_Data"]["List"][0]["Pay_State"].TryParseToString(); info["Recode_Desc"] = _JObject["Result_Data"]["List"][0]["Recode_Desc"].TryParseToString(); } else { info["TicketCode"] = _Dictionary["TicketCode"].ToString(); info["PlatformCode"] = ""; info["Recode_Type"] = ""; info["Recode_Amount"] = null; info["Recode_Date"] = ""; info["Pay_State"] = "NotFund"; info["Recode_Desc"] = ""; } return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": " + _JObject["Result_Code"] + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"记录失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 撤销交易记录 /// /// 记录消费信息 /// /// /// [WebMethod] public string RevokeConsumptionEx(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "WeChatUnionID", "TicketCode" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "WeChatPhone": case "WeChatUnionID": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 if (code.StartsWith("330005") || code == "888888012002") { _Dictionary.Add(_RequiredData, ""); } break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"撤销失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"撤销失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion string _ServerpartCode = codes[0], _ShopCode = codes[1]; //撤销会员消费记录 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/CancelPay"; //string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&serverPartCode={0}", _ServerpartCode); sb.AppendFormat("&serverPartShopCode={0}", _ShopCode); sb.AppendFormat("&operateDesc={0}", "那美撤销交易"); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["TicketCode"] = _Dictionary["TicketCode"].ToString(); info["PlatformCode"] = _JObject["Result_Data"]["platformCode"] == null ? "" : _JObject["Result_Data"]["platformCode"].ToString(); info["Pay_State"] = "Revoke"; return "{\"error\": 100 ,\"msg\": \"撤销成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": " + _JObject["Result_Code"].ToString() + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"撤销失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 订单部分退款 /// /// 订单部分退款 /// /// /// [WebMethod] public string RevokePartConsumption(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string _Recode_Type = "", _Recode_Desc = ""; string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "TicketCode", "Recode_Amount", "Consume_Point", "Refund_Amount", "Recode_Date", "Recode_Desc"}; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "Consume_Point": //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 if (code.StartsWith("330005") || code == "888888012002") { _Dictionary.Add("Consume_Point", "0"); } break; case "WeChatPhone": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } //提供给娜美的接口,空值也参与签名,但正常情况下不参与签名 if (code.StartsWith("330005") || code == "888888012002") { _Dictionary.Add(_RequiredData, ""); } break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { if (_RequiredData == "Recode_Type") { _Recode_Type = _Json[_RequiredData].ToString(); } else if (_RequiredData == "Recode_Desc") { _Recode_Desc = _Json[_RequiredData].ToString(); } _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { //2020/7/27 朱梓毅增加处理逻辑 //交易金额、实付金额签名保留两位小数 _Dictionary.Remove("Refund_Amount"); _Dictionary.Remove("Recode_Amount"); _Dictionary.Add("Refund_Amount", ((decimal)_Json["Fact_Amount"]).ToString("F2")); _Dictionary.Add("Recode_Amount", ((decimal)_Json["Recode_Amount"]).ToString("F2")); sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } //非必填项 _Dictionary.Clear(); foreach (var item in _Json) { _Dictionary.Add(item.Key, _Json[item.Key].ToString()); } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); //业主单位 int OwnerUnitId = 13; try { OwnerUnitId = Convert.ToInt32(ConfigurationManager.AppSettings["OwnerUnitId"]); } catch { } #endregion #region 记录会员消费信息 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/MemberMobilePay"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?Membership_Phone={0}", _Dictionary["WeChatPhone"].ToString()); sb.AppendFormat("&recodeType={0}", 5000); sb.AppendFormat("&ticketCode={0}", _Dictionary["TicketCode"].ToString()); sb.AppendFormat("&consumeAmount={0}", _Dictionary["Recode_Amount"].ToString()); if (_Dictionary.ContainsKey("Consume_Point")) { sb.AppendFormat("&consumePoint={0}", _Dictionary["Consume_Point"].ToString()); } sb.AppendFormat("&factAmount={0}", _Dictionary["Fact_Amount"].ToString()); sb.AppendFormat("&consumeDate={0}", _Dictionary["Recode_Date"].ToString()); if (_Dictionary.ContainsKey("Recode_Desc")) { sb.AppendFormat("&Recode_Desc={0}", _Dictionary["Recode_Desc"].ToString()); } sb.AppendFormat("&consumptionDesc={0}", "那美部分退款"); sb.AppendFormat("&consumeType={0}", 3000);//商城订单 sb.AppendFormat("&serverPartCode={0}", _ServerpartCode); sb.AppendFormat("&serverPartShopCode={0}", _ShopCode); sb.AppendFormat("&OwnerUnitId={0}", OwnerUnitId); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["TicketCode"] = _Dictionary["TicketCode"].ToString(); info["PlatformCode"] = _PlatformCode; info["Recode_Type"] = _Dictionary["Recode_Type"].ToString(); info["Recode_Amount"] = _Dictionary["Recode_Amount"]; info["Fact_Amount"] = _Dictionary["Fact_Amount"]; if (_Dictionary.ContainsKey("Consume_Point")) { info["Consume_Point"] = _Dictionary["Consume_Point"]; } info["Recode_Date"] = _Dictionary["Recode_Date"]; info["Pay_State"] = "Success"; info["Recode_Desc"] = _Recode_Desc; return "{\"error\": 100 ,\"msg\": \"退款成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); switch (_Result_Code) { case "205": _Result_Code = "203"; break; case "301": _Result_Code = "102"; break; } return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"退款失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 同步会员 /// /// 同步会员 /// /// /// [WebMethod] public string SysncMember(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "Membership_Name", "Membership_Sex", "Membership_Point" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); //业主单位 int OwnerUnitId = 13; try { OwnerUnitId = Convert.ToInt32(ConfigurationManager.AppSettings["OwnerUnitId"]); } catch { } #endregion #region 同步会员 //根据授权码获取接口来源 string staffName = "那美通讯接口"; //获取服务区门店信息 string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { staffName = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/SysncMember"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?MembershipPhone={0}", _Dictionary["WeChatPhone"]); sb.AppendFormat("&MembershipName={0}", _Dictionary["Membership_Name"]); sb.AppendFormat("&membershipSex={0}", _Dictionary["Membership_Sex"]); sb.AppendFormat("&membershipPoint={0}", _Dictionary["Membership_Point"]); sb.AppendFormat("&staffName={0}", staffName); sb.AppendFormat("&OwnerUnitId={0}", OwnerUnitId); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Membership_Name"] = _Dictionary["Membership_Name"].ToString(); info["Membership_MobilePhone"] = _Dictionary["WeChatPhone"].ToString(); info["Membership_Point"] = _JObject["Result_Data"]["Membership_Point"]; info["Account_Balance"] = _JObject["Result_Data"]["Account_Balance"]; return "{\"error\": 100 ,\"msg\": \"新增成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"新增失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 同步会员积分 /// /// 同步会员积分 /// /// /// [WebMethod] public string SysncMemberPoint(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "ChangePoint", "ChangePointDesc" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 //业主单位 int OwnerUnitId = 13; try { OwnerUnitId = Convert.ToInt32(ConfigurationManager.AppSettings["OwnerUnitId"]); } catch { } #endregion #region 同步会员积分 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/SysncMemberPoint"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?MembershipPhone={0}", _Dictionary["WeChatPhone"]); sb.AppendFormat("&ChangePointType={0}", "7000");//那美营销 sb.AppendFormat("&ChangePointDesc={0}", _Dictionary["ChangePointDesc"]);//改变积分类型描述 sb.AppendFormat("&ChangePoint={0}", _Dictionary["ChangePoint"]); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); WebService.SDK.LogHelper.WriteSendLog("SysncMemberPoint" + RequestUrl + "||" + reString); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["ChangePoint"] = _Dictionary["ChangePoint"].ToString(); info["Membership_Point"] = _JObject["Result_Data"]["Membership_Point"]; return "{\"error\": 100 ,\"msg\": \"同步积分成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"同步积分失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 会员充值 /// /// 会员充值 /// /// /// [WebMethod] public string MemberRecharge(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "WeChatPhone", "TicketCode", "RechargeAmount" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 判断是否存在重复充值的现象 //从Redis中获取充值信息 string key = code; Model.RechargeInfoModel rechargeInfoModel = RedisHelp.Redis.HashGet(6, code, _Dictionary["TicketCode"]); if (rechargeInfoModel == null) { rechargeInfoModel = new Model.RechargeInfoModel(); //写入Redis的db6数据库 rechargeInfoModel.WeChatPhone = _Dictionary["WeChatPhone"]; rechargeInfoModel.RechargeAmount = _Dictionary["RechargeAmount"].TryParseToDecimal(); //写入Redis的db5数据库 RedisHelp.Redis.HashSet(6, code, _Dictionary["TicketCode"], rechargeInfoModel); } else { return "{\"error\": 102 ,\"msg\": \"充值失败:充值订单号重复\",\"rows\":[{}]}"; } #endregion #region 参数定义 //业主单位 int OwnerUnitId = 13; try { OwnerUnitId = Convert.ToInt32(ConfigurationManager.AppSettings["OwnerUnitId"]); } catch { } string _ServerpartCode = codes[0], _ShopCode = codes[1], _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); #endregion #region 会员充值 //根据授权码获取接口来源 string RechargeSource = "那美充值"; //获取服务区门店信息 string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { RechargeSource = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/MemberRecharge"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("MembershipPhone={0}", _Dictionary["WeChatPhone"]); sb.AppendFormat("&rechargeDesc={0}", RechargeSource); //充值来源 sb.AppendFormat("&ticketCode={0}", _Dictionary["TicketCode"]); //充值订单号 sb.AppendFormat("&rechargeAmount={0}", _Dictionary["RechargeAmount"]); //改变积分类型描述 string parameters = sb.ToString(); string RequestUrl = _BaseUrl + "?" + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Membership_MobilePhone"] = _Dictionary["WeChatPhone"].ToString(); info["TicketCode"] = _Dictionary["TicketCode"].ToString(); info["RechargeAmount"] = _Dictionary["RechargeAmount"].ToString(); info["Account_Balance"] = _JObject["Result_Data"]["Account_Balance"]; return "{\"error\": 100 ,\"msg\": \"会员充值成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"会员充值失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 校验授权码 /// /// 校验授权码 /// /// 授权码 /// 请求的json串 /// 返回结果 /// MD5Key /// 返回授权码 public string[] CheckCodes(string code, string jsonString, ref string errMsg, ref string MD5Key) { string[] codes = null; //string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); ////内部会员信息数据库链接 //OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], // _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); //授权码验证数据库链接 OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { errMsg = "{\"error\": 201 ,\"msg\": \"记录失败:授权码错误\",\"rows\":[{}]}"; } MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); codes = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codes == null) { WebService.SDK.LogHelper.WriteSendLog(code); errMsg = "{\"error\": 201 ,\"msg\": \"记录失败:授权码错误\",\"rows\":[{}]}"; } return codes; } #endregion #region 方法 -> 获取微信会员电子码 /// /// 获取会员信息 /// /// /// [WebMethod] public string GetWeChatMembershipEcode(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 string[] _RequiredDatas = { "sign", "WeChatPhone", "Time_stamp" }; Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { int EmptyCount = 0; //非必填项未传参数量 JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { switch (_RequiredData) { case "WeChatPhone": EmptyCount++; if (EmptyCount == 2) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要查询参数\",\"rows\":[{}]}"; } _Dictionary.Add(_RequiredData, ""); break; default: return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } if (_Json["sign"].ToString() != SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key)) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion //查询会员信息 string _BaseUrl = ConfigurationManager.AppSettings["ApiUrl"]; _BaseUrl += "OpenApi/GetMemberECode"; StringBuilder sb = new StringBuilder(); sb.AppendFormat("?MembershipPhone={0}", _Dictionary["WeChatPhone"].ToString()); string parameters = sb.ToString(); string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": info["Membership_ECode"] = _JObject["Result_Data"]["Membership_ECode"]; return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":[" + info + "]}"; default: return "{\"error\": 101 ,\"msg\": \"查询成功!无会员信息!\",\"rows\":[{}]}"; } } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #endregion #region 方法 -> 对外接口[油品] #region 方法 -> 加油站工班销售汇总报表 /// /// 添加加油站工班销售汇总报表 /// /// /// [WebMethod] public string addWorkclasssummary(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 // string[] _RequiredDatas = { "sign", "Time_stamp", "GasStationNum", "GasStationName", "WorkStarTime", "WorkEndTime", //"WorkType","CashierWorkNum","CashierWorkName","GasVolume","TotalTradeNum","GasAmount","NoGasAmount","TotalAmount"};//验证参数是否必传 string[] _RequiredDatas = { "sign", "Time_stamp", "GASSTATIONNUM", "GASSTATIONNAME", "WORKSTARTIME", "WORKENDTIME", "WORKTYPE","CASHIERWORKNUM","CASHIERWORKNAME","GASVOLUME","TOTALTRADENUM","GASAMOUNT","NOGASAMOUNT","TOTALAMOUNT"};//验证参数是否必传 Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); #endregion #region 添加加油站工班销售汇总报表 //根据授权码获取接口来源 string staffName = "油品接口"; //获取服务区门店信息 string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { staffName = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } string _BaseUrl = ConfigurationManager.AppSettings["MobileServiceUrl"]; //StringBuilder sb = new StringBuilder(); //sb.AppendFormat("?action_type={0}", "addWorkclasssummary"); //sb.AppendFormat("&GasStationNum={0}", _Dictionary["GASSTATIONNUM"]); //sb.AppendFormat("&GasStationName={0}", _Dictionary["GASSTATIONNAME"]); //sb.AppendFormat("&WorkStarTime={0}", _Dictionary["WORKSTARTIME"]); //sb.AppendFormat("&WorkEndTime={0}", _Dictionary["WORKENDTIME"]); //sb.AppendFormat("&WorkType={0}", _Dictionary["WORKTYPE"]); //sb.AppendFormat("&CashierWorkNum={0}", _Dictionary["CASHIERWORKNUM"]); //sb.AppendFormat("&CashierWorkName={0}", _Dictionary["CASHIERWORKNAME"]); //sb.AppendFormat("&GasVolume={0}", _Dictionary["GASVOLUME"]); //sb.AppendFormat("&TotalTradeNum={0}", _Dictionary["TOTALTRADENUM"]); //sb.AppendFormat("&GasAmount={0}", _Dictionary["GASAMOUNT"]); //sb.AppendFormat("&NoGasAmount={0}", _Dictionary["NOGASAMOUNT"]); //sb.AppendFormat("&TotalAmount={0}", _Dictionary["TOTALAMOUNT"]); //sb.AppendFormat("&staffName={0}", staffName); //string parameters = sb.ToString(); //string RequestUrl = _BaseUrl + parameters; //string format = "application/json;charset=UTF-8"; //string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); IDictionary parameters = new Dictionary(); parameters.Add("action_type", "addWorkclasssummary"); parameters.Add("GasStationNum", _Dictionary["GASSTATIONNUM"]); parameters.Add("GasStationName", HttpUtility.UrlEncode(_Dictionary["GASSTATIONNAME"])); parameters.Add("WorkStarTime", HttpUtility.UrlEncode(_Dictionary["WORKSTARTIME"])); parameters.Add("WorkEndTime", HttpUtility.UrlEncode(_Dictionary["WORKENDTIME"])); parameters.Add("WorkType", HttpUtility.UrlEncode(_Dictionary["WORKTYPE"])); parameters.Add("CashierWorkNum", _Dictionary["CASHIERWORKNUM"]); parameters.Add("CashierWorkName", HttpUtility.UrlEncode(_Dictionary["CASHIERWORKNAME"])); parameters.Add("GasVolume", _Dictionary["GASVOLUME"]); parameters.Add("TotalTradeNum", _Dictionary["TOTALTRADENUM"]); parameters.Add("GasAmount", _Dictionary["GASAMOUNT"]); parameters.Add("NoGasAmount", _Dictionary["NOGASAMOUNT"]); parameters.Add("TotalAmount", _Dictionary["TOTALAMOUNT"]); parameters.Add("staffName", staffName); parameters.Add("ServerpartCode", _ServerpartCode); parameters.Add("ShopCode", _ShopCode); string reString = HZQR.Common.HttpUtil.HttpUrlPost(_BaseUrl, parameters); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"新增成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"新增失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 加油站油品日结销售汇总 /// /// 添加加油站油品日结销售汇总 /// /// /// [WebMethod] public string addDailysellsummary(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 // string[] _RequiredDatas = { "sign", "Time_stamp","GasStationNum", "GasStationName", "DailySettleDate", "GasTypeAndName", //"TotalSellGasVolume","TotalSellAmount","ActuallyInComeAmount","DiscountAmount","CashPayAmount", // "WechatPayAmount","AlipayAmount","UnionPayAmount"};//验证参数是否必传 string[] _RequiredDatas = { "sign", "Time_stamp", "GASSTATIONNUM", "GASSTATIONNAME", "DAILYSETTLEDATE", "GASTYPEANDNAME", "TOTALSELLGASVOLUME","TOTALSELLAMOUNT","ACTUALLYINCOMEAMOUNT","DISCOUNTAMOUNT", "CASHPAYAMOUNT","WECHATPAYAMOUNT","ALIPAYAMOUNT","UNIONPAYAMOUNT"};//验证参数是否必传 Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); #endregion #region 添加加油站工班销售汇总报表 //根据授权码获取接口来源 string staffName = "油品接口"; //获取服务区门店信息 string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { staffName = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } string _BaseUrl = ConfigurationManager.AppSettings["MobileServiceUrl"]; //StringBuilder sb = new StringBuilder(); //sb.AppendFormat("?action_type={0}", "addDailysellsummary"); //sb.AppendFormat("&GasStationNum={0}", _Dictionary["GASSTATIONNUM"]); //sb.AppendFormat("&GasStationName={0}", _Dictionary["GASSTATIONNAME"]); //sb.AppendFormat("&DailySettleDate={0}", _Dictionary["DAILYSETTLEDATE"]); //sb.AppendFormat("&GasTypeAndName={0}", _Dictionary["GASTYPEANDNAME"]); //sb.AppendFormat("&TotalSellGasVolume={0}", _Dictionary["TOTALSELLGASVOLUME"]); //sb.AppendFormat("&TotalSellAmount={0}", _Dictionary["TOTALSELLAMOUNT"]); //sb.AppendFormat("&ActuallyInComeAmount={0}", _Dictionary["ACTUALLYINCOMEAMOUNT"]); //sb.AppendFormat("&DiscountAmount={0}", _Dictionary["DISCOUNTAMOUNT"]); //sb.AppendFormat("&CashPayAmount={0}", _Dictionary["CASHPAYAMOUNT"]); //sb.AppendFormat("&WechatPayAmount={0}", _Dictionary["WECHATPAYAMOUNT"]); //sb.AppendFormat("&AlipayAmount={0}", _Dictionary["ALIPAYAMOUNT"]); //sb.AppendFormat("&UnionPayAmount={0}", _Dictionary["UNIONPAYAMOUNT"]); //sb.AppendFormat("&staffName={0}", staffName); //string parameters = sb.ToString(); //string RequestUrl = _BaseUrl + parameters; //string format = "application/json;charset=UTF-8"; IDictionary parameters = new Dictionary(); parameters.Add("action_type", "addDailysellsummary"); parameters.Add("GasStationNum", _Dictionary["GASSTATIONNUM"]); parameters.Add("GasStationName", HttpUtility.UrlEncode(_Dictionary["GASSTATIONNAME"])); parameters.Add("DailySettleDate", HttpUtility.UrlEncode(_Dictionary["DAILYSETTLEDATE"])); parameters.Add("GasTypeAndName", HttpUtility.UrlEncode(_Dictionary["GASTYPEANDNAME"])); parameters.Add("TotalSellGasVolume", _Dictionary["TOTALSELLGASVOLUME"]); parameters.Add("TotalSellAmount", _Dictionary["TOTALSELLAMOUNT"]); parameters.Add("ActuallyInComeAmount", _Dictionary["ACTUALLYINCOMEAMOUNT"]); parameters.Add("DiscountAmount", _Dictionary["DISCOUNTAMOUNT"]); parameters.Add("CashPayAmount", _Dictionary["CASHPAYAMOUNT"]); parameters.Add("WechatPayAmount", _Dictionary["WECHATPAYAMOUNT"]); parameters.Add("AlipayAmount", _Dictionary["ALIPAYAMOUNT"]); parameters.Add("UnionPayAmount", _Dictionary["UNIONPAYAMOUNT"]); parameters.Add("staffName", staffName); parameters.Add("ServerpartCode", _ServerpartCode); parameters.Add("ShopCode", _ShopCode); //string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); string reString = HZQR.Common.HttpUtil.HttpUrlPost(_BaseUrl, parameters); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"新增成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"新增失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 加油站油品销售明细记录 /// /// 添加加油站油品销售明细记录 /// /// /// [WebMethod] public string addSellDetail(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 //string[] _RequiredDatas = { "sign", "Time_stamp","GasStationNum", "GasStationName", "TradeTime", "BillNum", //"CashierWorkNum","RefuelingGunNum","GasTypeAndName","TotalSellGasVolume","GasUnitPrice","TotalSellAmount", //"ShopAmount","ActuallyinComeAmount","CashPayAmount","WechatpayAmount","AlipayAmount","UnionpayAmount"};//验证参数是否必传 string[] _RequiredDatas = { "sign", "Time_stamp","GASSTATIONNUM", "GASSTATIONNAME", "TRADETIME", "BILLNUM", "CASHIERWORKNUM","CASHIERWORKNAME","REFUELINGGUNNUM","GASTYPEANDNAME","TOTALSELLGASVOLUME","GASUNITPRICE","TOTALSELLAMOUNT", "SHOPAMOUNT","ACTUALLYINCOMEAMOUNT","CASHPAYAMOUNT","WECHATPAYAMOUNT","ALIPAYAMOUNT","UNIONPAYAMOUNT"};//验证参数是否必传 Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); #endregion #region 添加加油站工班销售汇总报表 //根据授权码获取接口来源 string staffName = "油品接口"; //获取服务区门店信息 string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { staffName = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } string _BaseUrl = ConfigurationManager.AppSettings["MobileServiceUrl"]; //StringBuilder sb = new StringBuilder(); //sb.AppendFormat("?action_type={0}", "addSellDetail"); //sb.AppendFormat("&GasStationNum={0}", _Dictionary["GASSTATIONNUM"]); //sb.AppendFormat("&GasStationName={0}", _Dictionary["GASSTATIONNAME"]); //sb.AppendFormat("&TradeTime={0}", _Dictionary["TRADETIME"]); //sb.AppendFormat("&BillNum={0}", _Dictionary["BILLNUM"]); //sb.AppendFormat("&CashierWorkNum={0}", _Dictionary["CASHIERWORKNUM"]); //sb.AppendFormat("&CashierWorkName={0}", _Dictionary["CASHIERWORKNAME"]); //sb.AppendFormat("&GasTypeAndName={0}", _Dictionary["GASTYPEANDNAME"]); //sb.AppendFormat("&GasUnitPrice={0}", _Dictionary["GASUNITPRICE"]); //sb.AppendFormat("&TotalSellAmount={0}", _Dictionary["TOTALSELLAMOUNT"]); //sb.AppendFormat("&ShopAmount={0}", _Dictionary["SHOPAMOUNT"]); //sb.AppendFormat("&ActuallyinComeAmount={0}", _Dictionary["ACTUALLYINCOMEAMOUNT"]); //sb.AppendFormat("&CashPayAmount={0}", _Dictionary["CASHPAYAMOUNT"]); //sb.AppendFormat("&WechatpayAmount={0}", _Dictionary["WECHATPAYAMOUNT"]); //sb.AppendFormat("&AlipayAmount={0}", _Dictionary["ALIPAYAMOUNT"]); //sb.AppendFormat("&UnionpayAmount={0}", _Dictionary["UNIONPAYAMOUNT"]); //sb.AppendFormat("&staffName={0}", staffName); //string parameters = sb.ToString(); //string RequestUrl = _BaseUrl + parameters; //string format = "application/json;charset=UTF-8"; //string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); IDictionary parameters = new Dictionary(); parameters.Add("action_type", "addSellDetail"); parameters.Add("GasStationNum", _Dictionary["GASSTATIONNUM"]); parameters.Add("GasStationName", HttpUtility.UrlEncode(_Dictionary["GASSTATIONNAME"])); parameters.Add("TradeTime", HttpUtility.UrlEncode(_Dictionary["TRADETIME"])); parameters.Add("BillNum", _Dictionary["BILLNUM"]); parameters.Add("CashierWorkNum", _Dictionary["CASHIERWORKNUM"]); parameters.Add("CashierWorkName", HttpUtility.UrlEncode(_Dictionary["CASHIERWORKNAME"])); parameters.Add("RefuelingGunNum", _Dictionary["REFUELINGGUNNUM"]); parameters.Add("GasTypeAndName", HttpUtility.UrlEncode(_Dictionary["GASTYPEANDNAME"])); parameters.Add("TotalSellGasVolume", _Dictionary["TOTALSELLGASVOLUME"]); parameters.Add("GasUnitPrice", _Dictionary["GASUNITPRICE"]); parameters.Add("TotalSellAmount", _Dictionary["TOTALSELLAMOUNT"]); parameters.Add("ShopAmount", _Dictionary["SHOPAMOUNT"]); parameters.Add("ActuallyinComeAmount", _Dictionary["ACTUALLYINCOMEAMOUNT"]); parameters.Add("CashPayAmount", _Dictionary["CASHPAYAMOUNT"]); parameters.Add("WechatPayAmount", _Dictionary["WECHATPAYAMOUNT"]); parameters.Add("AlipayAmount", _Dictionary["ALIPAYAMOUNT"]); parameters.Add("UnionPayAmount", _Dictionary["UNIONPAYAMOUNT"]); parameters.Add("staffName", staffName); parameters.Add("ServerpartCode", _ServerpartCode); parameters.Add("ShopCode", _ShopCode); string reString = HZQR.Common.HttpUtil.HttpUrlPost(_BaseUrl, parameters); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"新增成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"新增失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 加油站液位仪数据 /// /// 添加加油站液位仪数据 /// /// /// [WebMethod] public string addLiquidlevelmeter(string code, string jsonString) { try { string result = "", MD5Key = ""; string[] codes = CheckCodes(code, jsonString, ref result, ref MD5Key);//校验授权码 if (codes == null) { return result; } #region 必填项验证 //string[] _RequiredDatas = { "sign", "Time_stamp", "GasStationNum", "GasStationName", "OilTankNum", "GasTypeAndName","NowVolOfOil", //"VolOfTemperature20","EmptySpaceOfOilTank","OilHeight","WaterHeight","VolOfWater","TemperatutrOfOil"};//验证参数是否必传 string[] _RequiredDatas = { "sign", "Time_stamp", "GASSTATIONNUM", "GASSTATIONNAME", "OILTANKNUM", "GASTYPEANDNAME","NOWVOLOFOIL","VOLOFTEMPERATURE20","EMPTYSPACEOFOILTANK", "OILHEIGHT","WATERHEIGHT","VOLOFWATER","TEMPERATUTROFOIL"};//验证参数是否必传 //string[] _RequiredDatas = { "sign", "Time_stamp", "GASSTATIONNUM", "GASSTATIONNAME", // "OILTANKNUM","GASTYPEANDNAME","NOWVOLOFOIL","VOLOFTEMPERATURE20","EMPTYSPACEOFOILTANK", // "OILHEIGHT","WATERHEIGHT","VOLOFWATER","TEMPERATUTROFOIL"};//验证参数是否必传 Dictionary _Dictionary = new Dictionary(); if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"记录失败:数据签名不通过!\",\"rows\":[{}]}"; } } else { return "{\"error\": 200 ,\"msg\": \"记录失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion #region 参数定义 string _ServerpartCode = codes[0], _ShopCode = codes[1], _PlatformCode = code + DateTime.Now.ToString("yyyyMMddHHmmss"); #endregion #region 添加加油站工班销售汇总报表 //根据授权码获取接口来源 string staffName = "油品接口"; //获取服务区门店信息 string _OracleHelperSeller = ConfigurationManager.AppSettings["OracleHelperSeller"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperSeller.Split(',')[0], _OracleHelperSeller.Split(',')[1], _OracleHelperSeller.Split(',')[2], _OracleHelperSeller.Split(',')[3]); DataTable _SERVERPARTSHOP = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT A.PROVINCE_CODE,A.SERVERPART_ID,A.SERVERPART_NAME,B.SERVERPARTSHOP_ID,B.SHOPNAME FROM HIGHWAY_STORAGE.T_SERVERPART A,HIGHWAY_STORAGE.T_SERVERPARTSHOP B WHERE A.SERVERPART_ID = B.SERVERPART_ID AND A.SERVERPART_CODE = '" + _ServerpartCode + "' AND B.SHOPCODE = '" + _ShopCode + "'").Tables[0]; if (_SERVERPARTSHOP.Rows.Count > 0) { staffName = _SERVERPARTSHOP.Rows[0]["SHOPNAME"].ToString(); } string _BaseUrl = ConfigurationManager.AppSettings["MobileServiceUrl"]; //StringBuilder sb = new StringBuilder(); //sb.AppendFormat("?action_type={0}", "addSellDetail"); //sb.AppendFormat("&GasStationNum={0}", _Dictionary["GASSTATIONNUM"]); //sb.AppendFormat("&GasStationName={0}", _Dictionary["GASSTATIONNAME"]); //sb.AppendFormat("&OilTankNum={0}", _Dictionary["OILTANKNUM"]); //sb.AppendFormat("&GasTypeAndName={0}", _Dictionary["GASTYPEANDNAME"]); //sb.AppendFormat("&NowVolOfOil={0}", _Dictionary["NOWVOLOFOIL"]); //sb.AppendFormat("&VolOfTemperature20={0}", _Dictionary["VOLOFTEMPERATURE20"]); //sb.AppendFormat("&EmptySpaceOfOilTank={0}", _Dictionary["EMPTYSPACEOFOILTANK"]); //sb.AppendFormat("&OilHeight={0}", _Dictionary["OILHEIGHT"]); //sb.AppendFormat("&WaterHeight={0}", _Dictionary["WATERHEIGHT"]); //sb.AppendFormat("&VolOfWater={0}", _Dictionary["VOLOFWATER"]); //sb.AppendFormat("&TemperatutrOfOil={0}", _Dictionary["TEMPERATUTROFOIL"]); //sb.AppendFormat("&staffName={0}", staffName); //string parameters = sb.ToString(); //string RequestUrl = _BaseUrl + parameters; //string format = "application/json;charset=UTF-8"; //string reString = SDK.CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); IDictionary parameters = new Dictionary(); parameters.Add("action_type", "addLiquidlevelmeter"); parameters.Add("GasStationNum", _Dictionary["GASSTATIONNUM"]); parameters.Add("GasStationName", HttpUtility.UrlEncode(_Dictionary["GASSTATIONNAME"])); parameters.Add("OilTankNum", _Dictionary["OILTANKNUM"]); parameters.Add("GasTypeAndName", HttpUtility.UrlEncode(_Dictionary["GASTYPEANDNAME"])); parameters.Add("NowVolOfOil", _Dictionary["NOWVOLOFOIL"]); parameters.Add("VolOfTemperature20", _Dictionary["VOLOFTEMPERATURE20"]); parameters.Add("EmptySpaceOfOilTank", _Dictionary["EMPTYSPACEOFOILTANK"]); parameters.Add("OilHeight", _Dictionary["OILHEIGHT"]); parameters.Add("WaterHeight", _Dictionary["WATERHEIGHT"]); parameters.Add("VolOfWater", _Dictionary["VOLOFWATER"]); parameters.Add("TemperatutrOfOil", _Dictionary["TEMPERATUTROFOIL"]); parameters.Add("staffName", staffName); parameters.Add("ServerpartCode", _ServerpartCode); parameters.Add("ShopCode", _ShopCode); string reString = HZQR.Common.HttpUtil.HttpUrlPost(_BaseUrl, parameters); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": return "{\"error\": 100 ,\"msg\": \"新增成功!\",\"rows\":[" + info + "]}"; default: string _Result_Code = _JObject["Result_Code"].ToString(); return "{\"error\": " + _Result_Code + " ,\"msg\": \"" + _JObject["Result_Desc"] + "\",\"rows\":[{}]}"; } #endregion } catch (Exception ex) { WebService.SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"新增失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #endregion #region 方法 -> 甬台温货车之家相关接口 #region 方法 -> 获取交易订单数据 /// /// 获取交易订单数据 /// /// 授权码 /// 入参字符串 /// [WebMethod] public string GetSellDataList(string code, string jsonString) { try { OracleHelper _OracleHelperEx = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); OracleHelper _OracleHelperSellData = new OracleHelper(_OracleConnStrSellData.Split(',')[0], _OracleConnStrSellData.Split(',')[1], _OracleConnStrSellData.Split(',')[2], _OracleConnStrSellData.Split(',')[3]); SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); if (string.IsNullOrEmpty(code) || code.Length < 10) { return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } string MD5Key = (code.Substring(0, 6) + "|" + code.Substring(6) + "||").ToEncrypt(); string[] codeArr = OperationDataHelper.IsCorrectCode(_OracleHelperEx, MD5Key); if (codeArr == null) { SDK.LogHelper.WriteSendLog(code); return "{\"error\": 201 ,\"msg\": \"查询失败:授权码错误\",\"rows\":[{}]}"; } Dictionary _Dictionary = new Dictionary(); #region 必填项验证 string[] _RequiredDatas = { "sign", "Time_stamp", "TicketCode", "StartDate", "EndDate" }; if (!string.IsNullOrEmpty(jsonString)) { JObject _Json = JObject.Parse(jsonString); if (_Json.Property("TicketCode") == null && (_Json.Property("StartDate") == null || _Json.Property("EndDate") == null)) { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON缺少必要参数:TicketCode或StartDate、EndDate\",\"rows\":[{}]}"; } foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData) == null) { continue; } else if (_RequiredData.ToLower() != "sign") { _Dictionary.Add(_RequiredData, _Json[_RequiredData].ToString()); } } string sign = SDK.CommonHelper.ParamSign(_Dictionary, code, MD5Key); if (_Json["sign"].ToString() != sign) { return "{\"error\": 202 ,\"msg\": \"查询失败:数据签名不通过!\",\"rows\":[{}]}"; } //非必填项 _Dictionary.Clear(); foreach (var item in _Json) { _Dictionary.Add(item.Key, _Json[item.Key].ToString()); } } else { return "{\"error\": 200 ,\"msg\": \"查询失败:JSON参数解析异常!\",\"rows\":[{}]}"; } #endregion string WhereSQL = ""; WhereSQL += " AND SERVERPARTCODE = '" + code.Substring(0, 6) + "' AND SHOPCODE = '" + code.Substring(6) + "'"; if (_Dictionary.ContainsKey("TicketCode")) { WhereSQL += " AND HOFTORDERCODE = '" + _Dictionary["TicketCode"] + "'"; } else { WhereSQL += " AND HOFTORDERCODE IS NOT NULL"; if (_Dictionary.ContainsKey("StartDate")) { WhereSQL += " AND SELLMASTER_DATE >= " + _Dictionary["StartDate"] + "000000"; } if (_Dictionary.ContainsKey("EndDate")) { WhereSQL += " AND SELLMASTER_DATE < " + (_Dictionary["EndDate"].TryParseToInt() + 1) + "000000"; } } DataTable dtYSSELLMASTER = _OracleHelperSellData.ExcuteSqlGetDataSet( "SELECT * FROM HIGHWAY_SELLDATA.T_YSSELLMASTER WHERE SELLMASTER_STATE NOT IN (0)" + WhereSQL).Tables[0]; if (dtYSSELLMASTER.Rows.Count > 0) { List YSSELLMASTERList = new List(); foreach (DataRow drYSSELLMASTER in dtYSSELLMASTER.Rows) { Model.SellData.YTWSellDataModel yssellmasterModel = new Model.SellData.YTWSellDataModel(); yssellmasterModel.ServerpartName = drYSSELLMASTER["SERVERPART_NAME"].ToString(); //服务区名称 yssellmasterModel.ServerpartShopName = drYSSELLMASTER["SHOPNAME"].ToString(); //门店名称 yssellmasterModel.TicketCode = drYSSELLMASTER["HOFTORDERCODE"].ToString(); //订单编号 yssellmasterModel.SellCount = drYSSELLMASTER["SELLMASTER_COUNT"].TryParseToDouble().Round(2); //销售数量 yssellmasterModel.SellAmount = drYSSELLMASTER["SELLMASTER_AMOUNT"].TryParseToDouble().Round(2); //订单金额 yssellmasterModel.FactAmount = drYSSELLMASTER["PAY_AMOUNT"].TryParseToDouble().Round(2); //实付金额 yssellmasterModel.SellDate = HCC.Common.TranslateDateTime(drYSSELLMASTER["SELLMASTER_DATE"].ToString()); //销售时间 YSSELLMASTERList.Add(yssellmasterModel); } return "{\"error\": 100 ,\"msg\": \"查询成功!\",\"rows\":" + JsonConvert.SerializeObject(YSSELLMASTERList) + "}"; } else { return "{\"error\": 101 ,\"msg\": \"查询无数据!\",\"rows\":[{}]}"; } } catch (Exception ex) { SDK.LogHelper.WriteSendLog(ex.Message); return "{\"error\": 999 ,\"msg\": \"查询失败:" + ex.Message + "\",\"rows\":[{}]}"; } } #endregion #endregion } }