using System; using System.Collections; using System.Configuration; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Web.Services; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using WebService.SDK; using WebService.SDK.BaiduAI.Model.FaceModel; using WebService.SDK.BaiduAI; namespace EShangTechService { /// /// 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 _SERVERPARTCODE = ConfigurationManager.AppSettings["SERVERPARTCODE"].ToString(); protected static string _connectstring = ConfigurationManager.AppSettings["connectstring"].ToString(); protected static string _connectstringbld = ConfigurationManager.AppSettings["connectstringbld"].ToString(); protected static string _OracleHelperString = ConfigurationManager.AppSettings["OracleHelperString"].ToString(); protected static string _OracleHelperStringsp = ConfigurationManager.AppSettings["OracleHelperStringsp"].ToString(); protected static string _OracleHelperStringps = ConfigurationManager.AppSettings["OracleHelperStringps"].ToString(); protected static string _Member_Code = "03knr6e03";//mgowr33b6 private const String host = "https://ali-barcode.showapi.com"; private const String path = "/barcode"; private const String method = "GET"; private const String appcode = "99f7d21d35e647e98706f75109f4b655"; #region 创建对应的支付 [WebMethod] /// /// 支付参数 -反扫 /// /// 交易订单号 /// 交易金额 /// 支付授权码 /// 支付方式 /// 商品说明 /// public string createpay(string TICKETCODE, string TICKETPRICE, string USERPAYCODE, string PAYTYPE = "ALIPAY", string PAYDESC = "服务区商品") { string ResString = null; PayCreateResult _PayCreateResult = new PayCreateResult(); if (string.IsNullOrEmpty(TICKETCODE) || string.IsNullOrEmpty(_SERVERPARTCODE) || !_SERVERPARTCODE.Contains(TICKETCODE.Substring(0, 6))) { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.用户不存在)).ToString(); _PayCreateResult.result_desc = "参数配置异常,服务区不匹配!"; _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; return JSonHelper.ObjectToJson(_PayCreateResult, false); } string ticket_price = TICKETPRICE; string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE); string PayTime = TICKETCODE.Substring(TICKETCODE.Length - 14, 14); string PayOutTime = DateTime.Parse(PayTime.Substring(0, 4) + "/" + PayTime.Substring(4, 2) + "/" + PayTime.Substring(6, 2) + " " + PayTime.Substring(8, 2) + ":" + PayTime.Substring(10, 2) + ":" + PayTime.Substring(12, 2)).AddMinutes(5).ToString("yyyyMMddHHmmss"); LogHelper.WriteReceiveLog("反扫-请求参数-START[createpay]:订单编码(TICKETCODE):" + TICKETCODE + ",金额(TICKETPRICE):" + TICKETPRICE + "," + CommonHelper.GetPayType(PAYTYPE) + "用户编码(USERPAYCODE):" + USERPAYCODE + ",商户编码(memberCode):" + MerchantInfo[0] + ",商户秘钥(term_Code):" + MerchantInfo[1]); if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd"))) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd")); } CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\" + TICKETCODE + ".txt", ""); try { ResString = Common.merchantscan(USERPAYCODE, TICKETCODE, "服务区商品", ticket_price, MerchantInfo, ""); JObject _JObject = new JObject(); try { //判断类型 if (ResString != "") { _JObject = JObject.Parse(ResString); if (Convert.ToInt32(_JObject["errcode"]) == 0) { switch (_JObject["errmsg"].ToString().ToUpper()) { case "SUCCEED": if (_JObject["order_info"]["pay_status"].ToString() == "已支付")//支付状态 { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayCreateResult.result_desc = "SUCCESS";//支付跳转链接 _PayCreateResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//第三方订单号 _PayCreateResult.trade_num = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 } else if (_JObject["order_info"]["pay_status"].ToString() == "已取消") { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayCreateResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//第三方订单号 _PayCreateResult.trade_num = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayCreateResult.result_desc = _JObject["errmsg"].ToString(); } else if (!string.IsNullOrEmpty(_JObject["order_info"]["pay_status"].ToString()) && (_JObject["order_info"]["pay_status"].ToString().Contains("支付中") || _JObject["order_info"]["pay_status"].ToString().Contains("用户支付中")))//支付状态 { _JObject = JObject.Parse((querypay(TICKETCODE, "", TICKETPRICE, PAYTYPE))); _PayCreateResult.result_code = _JObject["result_code"].ToString(); _PayCreateResult.result_desc = _JObject["result_desc"].ToString();//支付状态 _PayCreateResult.trade_no = _JObject["trade_no"].ToString();//客无忧订单号 _PayCreateResult.trade_num = _JObject["trade_num"].ToString();//第三方订单号 } else { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayCreateResult.result_desc = _JObject["errmsg"].ToString(); _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; } break; default: _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayCreateResult.result_desc = _JObject["errmsg"].ToString(); _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; break; } } else { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayCreateResult.result_desc = _JObject["errmsg"].ToString(); _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; } } else { _PayCreateResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayCreateResult.result_desc = "系统异常"; _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; } } catch (Exception ex) { _PayCreateResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayCreateResult.result_desc = "错误为:" + ResString.ToString();// +"____其他错误:" + ex.Message; _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\InsertData")) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\InsertData"); } CommonHelper.SaveTextFile("InsertData\\" + TICKETCODE + ".txt", TICKETCODE + "|" + PAYTYPE + "|" + TICKETPRICE + "|" + _PayCreateResult.result_code + "|" + _PayCreateResult.result_desc + "|" + _PayCreateResult.trade_no + "|" + _PayCreateResult.trade_num + "|" + JSonHelper.ObjectToJson(_PayCreateResult, false) + "|" + ((int)CommonHelper.MobilePayOperators.kwypay).ToString()); } catch (Exception ex) { LogHelper.WriteReceiveLog(ex.Message); } LogHelper.WriteSendLog("反扫-最终返回值END-[createpay]:" + JSonHelper.ObjectToJson(_PayCreateResult, false)); return JSonHelper.ObjectToJson(_PayCreateResult, false); } #endregion #region 创建对应的支付(正扫) [WebMethod] /// /// 支付参数 /// /// 交易订单号 /// 交易金额 /// 支付方式 /// public string createpay_customerscan(string TICKETCODE, string TICKETPRICE, string PAYTYPE) { string ResString = "", ticket_price = ""; JObject _JObject = new JObject(); PayCreateResult _PayCreateResult = new PayCreateResult(); LogHelper.WriteSendLog("支付正扫_请求参数START-[createpay_customerscan]:" + (PAYTYPE == "ALIPAY" ? "支付宝" : (PAYTYPE == "WECHAT" ? "微信" : "")) + "订单编码(TICKETCODE):" + TICKETCODE + ",金额(TICKETPRICE):" + TICKETPRICE + ",商户编码(memberCode):" + _Member_Code); if (!string.IsNullOrEmpty(TICKETCODE) && TICKETCODE.Split('-').Length == 3) { OracleHelper _OracleHelper = new OracleHelper("183.129.232.107", "orcl", "MOBILESERVICE_PLATFORM", "qrwl"); string SqlString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_CONSUMPTIONRECORD WHERE TICKET_CODE = '" + TICKETCODE + "' AND NVL(CONSUMPTIONRECORD_TYPE,1000) = 1000"; DataTable T_CONSUMPTIONRECORD = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (T_CONSUMPTIONRECORD.Rows.Count > 0) { try { if (DateTime.Parse(T_CONSUMPTIONRECORD.Rows[0]["CONSUMPTIONRECORD_DATE"].ToString()) < DateTime.Now.AddMinutes(-30)) { _PayCreateResult.result_code = ((int)CommonHelper.ResCode.安全验证不通过).ToString(); _PayCreateResult.result_desc = "错误为:订单付款超时"; _PayCreateResult.trade_no = TICKETCODE; _PayCreateResult.trade_num = ""; LogHelper.WriteSendLog("最终返回数据01-END[createpay_customerscan]:" + JSonHelper.ObjectToJson(_PayCreateResult, false)); return JSonHelper.ObjectToJson(_PayCreateResult, false); } } catch (Exception ex) { _PayCreateResult.result_code = ((int)CommonHelper.ResCode.请求参数错误).ToString(); _PayCreateResult.result_desc = "错误为:" + ex.Message; _PayCreateResult.trade_no = TICKETCODE; _PayCreateResult.trade_num = ""; LogHelper.WriteSendLog("最终返回数据02-END[createpay_customerscan]" + JSonHelper.ObjectToJson(_PayCreateResult, false)); return JSonHelper.ObjectToJson(_PayCreateResult, false); } } } try { ticket_price = Math.Round(decimal.Parse(TICKETPRICE), 2).ToString(); } catch { } try { //新支付 ResString = Common.QRCodePay(TICKETCODE, "骋客订单", ticket_price, _Member_Code, "", (PAYTYPE == "ALIPAY" ? "1" : (PAYTYPE == "WECHAT" ? "2" : "0"))); //判断类型 if (ResString != "") { _JObject = JObject.Parse(ResString); if (Convert.ToInt32(_JObject["errcode"]) == 0) { switch (_JObject["errmsg"].ToString().ToUpper()) { case "SUCCEED": if (_JObject["order_info"]["pay_status"].ToString().ToUpper() == "未支付") { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayCreateResult.result_desc = _JObject["pay_info"]["link_url"].ToString();//连接地址 -生成二维码 _PayCreateResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayCreateResult.trade_num = _JObject["order_info"]["transaction_id"].ToString();//第三方订单号 } else { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayCreateResult.result_desc = _JObject["errmsg"].ToString(); _PayCreateResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayCreateResult.trade_num = _JObject["order_info"]["transaction_id"].ToString();//第三方订单号 } break; default: _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayCreateResult.result_desc = _JObject["errmsg"].ToString(); _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; break; } } else { _PayCreateResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayCreateResult.result_desc = _JObject["errmsg"].ToString(); _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; } } else { _PayCreateResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayCreateResult.result_desc = "系统异常"; _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; } } catch (Exception ex) { _PayCreateResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayCreateResult.result_desc = "错误为:" + ResString;// +"____其他错误:" + ex.Message; _PayCreateResult.trade_no = ""; _PayCreateResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } try { //InsertData(TICKETCODE, PAYTYPE, _JObject, _PayCreateResult, null, TICKETPRICE); OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = "SELECT * FROM HIGHWAY_EXCHANGE.T_MOBILE_PAYCHECK WHERE TICKET_CODE = '" + TICKETCODE + "'"; DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(str, "T_MOBILE_PAYCHECK").Tables[0]; if (_DataTable.Rows.Count == 0) { str = @"INSERT INTO HIGHWAY_EXCHANGE.T_MOBILE_PAYCHECK (MOBILE_PAYCHECK_ID,MOBILEPAY_DATE, MOBILEPAY_TYPE,TICKET_CODE,TICKET_PRICE,TRADE_NO,TRADE_NUM,RESULT_CODE,RESULT_DESC,JSON_STRING) VALUES (1,sysdate,'" + PAYTYPE + "','" + TICKETCODE + "'," + TICKETPRICE + ",'" + _PayCreateResult.trade_no + "','" + _PayCreateResult.trade_num + "','" + _PayCreateResult.result_code + "','" + _PayCreateResult.result_desc + "','" + JSonHelper.ObjectToJson(_PayCreateResult, false) + "')"; _OracleHelper.ExcuteSql(str); } else if (_DataTable.Rows[0]["TRADE_NO"].ToString() == "") { str = "UPDATE HIGHWAY_EXCHANGE.T_MOBILE_PAYCHECK SET TRADE_NO = '" + _PayCreateResult.trade_no + "' WHERE TICKET_CODE = '" + TICKETCODE + "'"; _OracleHelper.ExcuteSql(str); } } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("最终返回数据03-END[createpay_customerscan]:" + JSonHelper.ObjectToJson(_PayCreateResult, false)); return JSonHelper.ObjectToJson(_PayCreateResult, false); } #endregion #region 查询对应的支付 [WebMethod] /// /// 查询参数 /// /// 交易订单号 /// 商户订单号 /// 交易金额 /// 支付方式 /// public string querypay(string TICKETCODE, string OUT_TRADE_NO, string TICKETPRICE, string PAYTYPE = "ALIPAY") { string ResString = null; string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE); //LogHelper.WriteReceiveLog("接收到的参数:订单编码(TICKETCODE):" + TICKETCODE + ",商户订单号(OUT_TRADE_NO):" + OUT_TRADE_NO + // ",金额(TICKETPRICE):" + TICKETPRICE + ",支付方式(USERPAYCODE):" + CommonHelper.GetPayType(PAYTYPE)); PayQueryResult _PayQueryResult = new PayQueryResult(); try { LogHelper.WriteSendLog("支付…查询请求参数-START[querypay]:订单编码(TICKETCODE):" + TICKETCODE + ",金额(TICKETPRICE):" + TICKETPRICE + ",付款方式:" + CommonHelper.GetPayType(PAYTYPE) + ",商户秘钥(term_Code):" + MerchantInfo[0]); //查询数据 ResString = Common.TradeQuery(TICKETCODE, OUT_TRADE_NO, MerchantInfo[0]); if (ResString != null) { JObject _JObject = JObject.Parse(ResString); if (Convert.ToInt32(_JObject["errcode"]) == 0) { switch (_JObject["errmsg"].ToString().ToUpper()) { case "SUCCEED": switch (_JObject["order_info"]["pay_status"].ToString()) { case "支付中": case "用户支付中": LogHelper.WriteSendLog("(" + TICKETCODE + ")等待支付中......"); //System.Threading.Thread.Sleep(4 * 1000); for (int SearchCount = 0; SearchCount < 2; SearchCount++) { _JObject = JObject.Parse(querypay(TICKETCODE, OUT_TRADE_NO)); _PayQueryResult.result_code = _JObject["result_code"].ToString(); _PayQueryResult.result_desc = _JObject["result_desc"].ToString(); _PayQueryResult.trade_no = _JObject["trade_no"].ToString(); _PayQueryResult.trade_num = _JObject["trade_num"].ToString(); if (_PayQueryResult.result_code == ((int)CommonHelper.ResCode.订单待支付).ToString() && SearchCount < 1) { LogHelper.WriteSendLog("(" + TICKETCODE + ")等待支付中......"); System.Threading.Thread.Sleep(1 * 1000); continue; } else { if (_PayQueryResult.result_code == ((int)(CommonHelper.ResCode.成功)).ToString()) { InsertData(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); } break; } } break; case "已支付": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "SUCCESS";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 InsertData(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); break; case "已退款": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "已退款";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 InsertData(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); break; default: _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString();//错误提示 _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; break; } break; default: _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString();//错误提示 _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; break; } } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString();//错误提示 _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("支付…最终数据返回值-END[querypay]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 查询对应的支付-设置轮询次数 [WebMethod] /// /// 查询参数 /// /// 交易订单号 /// 商户订单号 /// 交易金额 /// 支付方式 /// public string querypaynew(string TICKETCODE, string OUT_TRADE_NO, string TICKETPRICE, string PAYTYPE = "ALIPAY", int TotalCount = 6) { string ResString = null; string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE); LogHelper.WriteReceiveLog("支付…查询请求参数-START[querypaynew]:订单编码(TICKETCODE):" + TICKETCODE + ",商户订单号(OUT_TRADE_NO):" + OUT_TRADE_NO + ",金额(TICKETPRICE):" + TICKETPRICE + ",支付方式(USERPAYCODE):" + CommonHelper.GetPayType(PAYTYPE) + ",商户秘钥(term_Code):" + MerchantInfo[0]); PayQueryResult _PayQueryResult = new PayQueryResult(); try { //查询数据 ResString = Common.TradeQuery(TICKETCODE, OUT_TRADE_NO, MerchantInfo[0]); if (ResString != null) { JObject _JObject = JObject.Parse(ResString); if (Convert.ToInt32(_JObject["errcode"]) == 0) { switch (_JObject["errmsg"].ToString().ToUpper()) { case "SUCCEED": switch (_JObject["order_info"]["pay_status"].ToString()) { case "支付中": case "用户支付中": LogHelper.WriteSendLog("(" + TICKETCODE + ")等待支付中......"); //System.Threading.Thread.Sleep(4 * 1000); for (int SearchCount = 0; SearchCount < 2; SearchCount++) { _JObject = JObject.Parse(querypay(TICKETCODE, OUT_TRADE_NO)); _PayQueryResult.result_code = _JObject["result_code"].ToString(); _PayQueryResult.result_desc = _JObject["result_desc"].ToString(); _PayQueryResult.trade_no = _JObject["trade_no"].ToString(); _PayQueryResult.trade_num = _JObject["trade_num"].ToString(); if (_PayQueryResult.result_code == ((int)CommonHelper.ResCode.订单待支付).ToString() && SearchCount < TotalCount) { LogHelper.WriteSendLog("(" + TICKETCODE + ")等待支付中......"); System.Threading.Thread.Sleep(1 * 1000); continue; } else { if (_PayQueryResult.result_code == ((int)(CommonHelper.ResCode.成功)).ToString()) { InsertData(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); } break; } } break; case "已支付": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "SUCCESS";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 InsertData(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); break; case "已退款": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "SUCCESS";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 InsertData(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); break; default: _PayQueryResult.result_code = ((int)CommonHelper.ResCode.支付失败).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; break; } break; default: _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; break; } } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("支付…最终返回值-END[querypaynew]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 查询对应的正扫支付-设置轮询次数 [WebMethod] /// /// 查询参数 /// /// 交易订单号 /// 商户订单号 /// 交易金额 /// 支付方式 /// public string querypay_new(string TICKETCODE, string OUT_TRADE_NO, string TICKETPRICE, string PAYTYPE = "ALIPAY", string StrTotalCount = "1") { string RetString = ""; int TotalCount = int.Parse(StrTotalCount); LogHelper.WriteReceiveLog("正扫支付…查询请求参数-START[querypay_new]:订单编码(TICKETCODE):" + TICKETCODE + ",商户订单号(OUT_TRADE_NO):" + OUT_TRADE_NO + ",金额(TICKETPRICE):" + TICKETPRICE + ",支付方式(USERPAYCODE):" + CommonHelper.GetPayType(PAYTYPE) + "商户秘钥(key):" + _Member_Code); PayQueryResult _PayQueryResult = new PayQueryResult(); try { //查询数据 RetString = Common.TradeQuery(TICKETCODE, OUT_TRADE_NO, _Member_Code); if (!string.IsNullOrEmpty(RetString)) { JObject _JObject = JObject.Parse(RetString); int errcode = Convert.ToInt32(_JObject["errcode"]); if (errcode == 0) { switch (_JObject["errmsg"].ToString().ToUpper()) { case "SUCCEED": switch (_JObject["order_info"]["pay_status"].ToString()) { case "支付中": LogHelper.WriteSendLog("(" + TICKETCODE + ")等待支付中......"); //System.Threading.Thread.Sleep(4 * 1000); for (int SearchCount = 0; SearchCount < TotalCount; SearchCount++) { _JObject = JObject.Parse(querypay(TICKETCODE, OUT_TRADE_NO)); _PayQueryResult.result_code = _JObject["result_code"].ToString(); _PayQueryResult.result_desc = _JObject["result_desc"].ToString(); _PayQueryResult.trade_no = _JObject["trade_no"].ToString(); _PayQueryResult.trade_num = _JObject["trade_num"].ToString(); if (_PayQueryResult.result_code == ((int)CommonHelper.ResCode.订单待支付).ToString() && SearchCount < TotalCount) { LogHelper.WriteSendLog("(" + TICKETCODE + ")等待支付中......"); System.Threading.Thread.Sleep(1 * 1000); continue; } else { if (_PayQueryResult.result_code == ((int)(CommonHelper.ResCode.成功)).ToString()) { InsertData(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); } break; } } break; case "已支付": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "SUCCESS";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 InsertData_customerscan(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); break; case "已退款": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "已退款";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 InsertData_customerscan(TICKETCODE, PAYTYPE, _JObject, null, _PayQueryResult, TICKETPRICE); break; default: _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; break; } break; default: _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; break; } } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = OUT_TRADE_NO; } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = OUT_TRADE_NO; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + RetString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = OUT_TRADE_NO; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("正扫支付…最终返回值-END[querypay_new]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 移动支付退款-反扫 [WebMethod] /// /// 退款参数 /// /// 平台订单号 /// 退货订单号 /// 交易金额 /// 支付方式 /// public string refundpay(string mchnt_order_no, string refund_order_no, string refund_amt, string order_type) { string ResString = null; string ticket_price = ""; string[] MerchantInfo = Common.GetMerchantInfo(refund_order_no); string PayTime = refund_order_no.Substring(refund_order_no.Length - 14, 14); PayTime = PayTime.Substring(0, 4) + "/" + PayTime.Substring(4, 2) + "/" + PayTime.Substring(6, 2) + " " + PayTime.Substring(8, 2) + ":" + PayTime.Substring(10, 2) + ":" + PayTime.Substring(12, 2); try { LogHelper.WriteReceiveLog("反扫…退款-START[refundpay]:订单编码(TICKETCODE):" + refund_order_no + ",退款金额(TICKETPRICE):" + refund_amt + "," + CommonHelper.GetPayType(order_type) + "退款码(USERPAYCODE):" + mchnt_order_no + "商户秘钥(term_Code):" + MerchantInfo[0]); ticket_price = Math.Round(decimal.Parse(refund_amt), 2).ToString(); } catch { } if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd"))) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd")); } CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\R" + refund_order_no + ".txt", ""); JObject _JObject = new JObject(); PayQueryResult _PayQueryResult = new PayQueryResult(); try { ResString = Common.TradeRefund("001", "001", ticket_price, "商品退款", "", mchnt_order_no, refund_order_no, MerchantInfo[0]); //查询数据 if (ResString != null) { _JObject = JObject.Parse(ResString); if (_JObject["errcode"].ToString() == "0") { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "SUCCESS"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = mchnt_order_no; _PayQueryResult.trade_num = ""; } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常:" + ResString; _PayQueryResult.trade_no = mchnt_order_no; _PayQueryResult.trade_num = ""; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = mchnt_order_no; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } try { //本地数据库 OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + order_type + "',TO_DATE('" + PayTime + "','YYYY/MM/DD HH24:MI:SS'),'" + refund_order_no.Substring(0, 6) + "','" + refund_order_no.Substring(6, 6) + "','" + (refund_order_no.Substring(12, 4).StartsWith("0") ? refund_order_no.Substring(13, 3) : refund_order_no.Substring(12, 4)) + "','" + refund_order_no + "',-" + refund_amt + ",'" + _PayQueryResult.result_desc + "(" + mchnt_order_no + ")'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; _OracleHelper.ExcuteSql(str); CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\R" + refund_order_no + ".txt", _PayQueryResult.result_desc); } catch (Exception ex) { string LocalPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\bin\\ErrorLog"; if (!Directory.Exists(LocalPath)) { Directory.CreateDirectory(LocalPath); } if (!File.Exists(LocalPath + "\\" + refund_order_no + ".txt")) { CommonHelper.SaveTextFile("bin\\ErrorLog\\" + refund_order_no + ".txt", refund_order_no + "|" + order_type + "|-" + refund_amt + "|" + _PayQueryResult.result_code + "|" + _PayQueryResult.result_desc + "(" + mchnt_order_no + ")|" + _PayQueryResult.trade_no + "|" + _PayQueryResult.trade_num + "|" + JSonHelper.ObjectToJson(_PayQueryResult, false) + "|" + ((int)CommonHelper.MobilePayOperators.kwypay).ToString()); } LogHelper.WriteSendLog("退款单号:" + refund_order_no + "," + ex.Message); try { //总部服务器数据库 OracleHelper _OracleHelper = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3]); string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) VALUES(1,'" + order_type + "',TO_DATE('" + PayTime + "','YYYY/MM/DD HH24:MI:SS'),'" + refund_order_no.Substring(0, 6) + "','" + refund_order_no.Substring(6, 6) + "','" + (refund_order_no.Substring(12, 4).StartsWith("0") ? refund_order_no.Substring(13, 3) : refund_order_no.Substring(12, 4)) + "','" + refund_order_no + "',-" + refund_amt + ",'" + _PayQueryResult.result_desc + "(" + mchnt_order_no + ")'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; _OracleHelper.ExcuteSql(str); } catch (Exception _Exception) { LogHelper.WriteSendLog(_Exception.Message); } CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\R" + refund_order_no + ".txt", _PayQueryResult.result_desc + "(" + mchnt_order_no + ")"); } LogHelper.WriteSendLog("反扫…最终返回值-END[refundpay]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 移动支付退款(正扫) [WebMethod] /// /// 退款参数 /// /// 交易订单号 /// 交易金额 /// 退货订单号 /// 支付方式 /// public string refundpay_customerscan(string mchnt_order_no, string refund_order_no, string refund_amt, string order_type) { string ResString = "", ticket_price = ""; string PayTime = refund_order_no.Substring(refund_order_no.Length - 14, 14); PayTime = PayTime.Substring(0, 4) + "/" + PayTime.Substring(4, 2) + "/" + PayTime.Substring(6, 2) + " " + PayTime.Substring(8, 2) + ":" + PayTime.Substring(10, 2) + ":" + PayTime.Substring(12, 2); try { ticket_price = Math.Round(decimal.Parse(refund_amt), 2).ToString(); } catch { } LogHelper.WriteReceiveLog("正扫…退款请求参数-START[refundpay_customerscan]:订单编码(TICKETCODE):" + refund_order_no + ",退款金额(TICKETPRICE):" + refund_amt + "," + CommonHelper.GetPayType(order_type) + "退款码(USERPAYCODE):" + mchnt_order_no + "商户秘钥(key):" + _Member_Code); if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd"))) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd")); } CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\R" + refund_order_no + ".txt", ""); JObject _JObject = new JObject(); PayQueryResult _PayQueryResult = new PayQueryResult(); try { ResString = Common.TradeRefund("001", "001", ticket_price, "商品退款", "", mchnt_order_no, "R" + refund_order_no, _Member_Code); //查询数据 if (ResString != null) { _JObject = JObject.Parse(ResString); if (_JObject["errcode"].ToString() == "0") { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "SUCCESS"; } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = mchnt_order_no; _PayQueryResult.trade_num = ""; } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常"; _PayQueryResult.trade_no = mchnt_order_no; _PayQueryResult.trade_num = ""; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = mchnt_order_no; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } try { //本地数据库 OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = "SELECT * FROM HIGHWAY_EXCHANGE.T_MOBILE_PAYCHECK WHERE TICKET_CODE = 'R" + refund_order_no + "'"; DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(str, "T_MOBILE_PAYCHECK").Tables[0]; if (_DataTable.Rows.Count == 0) { str = @"INSERT INTO HIGHWAY_EXCHANGE.T_MOBILE_PAYCHECK (MOBILE_PAYCHECK_ID,MOBILEPAY_DATE, MOBILEPAY_TYPE,TICKET_CODE,TICKET_PRICE,TRADE_NO,TRADE_NUM,RESULT_CODE,RESULT_DESC,JSON_STRING) VALUES (1,SYSDATE,'" + order_type + "','R" + refund_order_no + "',-" + refund_amt + ",'" + _PayQueryResult.trade_no + "','" + _PayQueryResult.trade_num + "','" + _PayQueryResult.result_code + "','" + _PayQueryResult.result_desc + "','" + JSonHelper.ObjectToJson(_PayQueryResult, false) + "')"; _OracleHelper.ExcuteSql(str); } if (_PayQueryResult.result_code == "100") { InsertData_customerscan(refund_order_no, order_type, _JObject, null, _PayQueryResult, "-" + refund_amt, "refund"); } } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); if (_PayQueryResult.result_code == "100") { InsertData_customerscan(refund_order_no, order_type, _JObject, null, _PayQueryResult, "-" + refund_amt); } } LogHelper.WriteSendLog("正扫退款…最终返回值-END[refundpay_customerscan]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 退款信息查询 /// /// 退款参数 /// /// 商户订单号 /// 平台订单号 /// 商户退款单号 /// 平台退款单号 /// 支付方式 /// [WebMethod] public string refundquery(string out_trade_no, string transaction_id, string out_refund_no, string refund_id, string refund_amt, string order_type) { string ResString = null; string[] MerchantInfo = Common.GetMerchantInfo(out_refund_no); LogHelper.WriteSendLog("退款查询…请求参数-START[refundquery]:商户订单号(out_trade_no):" + out_trade_no + ",平台订单号(transaction_id):" + transaction_id + ",商户退款单号(out_refund_no):" + out_refund_no + ",平台退款单号(refund_id):" + refund_id + ",商户编码(memberCode):" + MerchantInfo[0] + ",商户秘钥(term_Code):" + MerchantInfo[1]); if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd"))) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd")); } CommonHelper.SaveTextFile("ErrorLog\\" + DateTime.Now.ToString("yyyyMMdd") + "\\R" + out_refund_no + ".txt", ""); PayQueryResult _PayQueryResult = new PayQueryResult(); try { ResString = Common.RefundQuery("", "", out_refund_no, MerchantInfo[0]); //查询数据 if (ResString != null) { JObject _JObject = JObject.Parse(ResString); if (_JObject["errcode"].ToString() == "0") { if (_JObject["status"].ToString() == "退款成功") { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.成功).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = out_refund_no; _PayQueryResult.result_desc = "SUCCESS"; } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.支付失败).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = out_refund_no; _PayQueryResult.result_desc = _JObject["remark"].ToString(); } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.支付失败).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = out_refund_no; _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = out_refund_no; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = out_refund_no; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("退款查询…最终返回值[refundquery]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 获取门店对应商户号 /// /// 获取门店商户号及支付服务商 /// /// /// [WebMethod] public string GetMerchant(string serverPartCode, string shopCode) { PayCreateResult _PayCreateResult = new PayCreateResult(); if (_SERVERPARTCODE.Contains(serverPartCode)) { string[] _MerchantInfo = Common.GetMerchantInfo(serverPartCode, shopCode); _PayCreateResult.result_code = ((int)CommonHelper.ResCode.成功).ToString(); _PayCreateResult.result_desc = "1005"; _PayCreateResult.trade_no = _MerchantInfo[0]; _PayCreateResult.trade_num = _MerchantInfo[1]; } else { _PayCreateResult.result_code = ((int)CommonHelper.ResCode.用户不存在).ToString(); _PayCreateResult.result_desc = "1005"; } return JSonHelper.ObjectToJson(_PayCreateResult, false); } #endregion #region 查询方法 private string querypay(string TICKETCODE, string OUT_TRADE_NO, string[] MerchantInfo = null) { string ResString = null; if (MerchantInfo == null) { MerchantInfo = Common.GetMerchantInfo(TICKETCODE); } LogHelper.WriteSendLog("查询…请求参数-START[querypay]:(TICKETCODE):" + TICKETCODE + ",OUT_TRADE_NO:" + OUT_TRADE_NO + ",商户秘钥(term_Code):" + MerchantInfo[0]); ResString = Common.TradeQuery(TICKETCODE, OUT_TRADE_NO, MerchantInfo[0]); PayQueryResult _PayQueryResult = new PayQueryResult(); try { //查询数据 if (ResString != null) { JObject _JObject = JObject.Parse(ResString); if (Convert.ToInt32(_JObject["errcode"]) == 0) { switch (_JObject["errmsg"].ToString().ToUpper()) { case "SUCCEED": switch (_JObject["order_info"]["pay_status"].ToString()) { case "支付中": case "用户支付中": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.订单待支付)).ToString(); _PayQueryResult.result_desc = "USERPAYING"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = TICKETCODE; break; case "已支付": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "SUCCESS";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 break; case "已退款": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "已退款";//支付状态 _PayQueryResult.trade_no = _JObject["order_info"]["transaction_id"].ToString();//客无忧订单号 _PayQueryResult.trade_num = _JObject["order_info"]["out_no"].ToString();//第三方订单号 break; default: _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = TICKETCODE; break; } break; default: _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = TICKETCODE; break; } } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = TICKETCODE; } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("查询…最终返回值-END[querypay]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 插入数据(反扫、正扫) private void InsertData(string TICKETCODE, string PAYTYPE, JObject _JObject, PayCreateResult _PayCreateResult, PayQueryResult _PayQueryResult, string TICKETPRICE = null) { string PayTime = TICKETCODE.Substring(TICKETCODE.Length - 14, 14); string FilePath = "ErrorLog\\" + PayTime.Substring(0, 8); string result_desc = (_PayQueryResult == null ? (_PayCreateResult == null ? "" : (_PayCreateResult.result_code == "100" ? "SUCCESS" : _PayCreateResult.result_desc)) : (_PayQueryResult.result_code == "100" ? "SUCCESS" : _PayQueryResult.result_desc)); try { try { TICKETPRICE = string.IsNullOrEmpty(TICKETPRICE) ? (double.Parse( _JObject["order_info"]["price"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE; } catch { TICKETPRICE = "NULL"; } try { //读取移动支付订单号查询记录缓存 List _MobilePayList = (List)CacheHelper.Get("MobilePay"); if (_MobilePayList == null) { _MobilePayList = new List(); } //判断是否已经存在订单查询记录或查询结果是否交易成功,如从未查询过或查询结果为交易成功则记录交易查询日志 if (!_MobilePayList.Contains(TICKETCODE) || _PayQueryResult.result_code == ((int)CommonHelper.ResCode.成功).ToString()) { //写入交易记录至文本日志 if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\InsertData")) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\InsertData"); } string filename = System.AppDomain.CurrentDomain.BaseDirectory + "\\InsertData\\" + TICKETCODE + ".txt"; FileInfo _FileInfo = new FileInfo(filename); if (_FileInfo.Exists) { _FileInfo.Delete(); } CommonHelper.SaveTextFile("InsertData\\" + TICKETCODE + ".txt", TICKETCODE + "|" + PAYTYPE + "|" + TICKETPRICE + "|" + (_PayCreateResult == null ? (_PayQueryResult == null ? "" : _PayQueryResult.result_code) : _PayCreateResult.result_code) + "|" + result_desc + "|" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "|" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_num) : _PayQueryResult.trade_num) + "|" + JSonHelper.ObjectToJson(_PayQueryResult, false) + "|" + ((int)CommonHelper.MobilePayOperators.kwypay).ToString()); //更新缓存记录,写入移动支付交易订单信息 if (!_MobilePayList.Contains(TICKETCODE)) { _MobilePayList.Add(TICKETCODE); CacheHelper.Set("MobilePay", _MobilePayList); } } } catch { //支付时间 PayTime = PayTime.Substring(0, 4) + "/" + PayTime.Substring(4, 2) + "/" + PayTime.Substring(6, 2) + " " + PayTime.Substring(8, 2) + ":" + PayTime.Substring(10, 2) + ":" + PayTime.Substring(12, 2); OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); //插入本地数据库 using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT TICKETCODE,UPPER(SELLDATA_EXTRA_DESC) AS SELLDATA_EXTRA_DESC " + "FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0]) { if (_DataTable.Rows.Count == 0 || _DataTable.Select("SELLDATA_EXTRA_DESC LIKE 'SUCCESS%'").Count() == 0) { string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + "','YYYY/MM/DD HH24:MI:SS'),'" + TICKETCODE.Substring(0, 6) + "','" + (TICKETCODE.Length == 28 ? TICKETCODE.Substring(6, 4) : TICKETCODE.Substring(6, 6)) + "','" + (TICKETCODE.Length == 28 ? (TICKETCODE.Substring(10, 4).StartsWith("0") ? TICKETCODE.Substring(11, 3) : TICKETCODE.Substring(10, 4)) : (TICKETCODE.Substring(12, 4).StartsWith("0") ? TICKETCODE.Substring(13, 3) : TICKETCODE.Substring(12, 4))) + "','" + TICKETCODE + "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + TICKETPRICE + ",'" + result_desc + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; _OracleHelper.ExcuteSql(str); } } #region 插入本地数据库(原方式已注释) //if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0].Rows.Count == 0) //{ // //无支付记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),'" + TICKETCODE.Substring(0, 6) + "','" + TICKETCODE.Substring(6, 6) + // "','" + (TICKETCODE.Substring(12, 4).StartsWith("0") ? TICKETCODE.Substring(13, 3) : // TICKETCODE.Substring(12, 4)) + "','" + TICKETCODE + "','" + (_PayQueryResult == null ? // (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + // (string.IsNullOrEmpty(TICKETPRICE) ? (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + result_desc + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} //else if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + // "' AND UPPER(SELLDATA_EXTRA_DESC) LIKE 'SUCCESS%'").Tables[0].Rows.Count == 0) //{ // //无支付成功记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),'" + TICKETCODE.Substring(0, 6) + "','" + TICKETCODE.Substring(6, 6) + // "','" + (TICKETCODE.Substring(12, 4).StartsWith("0") ? TICKETCODE.Substring(13, 3) : // TICKETCODE.Substring(12, 4)) + "','" + TICKETCODE + "','" + (_PayQueryResult == null ? // (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + // (string.IsNullOrEmpty(TICKETPRICE) ? (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + result_desc + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} #endregion } if (Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\" + FilePath)) { CommonHelper.SaveTextFile(FilePath + "\\" + TICKETCODE + ".txt", result_desc); } } catch (Exception ex) { string LocalPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\bin\\ErrorLog"; if (!Directory.Exists(LocalPath)) { Directory.CreateDirectory(LocalPath); } if (!File.Exists(LocalPath + "\\" + TICKETCODE + ".txt")) { CommonHelper.SaveTextFile("bin\\ErrorLog\\" + TICKETCODE + ".txt", TICKETCODE + "|" + PAYTYPE + "|" + TICKETPRICE + "|" + (_PayCreateResult == null ? (_PayQueryResult == null ? "" : _PayQueryResult.result_code + "|" + _PayQueryResult.result_desc + "|" + _PayQueryResult.trade_no + "|" + _PayQueryResult.trade_num + "|" + JSonHelper.ObjectToJson(_PayQueryResult, false)) : _PayCreateResult.result_code + "|" + _PayCreateResult.result_desc + "|" + _PayCreateResult.trade_no + "|" + _PayCreateResult.trade_num + "|" + JSonHelper.ObjectToJson(_PayCreateResult, false)) + "|" + ((int)CommonHelper.MobilePayOperators.kwypay).ToString()); } LogHelper.WriteSendLog("订单号:" + TICKETCODE + "," + ex.Message); try { OracleHelper _OracleHelper = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3]); using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT TICKETCODE,UPPER(SELLDATA_EXTRA_DESC) AS SELLDATA_EXTRA_DESC " + "FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA " + "WHERE TICKETCODE = '" + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0]) { if (_DataTable.Rows.Count == 0 || _DataTable.Select("SELLDATA_EXTRA_DESC LIKE 'SUCCESS%'").Count() == 0) { string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + "','YYYY/MM/DD HH24:MI:SS'),'" + TICKETCODE.Substring(0, 6) + "','" + (TICKETCODE.Length == 28 ? TICKETCODE.Substring(6, 4) : TICKETCODE.Substring(6, 6)) + "','" + (TICKETCODE.Length == 28 ? (TICKETCODE.Substring(10, 4).StartsWith("0") ? TICKETCODE.Substring(11, 3) : TICKETCODE.Substring(10, 4)) : (TICKETCODE.Substring(12, 4).StartsWith("0") ? TICKETCODE.Substring(13, 3) : TICKETCODE.Substring(12, 4))) + "','" + TICKETCODE + "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + TICKETPRICE + ",'" + result_desc + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; _OracleHelper.ExcuteSql(str); } } #region 插入总部服务器数据库(原方式已注释) //if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0].Rows.Count == 0) //{ // //无支付记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),'" + TICKETCODE.Substring(0, 6) + "','" + TICKETCODE.Substring(6, 6) + // "','" + (TICKETCODE.Substring(12, 4).StartsWith("0") ? TICKETCODE.Substring(13, 3) : // TICKETCODE.Substring(12, 4)) + "','" + TICKETCODE + "','" + (_PayQueryResult == null ? // (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + // (string.IsNullOrEmpty(TICKETPRICE) ? (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + result_desc + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} //else if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "' AND UPPER(SELLDATA_EXTRA_DESC) LIKE 'SUCCESS%'" // ).Tables[0].Rows.Count == 0) //{ // //无支付成功记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),'" + TICKETCODE.Substring(0, 6) + "','" + TICKETCODE.Substring(6, 6) + // "','" + (TICKETCODE.Substring(12, 4).StartsWith("0") ? TICKETCODE.Substring(13, 3) : // TICKETCODE.Substring(12, 4)) + "','" + TICKETCODE + "','" + (_PayQueryResult == null ? // (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + // (string.IsNullOrEmpty(TICKETPRICE) ? (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + result_desc + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} #endregion if (Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\" + FilePath)) { CommonHelper.SaveTextFile(FilePath + "\\" + TICKETCODE + ".txt", result_desc); } } catch (Exception _Exception) { LogHelper.WriteSendLog("订单号:" + TICKETCODE + "," + _Exception.Message); } } } private void InsertData_customerscan(string TICKETCODE, string PAYTYPE, JObject _JObject, PayCreateResult _PayCreateResult, PayQueryResult _PayQueryResult, string TICKETPRICE = null, string PayState = "pay") { string PayTime = DateTime.Now.ToString(); #region 插入支付记录 try { //本地数据库 OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT TICKETCODE,UPPER(SELLDATA_EXTRA_DESC) AS SELLDATA_EXTRA_DESC " + "FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + (PayState == "refund" ? "R" : "") + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0]) { if (_DataTable.Rows.Count == 0 || _DataTable.Select("SELLDATA_EXTRA_DESC LIKE 'SUCCESS%'").Count() == 0) { string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + "','YYYY/MM/DD HH24:MI:SS'),NULL,NULL,NULL,'" + (PayState == "refund" ? "R" : "") + TICKETCODE + "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + (string.IsNullOrEmpty(TICKETPRICE) ? (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + ",'" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.result_desc) : _PayQueryResult.result_desc) + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; _OracleHelper.ExcuteSql(str); } } #region 插入本地数据库(原方式) //if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // (PayState == "refund" ? "R" : "") + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0].Rows.Count == 0) //{ // //无支付记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),NULL,NULL,NULL,'" + (PayState == "refund" ? "R" : "") + TICKETCODE + // "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : // _PayQueryResult.trade_no) + "'," + (string.IsNullOrEmpty(TICKETPRICE) ? // (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.result_desc) : // _PayQueryResult.result_desc) + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} //else if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // (PayState == "refund" ? "R" : "") + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + // "' AND UPPER(SELLDATA_EXTRA_DESC) LIKE 'SUCCESS%'").Tables[0].Rows.Count == 0) //{ // //无支付成功记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),NULL,NULL,NULL,'" + (PayState == "refund" ? "R" : "") + TICKETCODE + // "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : // _PayQueryResult.trade_no) + "'," + (string.IsNullOrEmpty(TICKETPRICE) ? // (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.result_desc) : // _PayQueryResult.result_desc) + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} #endregion } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); try { //总部服务器数据库 OracleHelper _OracleHelper = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3]); using (DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT TICKETCODE,UPPER(SELLDATA_EXTRA_DESC) AS SELLDATA_EXTRA_DESC " + "FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + (PayState == "refund" ? "R" : "") + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0]) { if (_DataTable.Rows.Count == 0 || _DataTable.Select("SELLDATA_EXTRA_DESC LIKE 'SUCCESS%'").Count() == 0) { string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + "','YYYY/MM/DD HH24:MI:SS'),NULL,NULL,NULL,'" + (PayState == "refund" ? "R" : "") + TICKETCODE + "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : _PayQueryResult.trade_no) + "'," + (string.IsNullOrEmpty(TICKETPRICE) ? (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + ",'" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.result_desc) : _PayQueryResult.result_desc) + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; _OracleHelper.ExcuteSql(str); } } #region 插入总部服务器数据库(原方式) //if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // (PayState == "refund" ? "R" : "") + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + "'").Tables[0].Rows.Count == 0) //{ // //无支付记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),NULL,NULL,NULL,'" + (PayState == "refund" ? "R" : "") + TICKETCODE + // "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : // _PayQueryResult.trade_no) + "'," + (string.IsNullOrEmpty(TICKETPRICE) ? // (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.result_desc) : // _PayQueryResult.result_desc) + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} //else if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA WHERE TICKETCODE = '" + // (PayState == "refund" ? "R" : "") + TICKETCODE + "' AND SELLDATA_TYPE = '" + PAYTYPE + // "' AND UPPER(SELLDATA_EXTRA_DESC) LIKE 'SUCCESS%'").Tables[0].Rows.Count == 0) //{ // //无支付成功记录 // string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA (SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE, // SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE,COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC,LINENUM) // VALUES(HIGHWAY_EXCHANGE.SEQ_SELLDATA_EXTRA.NEXTVAL,'" + PAYTYPE + "',TO_DATE('" + PayTime + // "','YYYY/MM/DD HH24:MI:SS'),NULL,NULL,NULL,'" + (PayState == "refund" ? "R" : "") + TICKETCODE + // "','" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.trade_no) : // _PayQueryResult.trade_no) + "'," + (string.IsNullOrEmpty(TICKETPRICE) ? // (double.Parse(_JObject["data"]["total_fee"].ToString()) / 100.00).ToString("0.00") : TICKETPRICE) + // ",'" + (_PayQueryResult == null ? (_PayCreateResult == null ? "" : _PayCreateResult.result_desc) : // _PayQueryResult.result_desc) + "'," + (int)CommonHelper.MobilePayOperators.kwypay + ")"; // _OracleHelper.ExcuteSql(str); //} #endregion } catch (Exception _Exception) { LogHelper.WriteSendLog(_Exception.Message); } } #endregion try { OracleHelper _OracleHelper = new OracleHelper("183.129.232.107", "orcl", "MOBILESERVICE_PLATFORM", "qrwl"); string SqlString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_CONSUMPTIONRECORD WHERE TICKET_CODE = '" + TICKETCODE + "' AND NVL(CONSUMPTIONRECORD_TYPE,1000) = 1000"; string _MEMBERSHIP_ID = "", _MEMBERSHIP_TELEPHONE = ""; TICKETPRICE = (!string.IsNullOrEmpty(TICKETPRICE) ? TICKETPRICE : (double.Parse(_JObject["order_info"]["price"].ToString()) / 100.00).ToString("0.00")); DataTable DTCONSUMPTIONRECORD = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (DTCONSUMPTIONRECORD.Rows.Count > 0 && DTCONSUMPTIONRECORD.Rows[0]["CONSUMPTIONRECORD_STATE"].ToString() == "1005") { #region 获取会员信息 SqlString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_MEMBERSHIP WHERE SERVERPARTSHOP_ID = '" + TICKETCODE.Split('-')[1] + "|330000' AND MEMBERSHIP_TYPE = 2020"; DataTable DTMEMBERSHIP = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (DTMEMBERSHIP.Rows.Count == 0) { _MEMBERSHIP_ID = _OracleHelper.ExcuteSqlGetDataSet( "SELECT MOBILESERVICE_PLATFORM.SEQ_MEMBERSHIP.NEXTVAL FROM DUAL").Tables[0].Rows[0][0].ToString(); SqlString = string.Format(@"INSERT INTO MOBILESERVICE_PLATFORM.T_MEMBERSHIP (MEMBERSHIP_ID,RTWECHATPUSH_ID, SERVERPARTSHOP_ID,MEMBERSHIP_TYPE,MEMBERSHIP_CODE,MEMBERSHIP_NAME,MEMBERSHIP_CARD,MEMBERSHIP_LEVEL, MEMBERSHIP_PASSWORD,MEMBERSHIP_POINT,ACCOUNT_BALANCE,MEMBERSHIP_SEX,MEMBERSHIP_BIRTHDAY, MEMBERSHIP_MOBILEPHONE,MEMBERSHIP_TELEPHONE,CERTIFICATE_NUMBER,MEMBERSHIP_EMAIL,MEMBERSHIP_ADDRESS, RECOMMEND_ID,RECOMMEND_NAME,MEMBERSHIP_STATE,ADDTIME,STAFF_ID,STAFF_NAME,OPERATE_DATE,MEMBERSHIP_DESC) SELECT {0},NULL,SERVERPARTSHOP_ID || '|330000',2020,NULL,SHOPNAME,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,1000,SYSDATE,NULL,'自动添加',SYSDATE,NULL FROM HIGHWAY_STORAGE.T_SERVERPARTSHOP@HWS WHERE SERVERPARTSHOP_ID = " + TICKETCODE.Split('-')[1], _MEMBERSHIP_ID); _OracleHelper.ExcuteSql(SqlString); } else { _MEMBERSHIP_ID = DTMEMBERSHIP.Rows[0]["MEMBERSHIP_ID"].ToString(); _MEMBERSHIP_TELEPHONE = DTMEMBERSHIP.Rows[0]["MEMBERSHIP_TELEPHONE"].ToString(); } #endregion #region 更新消费记录 SqlString = string.Format(@"UPDATE MOBILESERVICE_PLATFORM.T_CONSUMPTIONRECORD SET ( MEMBERSHIP_ID,MEMBERSHIP_CARD,CONSUMPTIONRECORD_TYPE,CONSUMPTIONRECORD_DATE, SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,SERVERPARTSHOP_ID,SHOPCODE,SHOPNAME, CURRENT_SCORE,CONSUMPTIONRECORD_STATE) = ( SELECT A.MEMBERSHIP_ID,A.MEMBERSHIP_CARD,1000,TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS'), C.SERVERPART_ID,C.SERVERPART_CODE,C.SERVERPART_NAME, B.SERVERPARTSHOP_ID,B.SHOPCODE,B.SHOPNAME,{1},{2} FROM MOBILESERVICE_PLATFORM.T_MEMBERSHIP A, HIGHWAY_STORAGE.T_SERVERPARTSHOP@HWS B, HIGHWAY_STORAGE.T_SERVERPART@HWS C WHERE A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID || '|330000' AND B.SERVERPART_ID = C.SERVERPART_ID AND MEMBERSHIP_ID = {3}) WHERE CONSUMPTIONRECORD_ID = " + DTCONSUMPTIONRECORD.Rows[0]["CONSUMPTIONRECORD_ID"].ToString(), PayTime, TICKETPRICE, PayState == "refund" ? "9999" : "1010", _MEMBERSHIP_ID); _OracleHelper.ExcuteSql(SqlString); #endregion #region 更新会员积分 SqlString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_MEMBERSHIPSCORE WHERE MEMBERSHIP_ID = " + _MEMBERSHIP_ID + " AND SCORE_RULE = 1000 AND SERVERPARTSHOP_ID = " + TICKETCODE.Split('-')[1]; DataTable DTMEMBERSHIPSCORE = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (DTMEMBERSHIPSCORE.Rows.Count == 0) { SqlString = string.Format(@"INSERT INTO MOBILESERVICE_PLATFORM.T_MEMBERSHIPSCORE ( MEMBERSHIPSCORE_ID,SERVERPARTSHOP_ID,PROVINCE_CODE,MEMBERSHIP_ID,SCORE_TYPE,SCORE_RULE, MEMBERSHIPSCORE_CODE,MEMBERSHIP_SCORE,MEMBERSHIPSCORE_DESC) SELECT MOBILESERVICE_PLATFORM.SEQ_MEMBERSHIPSCORE.NEXTVAL,{0},'330000', MEMBERSHIP_ID,1,1000,NULL,{1},NULL FROM MOBILESERVICE_PLATFORM.T_MEMBERSHIP WHERE MEMBERSHIP_ID = " + _MEMBERSHIP_ID, TICKETCODE.Split('-')[1], TICKETPRICE); _OracleHelper.ExcuteSql(SqlString); if (_PayCreateResult != null) { _PayCreateResult.trade_score = TICKETPRICE; } else if (_PayQueryResult != null) { _PayQueryResult.trade_score = TICKETPRICE; } } else { SqlString = "UPDATE MOBILESERVICE_PLATFORM.T_MEMBERSHIPSCORE SET MEMBERSHIP_SCORE = MEMBERSHIP_SCORE + " + TICKETPRICE + " WHERE MEMBERSHIPSCORE_ID = " + DTMEMBERSHIPSCORE.Rows[0]["MEMBERSHIPSCORE_ID"].ToString(); _OracleHelper.ExcuteSql(SqlString); if (_PayCreateResult != null) { _PayCreateResult.trade_score = (decimal.Parse( string.IsNullOrEmpty(DTMEMBERSHIPSCORE.Rows[0]["MEMBERSHIP_SCORE"].ToString()) ? "0" : DTMEMBERSHIPSCORE.Rows[0]["MEMBERSHIP_SCORE"].ToString()) + decimal.Parse(TICKETPRICE)).ToString(); } else if (_PayQueryResult != null) { _PayQueryResult.trade_score = (decimal.Parse( string.IsNullOrEmpty(DTMEMBERSHIPSCORE.Rows[0]["MEMBERSHIP_SCORE"].ToString()) ? "0" : DTMEMBERSHIPSCORE.Rows[0]["MEMBERSHIP_SCORE"].ToString()) + decimal.Parse(TICKETPRICE)).ToString(); } } #endregion } else if (PayState == "refund" && DTCONSUMPTIONRECORD.Rows[0]["CONSUMPTIONRECORD_STATE"].ToString() != "9999") { #region 获取会员信息 SqlString = "SELECT MEMBERSHIP_ID FROM MOBILESERVICE_PLATFORM.T_MEMBERSHIP WHERE SERVERPARTSHOP_ID = '" + TICKETCODE.Split('-')[1] + "|330000' AND MEMBERSHIP_TYPE = 2020"; DataTable DTMEMBERSHIP = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (DTMEMBERSHIP.Rows.Count == 0) { _MEMBERSHIP_ID = _OracleHelper.ExcuteSqlGetDataSet( "SELECT MOBILESERVICE_PLATFORM.SEQ_MEMBERSHIP.NEXTVAL FROM DUAL").Tables[0].Rows[0][0].ToString(); SqlString = string.Format(@"INSERT INTO MOBILESERVICE_PLATFORM.T_MEMBERSHIP (MEMBERSHIP_ID,RTWECHATPUSH_ID, SERVERPARTSHOP_ID,MEMBERSHIP_TYPE,MEMBERSHIP_CODE,MEMBERSHIP_NAME,MEMBERSHIP_CARD,MEMBERSHIP_LEVEL, MEMBERSHIP_PASSWORD,MEMBERSHIP_POINT,ACCOUNT_BALANCE,MEMBERSHIP_SEX,MEMBERSHIP_BIRTHDAY, MEMBERSHIP_MOBILEPHONE,MEMBERSHIP_TELEPHONE,CERTIFICATE_NUMBER,MEMBERSHIP_EMAIL,MEMBERSHIP_ADDRESS, RECOMMEND_ID,RECOMMEND_NAME,MEMBERSHIP_STATE,ADDTIME,STAFF_ID,STAFF_NAME,OPERATE_DATE,MEMBERSHIP_DESC) SELECT {0},NULL,SERVERPARTSHOP_ID || '|330000',2020,NULL,SHOPNAME,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,1000,SYSDATE,NULL,'自动添加',SYSDATE,NULL FROM HIGHWAY_STORAGE.T_SERVERPARTSHOP@HWS WHERE SERVERPARTSHOP_ID = " + TICKETCODE.Split('-')[1], _MEMBERSHIP_ID); _OracleHelper.ExcuteSql(SqlString); } else { _MEMBERSHIP_ID = DTMEMBERSHIP.Rows[0][0].ToString(); } #endregion #region 更新消费记录 SqlString = @"UPDATE MOBILESERVICE_PLATFORM.T_CONSUMPTIONRECORD SET CONSUMPTIONRECORD_STATE = 9999 WHERE CONSUMPTIONRECORD_ID = " + DTCONSUMPTIONRECORD.Rows[0]["CONSUMPTIONRECORD_ID"].ToString(); _OracleHelper.ExcuteSql(SqlString); #endregion #region 更新会员积分 SqlString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_MEMBERSHIPSCORE WHERE MEMBERSHIP_ID = " + _MEMBERSHIP_ID + " AND SCORE_RULE = 1000 AND SERVERPARTSHOP_ID = " + TICKETCODE.Split('-')[1]; DataTable DTMEMBERSHIPSCORE = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (DTMEMBERSHIPSCORE.Rows.Count > 0) { SqlString = "UPDATE MOBILESERVICE_PLATFORM.T_MEMBERSHIPSCORE SET MEMBERSHIP_SCORE = MEMBERSHIP_SCORE + " + TICKETPRICE + " WHERE MEMBERSHIPSCORE_ID = " + DTMEMBERSHIPSCORE.Rows[0]["MEMBERSHIPSCORE_ID"].ToString(); _OracleHelper.ExcuteSql(SqlString); } #endregion } if (string.IsNullOrEmpty(PayState) || PayState != "refund") { SqlString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_MEMBERSHIP WHERE MEMBERSHIP_MOBILEPHONE = '" + _MEMBERSHIP_TELEPHONE + "' AND NVL(MEMBERSHIP_TYPE,1000) <> 2020 ORDER BY OPERATE_DATE DESC"; DataTable T_MEMBERSHIP = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; SqlString = "UPDATE UNIFORMSEND_STORAGE.T_PURCHASE@HWS SET " + (T_MEMBERSHIP.Rows.Count > 0 ? "PURCHASE_PERSON = '" + T_MEMBERSHIP.Rows[0]["MEMBERSHIP_NAME"].ToString() + "'," : "") + "PURCHASE_PERSONTEL = '" + _MEMBERSHIP_TELEPHONE + "',PURCHASE_STATE = 1010 WHERE PURCHASE_DESC = '" + TICKETCODE + "' AND PURCHASE_STATE = 1005"; _OracleHelper.ExcuteSql(SqlString); #region 推送订单信息 string SQLString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_WECHATPUBLICSIGN WHERE WECHATPUBLICSIGN_ID = 2"; DataTable WECHATPUBLICSIGN = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0]; if (WECHATPUBLICSIGN.Rows.Count > 0) { string AppID = WECHATPUBLICSIGN.Rows[0]["WECHAT_APPID"].ToString(); string AppSecret = WECHATPUBLICSIGN.Rows[0]["WECHAT_APPSECRET"].ToString(); string AcessToken = WebService.SDK.CommonHelper.GetAccess(AppID, AppSecret); if (!string.IsNullOrEmpty(AcessToken)) { //推送模板 SQLString = "SELECT * FROM MOBILESERVICE_PLATFORM.T_PUSHMODULE WHERE WECHATPUBLICSIGN_ID = " + WECHATPUBLICSIGN.Rows[0]["WECHATPUBLICSIGN_ID"].ToString(); DataTable PUSHMODULE = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0]; //订单付款成功通知 string PUSH_MODULE = PUSHMODULE.Select("PUSHMODULE_NUM = 'Checkout_Success'")[0]["PUSHMODULE_CODE"].ToString(); SQLString = "SELECT * FROM MOBILESERVICE_PLATFORM.V_RTWECHATPUSH WHERE PUSH_MODULE LIKE '%" + PUSH_MODULE + "%' AND PROVINCE_CODE = 330000 AND ',' || SERVERPARTSHOP_IDS || ',' LIKE '%," + TICKETCODE.Split('-')[1] + ",%'"; DataTable RTWECHATPUSH = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0]; WebService.SDK.CommonHelper.StartToSend(AppID, AppSecret, "Checkout_Success", AcessToken, RTWECHATPUSH, PUSH_MODULE, DTCONSUMPTIONRECORD, PAYTYPE == "ALIPAY" ? "支付宝支付" : (PAYTYPE == "WECHAT" ? "微信支付" : "")); //采购信息 DataTable V_PURCHASE = _OracleHelper.ExcuteSqlGetDataSet( "SELECT * FROM UNIFORMSEND_STORAGE.V_PURCHASE@HWS WHERE PURCHASE_DESC = '" + TICKETCODE + "' ORDER BY PURCHASEDETAIL_ID").Tables[0]; //新订单通知 PUSH_MODULE = PUSHMODULE.Select("PUSHMODULE_NUM = 'NewOrder'")[0]["PUSHMODULE_CODE"].ToString(); SQLString = "SELECT * FROM MOBILESERVICE_PLATFORM.V_RTWECHATPUSH WHERE PUSH_MODULE LIKE '%" + PUSH_MODULE + "%' AND PROVINCE_CODE = 330000"; RTWECHATPUSH = _OracleHelper.ExcuteSqlGetDataSet(SQLString).Tables[0]; WebService.SDK.CommonHelper.StartToSend(AppID, AppSecret, "NewOrder", AcessToken, RTWECHATPUSH, PUSH_MODULE, V_PURCHASE); } } #endregion } else if (PayState == "refund") { SqlString = "UPDATE UNIFORMSEND_STORAGE.T_PURCHASE@HWS SET PURCHASE_STATE = 9999 WHERE PURCHASE_DESC = '" + TICKETCODE + "' AND PURCHASE_STATE <= 2000"; _OracleHelper.ExcuteSql(SqlString); } } catch (Exception _Exception) { LogHelper.WriteSendLog(_Exception.Message); } } #endregion #region 结账通知 [WebMethod] /// /// 结账通知参数 /// /// 服务区码 /// 门店编码 /// 收银机号 /// 结账金额 /// 销售金额 /// 结账时间 /// 商家名称 /// public string endaccountinfo(string SERVERPARTCODE, string SHOPCODE, string MACHINECODE, string CASHPAY, string TOTALSELLAMOUNT, string ENDACCOUNT_DATE, string SHOPNAME) { PayQueryResult _PayQueryResult = new PayQueryResult(); try { OracleHelper _OracleHelper = new OracleHelper(_connectstringbld.Split(',')[0], _connectstringbld.Split(',')[1], _connectstringbld.Split(',')[2], _connectstringbld.Split(',')[3]); //_OracleHelper.ConnString = _connectstringbld; string str = @"INSERT INTO HIGHWAY_EXCHANGE.T_OPERATELOG (OPERATELOG_ID,SERVERPARTCODE, SHOPCODE,MACHINECODE,CASHPAY,TOTALSELLAMOUNT,ENDACCOUNT_DATE,SHOPNAME) VALUES(HIGHWAY_EXCHANGE.SEQ_OPERATELOG.NEXTVAL,'" + SERVERPARTCODE + "','" + SHOPCODE + "','" + MACHINECODE + "'," + CASHPAY + "," + TOTALSELLAMOUNT + ",TO_DATE('" + ENDACCOUNT_DATE + "','YYYY/MM/DD HH24:MI:SS'),'" + SHOPNAME + "')"; _OracleHelper.ExcuteSql(str); //查询数据 _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "记录成功"; _PayQueryResult.trade_no = SHOPCODE; _PayQueryResult.trade_num = SERVERPARTCODE; } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "记录失败"; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = SHOPCODE; _PayQueryResult.trade_num = SERVERPARTCODE; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("接收到的结账信息参数:服务区码(SERVERPARTCODE):" + SERVERPARTCODE + ",门店编码(SHOPCODE):" + SHOPCODE + ",收银机号(MACHINECODE):" + MACHINECODE + ",结账金额(CASHPAY):" + CASHPAY + ",销售金额(TOTALSELLAMOUNT):" + TOTALSELLAMOUNT + ",结账时间(ENDACCOUNT_DATE):" + ENDACCOUNT_DATE + ",商家名称(SHOPNAME):" + SHOPNAME + " 数据返回值:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 会员卡消费 [WebMethod] /// /// 会员卡消费参数 /// /// 会员内码 /// 服务区码 /// 门店编码 /// 收银机号 /// 消费金额 /// 消费日期 /// IC卡号 /// 消费类型 /// 卡内余额 /// 会员码 /// public string consumptionpay(string MEMBERSHIP_ID, string SERVERPARTCODE, string SHOPCODE, string MACHINECODE, string RECODE_AMOUNT, string RECODE_DATE, string ICCARD_CODE, string RECODE_TYPE, string ACCOUNT_BALANCE, string TICKETCODE) { string _ACCOUNT_BALANCE = ACCOUNT_BALANCE; PayQueryResult _PayQueryResult = new PayQueryResult(); try { OracleHelper _OracleHelperEx = new OracleHelper(_OracleHelperStringsp.Split(',')[0], _OracleHelperStringsp.Split(',')[1], _OracleHelperStringsp.Split(',')[2], _OracleHelperStringsp.Split(',')[3], _OracleHelperStringsp.Split(',').Length > 4 ? _OracleHelperStringsp.Split(',')[4] : "1521"); string _SERVERPART_ID = "NULL", _SERVERPART_NAME = "", _SERVERPARTSHOP_ID = "NULL", _SHOPNAME = "", _Membership_Card = "", _PlatformCode = SERVERPARTCODE + SHOPCODE + DateTime.Now.ToString("yyyyMMddHHmmss"); //获取服务区门店信息 DataTable _SERVERPARTSHOP = _OracleHelperEx.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(); } OracleHelper _OracleHelperLocal = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3], _connectstring.Split(',').Length > 4 ? _connectstring.Split(',')[4] : "1521"); //获取会员卡号信息 DataTable dtMEMBERSHIP = _OracleHelperLocal.ExcuteSqlGetDataSet( @"SELECT A.MEMBERSHIP_NAME,A.MEMBERSHIP_CARD FROM HIGHWAY_EXCHANGE.T_MEMBERSHIP A WHERE A.MEMBERSHIP_ID = " + MEMBERSHIP_ID).Tables[0]; if (dtMEMBERSHIP.Rows.Count > 0) { _Membership_Card = dtMEMBERSHIP.Rows[0]["MEMBERSHIP_CARD"].ToString(); } StringBuilder sb = new StringBuilder(); sb.AppendFormat("?action_type={0}", "OrderPay"); sb.AppendFormat("&Membership_Card={0}", _Membership_Card); sb.AppendFormat("&Fact_Amount={0}", RECODE_AMOUNT); sb.AppendFormat("&Consume_Point={0}", 0); sb.AppendFormat("&Recode_Amount={0}", RECODE_AMOUNT); sb.AppendFormat("&TicketCode={0}", TICKETCODE); 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("&MachineCode={0}", MACHINECODE); sb.AppendFormat("&Recode_Date={0}", RECODE_DATE); sb.AppendFormat("&PlatformCode={0}", _PlatformCode); string parameters = sb.ToString(); string _BaseUrl = ConfigurationManager.AppSettings["MemberUrl"]; string RequestUrl = _BaseUrl + parameters; string format = "application/json;charset=UTF-8"; string reString = CommonHelper.HttpUrlPost(parameters, RequestUrl, format, 0); JObject _JObject = JObject.Parse(reString); JObject info = new JObject(); switch (_JObject["Result_Code"].ToString()) { case "100": //查询数据 _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "记录成功"; _PayQueryResult.trade_no = MEMBERSHIP_ID; _PayQueryResult.trade_num = SERVERPARTCODE; break; default: //查询数据 _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.支付失败)).ToString(); _PayQueryResult.result_desc = _JObject["Result_Desc"].ToString(); _PayQueryResult.trade_no = MEMBERSHIP_ID; _PayQueryResult.trade_num = SERVERPARTCODE; break; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "记录失败"; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = MEMBERSHIP_ID; _PayQueryResult.trade_num = SERVERPARTCODE; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("接收到的会员消费参数:会员内码(MEMBERSHIP_ID):" + MEMBERSHIP_ID + ",服务区码(SERVERPARTCODE):" + SERVERPARTCODE + ",门店编码(SHOPCODE):" + SHOPCODE + ",收银机号(MACHINECODE):" + MACHINECODE + ",消费金额(RECODE_AMOUNT):" + RECODE_AMOUNT + ",消费日期(RECODE_DATE):" + RECODE_DATE + ",IC卡号(ICCARD_CODE):" + ICCARD_CODE + ",消费类型(RECODE_TYPE):" + RECODE_TYPE + ",卡内余额(ACCOUNT_BALANCE):" + ACCOUNT_BALANCE + ",交易单号(TICKETCODE):" + TICKETCODE + " 数据返回值:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 会员码校验 [WebMethod] /// /// 会员码校验参数 /// /// 会员条码 /// public string BarcodeCheck(string MEMBERSHIP_CODE) { PayQueryResult _PayQueryResult = new PayQueryResult(); try { string _time = DateTime.Now.Year + "/" + MEMBERSHIP_CODE.Substring(0, 2) + "/" + MEMBERSHIP_CODE.Substring(MEMBERSHIP_CODE.Length - 4, 2) + " " + MEMBERSHIP_CODE.Substring(12, 2) + ":" + MEMBERSHIP_CODE.Substring(10, 2) + ":" + MEMBERSHIP_CODE.Substring(2, 2); if (DateTime.Parse(_time) >= DateTime.Now.AddMinutes(-5) && DateTime.Parse(_time) <= DateTime.Now.AddMinutes(5)) { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); //_OracleHelper.ConnString = _connectstring; string str = @"SELECT B.ICCARD_CODE,A.ACCOUNT_BALANCE,A.MEMBERSHIP_CARD FROM HIGHWAY_EXCHANGE.T_MEMBERSHIP A,HIGHWAY_EXCHANGE.T_ICCARDINFO B WHERE A.MEMBERSHIP_ID = B.MEMBERSHIP_ID AND A.MEMBERSHIP_ID = " + int.Parse(MEMBERSHIP_CODE.Substring(4, 6)) + " AND A.MEMBERSHIP_STATE = 1"; DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (_DataTable.Rows.Count > 0) { //查询数据 _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "会员码有效"; _PayQueryResult.trade_no = _DataTable.Rows[0][0].ToString(); _PayQueryResult.trade_num = _DataTable.Rows[0][1].ToString(); } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.会员已经注销)).ToString(); _PayQueryResult.result_desc = "会员码无效"; _PayQueryResult.trade_no = MEMBERSHIP_CODE.Substring(4, 6); _PayQueryResult.trade_num = DateTime.Now.ToString(); } } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.安全验证不通过)).ToString(); _PayQueryResult.result_desc = "会员码无效"; _PayQueryResult.trade_no = _time; _PayQueryResult.trade_num = DateTime.Now.ToString(); } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "会员码无效"; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = MEMBERSHIP_CODE; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("接收到的会员消费参数:会员条码(MEMBERSHIP_CODE):" + MEMBERSHIP_CODE + ",数据返回值:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 商品信息查询 [WebMethod] /// /// 商品信息查询参数 /// /// 商品条码 /// 门店内码 /// public string CommodityBarcodeCheck(string COMMODITY_BARCODE, string SERVERPARTSHOP_ID) { LogHelper.WriteSendLog("接收到的商品信息参数:商品条码(COMMODITY_BARCODE):" + COMMODITY_BARCODE + ",门店内码(SERVERPARTSHOP_ID):" + SERVERPARTSHOP_ID); PayQueryResult _PayQueryResult = new PayQueryResult(); try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); //从Cache中读取服务区门店信息数据 List _ServerpartShopList = (List)CacheHelper.Get("SDKServerpartShopList"); if (_ServerpartShopList == null) { _ServerpartShopList = new List(); } //检查当前服务区门店参数是否存在于Cache if (_ServerpartShopList.FindAll(p => p.ServerpartShopID == SERVERPARTSHOP_ID).Count == 0) { //不存在时从数据库读取一次信息并保存至Cache,并设定每30分钟刷新一次 _ServerpartShopList = Newtonsoft.Json.JsonConvert.DeserializeObject>( Newtonsoft.Json.JsonConvert.SerializeObject(_OracleHelper.ExcuteSqlGetDataSet( @"SELECT TO_CHAR(A.PROVINCE_CODE) as ProvinceCode, A.SERVERPART_CODE as ServerpartCode, TO_CHAR(B.SERVERPARTSHOP_ID) as ServerpartShopID, B.SHOPCODE as ShopCode,B.BUSINESSTYPE as BusinessType, TO_CHAR(NVL(B.UNIFORM_TYPE,1)) as UniformType, TO_CHAR(B.SERVERPARTSHOP_STATE) as ServerpartShopState FROM HIGHWAY_EXCHANGE.T_SERVERPART A, HIGHWAY_EXCHANGE.T_SHOPMESSAGE_EX B WHERE A.SERVERPART_CODE = B.SERVERPART_CODE AND B.SHOPCODE IS NOT NULL").Tables[0])); if (_ServerpartShopList.Count == 0) { _ServerpartShopList = Newtonsoft.Json.JsonConvert.DeserializeObject>( Newtonsoft.Json.JsonConvert.SerializeObject(_OracleHelper.ExcuteSqlGetDataSet( @"SELECT TO_CHAR(A.PROVINCE_CODE) as ProvinceCode, A.SERVERPARTCODE as ServerpartCode, TO_CHAR(B.SERVERPARTSHOP_ID) as ServerpartShopID, B.SHOPCODE as ShopCode,B.BUSINESSTYPE as BusinessType, '1' as UniformType,TO_CHAR(B.VALID) as ServerpartShopState FROM HIGHWAY_EXCHANGE.T_SYSCODE A, HIGHWAY_EXCHANGE.T_SHOPMESSAGE B WHERE A.SERVERPARTCODE = B.SERVERPARTCODE AND B.SHOPCODE IS NOT NULL").Tables[0])); } WebService.SDK.CacheHelper.Set("SDKServerpartShopList", _ServerpartShopList, DateTime.Now.AddMinutes(30)); } //从Cache读取当前门店参数,用于获取数据使用 WebService.SDK.Model.ServerpartShopModel _ServerpartShop = _ServerpartShopList.Find(p => p.ServerpartShopID == SERVERPARTSHOP_ID); DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet( $@"SELECT A.COMMODITY_BARCODE, A.COMMODITY_NAME,A.COMMODITY_RETAILPRICE FROM HIGHWAY_EXCHANGE.T_COMMODITYEX_EX A WHERE A.COMMODITY_BARCODE = '{COMMODITY_BARCODE}' AND A.BUSINESSTYPE = {_ServerpartShop.BusinessType} AND A.SERVERPARTCODE IN ('{_ServerpartShop.ServerpartCode}','{_ServerpartShop.ProvinceCode}') AND A.COMMODITY_STATE = 1").Tables[0]; if (_DataTable.Rows.Count > 0) { //查询数据 _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = _DataTable.Rows[0]["COMMODITY_RETAILPRICE"].ToString(); _PayQueryResult.trade_no = _DataTable.Rows[0]["COMMODITY_BARCODE"].ToString(); _PayQueryResult.trade_num = _DataTable.Rows[0]["COMMODITY_NAME"].ToString(); } else { _DataTable = _OracleHelper.ExcuteSqlGetDataSet( $@"SELECT A.COMMODITY_BARCODE,A.COMMODITY_NAME,A.COMMODITY_RETAILPRICE FROM HIGHWAY_EXCHANGE.T_COMMODITYEX_EX A WHERE A.COMMODITY_BARCODE = '{COMMODITY_BARCODE}' AND A.BUSINESSTYPE = {_ServerpartShop.BusinessType} AND A.SERVERPARTCODE IN ('{_ServerpartShop.ServerpartCode}','{_ServerpartShop.ProvinceCode}') AND A.COMMODITY_STATE = 0").Tables[0]; if (_DataTable.Rows.Count > 0) { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.会员已经注销)).ToString(); _PayQueryResult.result_desc = "条码无效"; _PayQueryResult.trade_no = _DataTable.Rows[0]["COMMODITY_BARCODE"].ToString(); _PayQueryResult.trade_num = _DataTable.Rows[0]["COMMODITY_NAME"].ToString(); } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.用户不存在).ToString(); _PayQueryResult.result_desc = "条码不存在"; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = COMMODITY_BARCODE; _PayQueryResult.trade_num = ""; } } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "条码无效"; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = COMMODITY_BARCODE; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("查询到的商品信息参数:商品条码(COMMODITY_BARCODE):" + COMMODITY_BARCODE + ",门店内码(SERVERPARTSHOP_ID):" + SERVERPARTSHOP_ID + ",数据返回值:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 配送单扫码入库 [WebMethod] /// /// 配送单扫码入库参数 /// /// 配送单号 /// 采购单内码 /// 收银员名称 /// 微信内码 /// 微信OPENID /// 接口类型:0查询,1入库 /// public string DeliverCodeCheck(string GOODSDELIVER_CODE, string PURCHASE_ID = "0", string CASHWORKER_NAME = "", string RTWECHATPUSH_ID = "NULL", string WECHAT_OPENID = "", string StorageType = "0") { PayQueryResult _PayQueryResult = new PayQueryResult(); try { OracleHelper _OracleHelper = new OracleHelper(_OracleHelperStringps.Split(',')[0], _OracleHelperStringps.Split(',')[1], _OracleHelperStringps.Split(',')[2], _OracleHelperStringps.Split(',')[3]); string str = @"SELECT * FROM SELLER_STORAGE.V_GOODSDELIVER WHERE GOODSDELIVER_CODE = '" + GOODSDELIVER_CODE + "' AND PURCHASE_ID = " + PURCHASE_ID; DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (_DataTable.Rows.Count > 0) { switch (_DataTable.Rows[0]["PURCHASE_STATE"].ToString()) { case "2000": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.订单待支付)).ToString(); _PayQueryResult.result_desc = "等待配送"; _PayQueryResult.trade_no = _DataTable.Rows[0]["SERVERPART_NAME"].ToString(); _PayQueryResult.trade_num = _DataTable.Rows[0]["SERVERPARTSHOP_NAME"].ToString(); break; case "2010": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.成功)).ToString(); _PayQueryResult.result_desc = "单据有效,入库中..."; _PayQueryResult.trade_no = _DataTable.Rows[0]["SERVERPART_NAME"].ToString(); _PayQueryResult.trade_num = _DataTable.Rows[0]["SERVERPARTSHOP_NAME"].ToString(); if (StorageType == "1") { str = "SELECT 1 FROM SELLER_STORAGE.T_OPERATELOG WHERE GOODSDELIVER_CODE = '" + GOODSDELIVER_CODE + "' AND PURCHASE_ID = " + PURCHASE_ID; if (_OracleHelper.ExcuteSqlGetDataSet(str).Tables[0].Rows.Count == 0) { str = @"INSERT INTO SELLER_STORAGE.T_OPERATELOG (OPERATELOG_ID,GOODSDELIVER_CODE,PURCHASE_ID, SERVERPARTSHOP_ID,CASHWORKER_NAME,RTWECHATPUSH_ID,WECHAT_OPENID,OPERATELOG_DATE) SELECT SELLER_STORAGE.SEQ_OPERATELOG.NEXTVAL,GOODSDELIVER_CODE,PURCHASE_ID, SERVERPARTSHOP_ID,'" + CASHWORKER_NAME + "'," + RTWECHATPUSH_ID + ",'" + WECHAT_OPENID + "',SYSDATE FROM SELLER_STORAGE.V_GOODSDELIVER WHERE GOODSDELIVER_CODE = '" + GOODSDELIVER_CODE + "' AND PURCHASE_ID = " + PURCHASE_ID; _OracleHelper.ExcuteSql(str); } } break; case "3000": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.单据已接收)).ToString(); _PayQueryResult.result_desc = "单据已接收"; _PayQueryResult.trade_no = _DataTable.Rows[0]["SERVERPART_NAME"].ToString(); _PayQueryResult.trade_num = _DataTable.Rows[0]["SERVERPARTSHOP_NAME"].ToString(); break; case "4000": _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.单据已入库)).ToString(); _PayQueryResult.result_desc = "单据已入库"; _PayQueryResult.trade_no = _DataTable.Rows[0]["SERVERPART_NAME"].ToString(); _PayQueryResult.trade_num = _DataTable.Rows[0]["SERVERPARTSHOP_NAME"].ToString(); break; } } else { _PayQueryResult.result_code = ((int)(CommonHelper.ResCode.用户不存在)).ToString(); _PayQueryResult.result_desc = "单据无效"; _PayQueryResult.trade_no = GOODSDELIVER_CODE; _PayQueryResult.trade_num = ""; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "网络异常"; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = GOODSDELIVER_CODE; _PayQueryResult.trade_num = ""; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("查询到的配送单扫码入库参数:配送单号(GOODSDELIVER_CODE):" + GOODSDELIVER_CODE + ",采购单内码(PURCHASE_ID):" + PURCHASE_ID + ",数据返回值:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JSonHelper.ObjectToJson(_PayQueryResult, false); } #endregion #region 查询条码库 [WebMethod] /// /// 查询条码库参数 /// /// 商品条码 public string BarcodeLibraryQuery(string Barcode) { DataTable BarcodeLibrary = null; Barcode = Barcode.Replace(" ", ""); OracleHelper _OracleHelper = new OracleHelper(); try { _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = @"SELECT COMMODITY_TYPE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT, COMMODITY_RULE,COMMODITY_ORI,COMMODITY_RETAILPRICE,ADDTIME,IMAGE_URL FROM HIGHWAY_EXCHANGE.T_BARCODELIBRARY WHERE COMMODITY_BARCODE = '" + Barcode + "'"; BarcodeLibrary = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (BarcodeLibrary.Rows.Count > 0) { LogHelper.WriteSendLog("查询到的商品信息参数:商品条码(COMMODITY_BARCODE):" + Barcode + ",数据返回值:" + JSonHelper.DataTableToJson(BarcodeLibrary, "BarcodeLibrary")); return JSonHelper.DataTableToJson(BarcodeLibrary, "BarcodeLibrary"); } else if (Barcode.Length >= 8) { #region 商品云库查询 string SqlString = "", _COMMODITY_TYPE = "", _COMMODITY_NAME = "", _COMMODITY_UNIT = "", _COMMODITY_RULE = "", _COMMODITY_ORI = "", _COMMODITY_RETAILPRICE = "", _IMAGE_URL = ""; JObject _JObject = GetBarcodeJson(Barcode); if (_JObject != null && _JObject["showapi_res_body"] != null && _JObject["showapi_res_body"].ToString() != "") { try { //商品类型 _COMMODITY_TYPE = _JObject["showapi_res_body"]["goodsType"].ToString(); _COMMODITY_TYPE = _COMMODITY_TYPE.Split('>').Length > 0 ? _COMMODITY_TYPE.Split('>')[_COMMODITY_TYPE.Split('>').Length - 1] : _COMMODITY_TYPE; } catch { _COMMODITY_TYPE = "便利店商品"; } try { //商品名称 _COMMODITY_NAME = _JObject["showapi_res_body"]["goodsName"].ToString(); } catch { _COMMODITY_NAME = "便利店商品"; } try { //商品单位 _COMMODITY_UNIT = _JObject["showapi_res_body"]["units"].ToString(); } catch { _COMMODITY_UNIT = "个"; } try { //商品规格 _COMMODITY_RULE = _JObject["showapi_res_body"]["spec"].ToString(); } catch { _COMMODITY_RULE = "个"; } try { //商品产地 _COMMODITY_ORI = _JObject["showapi_res_body"]["ycg"].ToString(); } catch { _COMMODITY_ORI = "*"; } try { //商品价格 _COMMODITY_RETAILPRICE = string.IsNullOrEmpty(_JObject["showapi_res_body"]["price"].ToString()) ? "NULL" : Regex.Replace(_JObject["showapi_res_body"]["price"].ToString().Replace("'", " "), @"\D+", ""); } catch { _COMMODITY_RETAILPRICE = "NULL"; } try { _IMAGE_URL = _JObject["showapi_res_body"]["img"].ToString(); } catch { _IMAGE_URL = ""; } string _BARCODELIBRARY_ID = _OracleHelper.ExcuteSqlGetDataSet( "SELECT HIGHWAY_EXCHANGE.SEQ_BARCODELIBRARY.NEXTVAL FROM DUAL").Tables[0].Rows[0][0].ToString(); SqlString = @"INSERT INTO HIGHWAY_EXCHANGE.T_BARCODELIBRARY (BARCODELIBRARY_ID,COMMODITY_TYPE, COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT,COMMODITY_RULE, COMMODITY_ORI,COMMODITY_RETAILPRICE,ADDTIME,IMAGE_URL) VALUES (" + _BARCODELIBRARY_ID + ",'" + _COMMODITY_TYPE + "','" + _BARCODELIBRARY_ID.PadLeft(8, '0') + "','" + _COMMODITY_NAME + "','" + Barcode + "','" + _COMMODITY_UNIT + "','" + _COMMODITY_RULE + "','" + _COMMODITY_ORI + "'," + _COMMODITY_RETAILPRICE + ",SYSDATE,'" + _IMAGE_URL + "')"; _OracleHelper.ExcuteSql(SqlString); SqlString = @"SELECT COMMODITY_TYPE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT, COMMODITY_RULE,COMMODITY_ORI,COMMODITY_RETAILPRICE,ADDTIME,IMAGE_URL FROM HIGHWAY_EXCHANGE.T_BARCODELIBRARY WHERE BARCODELIBRARY_ID = " + _BARCODELIBRARY_ID; BarcodeLibrary = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; } #endregion } } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); string SqlString = "SELECT * FROM HIGHWAY_EXCHANGE.T_BARCODESEARCH WHERE BARCODE = '" + Barcode + "'"; DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; if (_DataTable.Rows.Count == 0) { SqlString = @"INSERT INTO HIGHWAY_EXCHANGE.T_BARCODESEARCH ( BARCODESEARCH_ID,BARCODE,BARCODESEARCH_STATE,BARCODESEARCH_DATE) VALUES (HIGHWAY_EXCHANGE.SEQ_BARCODESEARCH.NEXTVAL,'" + Barcode + "',0,SYSDATE)"; _OracleHelper.ExcuteSql(SqlString); } else { SqlString = @"UPDATE HIGHWAY_EXCHANGE.T_BARCODESEARCH SET BARCODESEARCH_STATE = 0,BARCODESEARCH_DATE = SYSDATE WHERE BARCODE = '" + Barcode + "'"; _OracleHelper.ExcuteSql(SqlString); } } LogHelper.WriteSendLog("查询到的商品信息参数:商品条码(COMMODITY_BARCODE):" + Barcode + ",数据返回值:" + JSonHelper.DataTableToJson(BarcodeLibrary, "BarcodeLibrary")); return BarcodeLibrary == null ? "" : JSonHelper.DataTableToJson(BarcodeLibrary, "BarcodeLibrary").ToString(); } protected JObject GetBarcodeJson(string Barcode) { string querys = "code=" + Barcode, bodys = "", url = host + path; HttpWebRequest httpRequest = null; HttpWebResponse httpResponse = null; if (0 < querys.Length) { url = url + "?" + querys; } if (host.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { httpRequest = (HttpWebRequest)WebRequest.Create(url); } httpRequest.Method = method; httpRequest.Timeout = 2 * 1000;//5s httpRequest.Headers.Add("Authorization", "APPCODE " + appcode); if (0 < bodys.Length) { byte[] data = Encoding.UTF8.GetBytes(bodys); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); //using作为语句,用于定义一个范围,在此范围的末尾将释放对象 using (StreamReader sr = new StreamReader(httpResponse.GetResponseStream())) { //ReadToEnd适用于小文件的读取,一次性的返回整个文件 JObject _JObject = (JObject)JsonConvert.DeserializeObject(sr.ReadToEnd()); sr.Close(); return _JObject; } } catch (WebException ex) { LogHelper.WriteSendLog(ex.Message); return null; } } public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; } #endregion #region 指定IP地址Ping状态 /// /// 指定IP地址Ping状态 /// /// /// [WebMethod] public string HostNetConnect(string HostNetIP) { int _timeout = 0; int _testcount = 0; long _RoundtripTime = 0; //构造Ping实例 Ping pingSender = new Ping(); //Ping 选项设置 PingOptions options = new PingOptions(); options.DontFragment = true; //测试数据 string data = ""; byte[] buffer = Encoding.ASCII.GetBytes(data); //设置超时时间 int timeout = 120; //调用同步 send 方法发送数据,将返回结果保存至PingReply实例 for (int i = 0; i < 10; i++) { try { _testcount++; PingReply reply = pingSender.Send(HostNetIP, timeout, buffer, options); if (reply.Status == IPStatus.Success) { _RoundtripTime += reply.RoundtripTime; } else if (reply.Status == IPStatus.TimedOut) { _timeout++; _RoundtripTime += 120; } else { _timeout++; _RoundtripTime += 120; } } catch (Exception ex) { _timeout++; _RoundtripTime += 1000; } } return (_RoundtripTime / _testcount).ToString(); } #endregion #region 收银机添加商品同步上传 /// /// 收银机添加商品同步上传 /// /// /// [WebMethod] public string LocalCommodityExUpLoad(string JsonString) { using (DataTable _DataTable = JSonHelper.ToDataTable(JsonString)) { if (_DataTable.Rows.Count > 0) { List ListSQL = new List(); OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); for (int i = 0; i < _DataTable.Rows.Count; i++) { //定义字段值 string COMMODITYEX_ID = _DataTable.Rows[i]["COMMODITYEX_ID"].ToString(), SERVERPARTCODE = _DataTable.Rows[i]["SERVERPARTCODE"].ToString(), COMMODITY_TYPE = _DataTable.Rows[i]["COMMODITY_TYPE"].ToString(), COMMODITY_CODE = _DataTable.Rows[i]["COMMODITY_CODE"].ToString(), COMMODITY_BARCODE = _DataTable.Rows[i]["COMMODITY_BARCODE"].ToString(), COMMODITY_NAME = _DataTable.Rows[i]["COMMODITY_NAME"].ToString(), COMMODITY_RULE = _DataTable.Rows[i]["COMMODITY_RULE"].ToString(), COMMODITY_UNIT = _DataTable.Rows[i]["COMMODITY_UNIT"].ToString(), COMMODITY_RETAILPRICE = _DataTable.Rows[i]["COMMODITY_RETAILPRICE"].ToString(), COMMODITY_MEMBERPRICE = _DataTable.Rows[i]["COMMODITY_MEMBERPRICE"].ToString(), CANCHANGEPRICE = _DataTable.Rows[i]["CANCHANGEPRICE"].ToString(), ISVALID = _DataTable.Rows[i]["ISVALID"].ToString(), COMMODITY_EN = _DataTable.Rows[i]["COMMODITY_EN"].ToString(), ISBULK = _DataTable.Rows[i]["ISBULK"].ToString(), METERINGMETHOD = _DataTable.Rows[i]["METERINGMETHOD"].ToString(), DOWNLOADDATE = _DataTable.Rows[i]["DOWNLOADDATE"].ToString(), FLAG = _DataTable.Rows[i]["FLAG"].ToString(), BUSINESSTYPE = _DataTable.Rows[i]["BUSINESSTYPE"].ToString(), SERVERPARTSHOP_ID = _DataTable.Rows[i]["SERVERPARTSHOP_ID"].ToString(); if (BUSINESSTYPE != "" && SERVERPARTSHOP_ID != "") { string _SelectSQL = string.Format("SELECT 1 FROM HIGHWAY_EXCHANGE.T_COMMODITYEX " + "WHERE COMMODITY_BARCODE = '{0}' AND SERVERPARTSHOP_ID = {1} ", COMMODITY_BARCODE, SERVERPARTSHOP_ID); if (_OracleHelper.ExcuteSqlGetDataSet(_SelectSQL).Tables[0].Rows.Count == 0) { long _MaxId = 0; try { _MaxId = long.Parse(_OracleHelper.ExcuteSqlGetDataSet("SELECT MAX(COMMODITYEX_ID) " + "FROM HIGHWAY_EXCHANGE.T_COMMODITYEX WHERE SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID).Tables[0].Rows[0][0].ToString()) + 1; } catch { _MaxId = 1; } string _InsertSQL = "INSERT INTO HIGHWAY_EXCHANGE.T_COMMODITYEX " + "( COMMODITYEX_ID, SERVERPARTCODE, COMMODITY_TYPE, " + "COMMODITY_CODE, COMMODITY_BARCODE, COMMODITY_NAME, " + "COMMODITY_RULE, COMMODITY_UNIT, COMMODITY_RETAILPRICE, " + "COMMODITY_MEMBERPRICE, CANCHANGEPRICE, ISVALID, " + "COMMODITY_EN, ISBULK, METERINGMETHOD, DOWNLOADDATE, " + "FLAG, BUSINESSTYPE, SERVERPARTSHOP_ID ) " + "VALUES (" + _MaxId + ",'" + SERVERPARTCODE + "','" + COMMODITY_TYPE + "','" + _MaxId.ToString().PadLeft(8, '0') + "','" + COMMODITY_BARCODE + "','" + COMMODITY_NAME + "','" + COMMODITY_RULE + "','" + COMMODITY_UNIT + "'," + (COMMODITY_RETAILPRICE == "" ? "NULL" : COMMODITY_RETAILPRICE) + "," + (COMMODITY_MEMBERPRICE == "" ? "NULL" : COMMODITY_MEMBERPRICE) + ",1,1,'" + (COMMODITY_EN == "" ? "*" : COMMODITY_EN) + "'," + (ISBULK == "" ? "0" : ISBULK) + "," + (METERINGMETHOD == "" ? "1" : METERINGMETHOD) + ",TO_DATE('" + (DOWNLOADDATE == "" ? DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") : DOWNLOADDATE) + "','YYYY/MM/DD HH24:MI:SS')," + (FLAG == "" ? "1" : FLAG) + "," + (BUSINESSTYPE == "" ? "NULL" : BUSINESSTYPE) + "," + (SERVERPARTSHOP_ID == "" ? "NULL" : SERVERPARTSHOP_ID) + ") "; ListSQL.Add(_InsertSQL); //try //{ // _OracleHelper.ExcuteSql(_InsertSQL); //} //catch (Exception _Exception) //{ // LogHelper.WriteSendLog(_Exception.Message); //} } else { string _UpdateSQL = "UPDATE HIGHWAY_EXCHANGE.T_COMMODITYEX SET SERVERPARTCODE = '" + SERVERPARTCODE + "'," + "COMMODITY_TYPE = '" + COMMODITY_TYPE + "'," + "COMMODITY_BARCODE = '" + COMMODITY_BARCODE + "'," + "COMMODITY_NAME = '" + COMMODITY_NAME + "'," + "COMMODITY_RULE = '" + COMMODITY_RULE + "'," + "COMMODITY_UNIT = '" + COMMODITY_UNIT + "'," + "COMMODITY_RETAILPRICE = " + (COMMODITY_RETAILPRICE == "" ? "NULL" : COMMODITY_RETAILPRICE) + "," + "COMMODITY_MEMBERPRICE = " + (COMMODITY_MEMBERPRICE == "" ? "NULL" : COMMODITY_MEMBERPRICE) + "," + "CANCHANGEPRICE = " + (CANCHANGEPRICE == "" ? "1" : CANCHANGEPRICE) + "," + "ISVALID = 1," + "COMMODITY_EN = '" + COMMODITY_EN + "'," + "ISBULK = " + (ISBULK == "" ? "0" : ISBULK) + "," + "METERINGMETHOD = " + (METERINGMETHOD == "" ? "1" : METERINGMETHOD) + "," + "DOWNLOADDATE = TO_DATE('" + (DOWNLOADDATE == "" ? DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") : DOWNLOADDATE) + "','YYYY/MM/DD HH24:MI:SS')," + "FLAG = " + (FLAG == "" ? "1" : FLAG) + "," + "BUSINESSTYPE = " + (BUSINESSTYPE == "" ? "NULL" : BUSINESSTYPE) + " WHERE COMMODITY_BARCODE = '" + COMMODITY_BARCODE + "' AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID; ListSQL.Add(_UpdateSQL); //try //{ // _OracleHelper.ExcuteSql(_UpdateSQL); //} //catch (Exception _Exception) //{ // LogHelper.WriteSendLog(_Exception.Message); //} } } } if (ListSQL.Count > 0) { try { _OracleHelper.ExecuteSqlTran(ListSQL); } catch (Exception _Exception) { LogHelper.WriteSendLog(_Exception.Message); } } } } return ""; } #endregion #region 收银报表本地数据上传 /// /// 本地数据上传 /// /// 类型 /// Json格式数据 /// 记录结果 [WebMethod] public string LocalUpLoad(string Type, string Json) { string _Result = ""; DataTable _DataTable = CommonHelper.ConvertOraclTableToDoNetTable(JSonHelper.ToDataTable(Json)); if (_DataTable.Rows.Count > 0) { List _ListSQL = new List(); OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); //判断上传数据类型并生产相应SQL语句 switch (Type.ToLower()) { //日结及稽核数据 case "endaccount": for (int i = 0; i < _DataTable.Rows.Count; i++) { DataTable _Table = _OracleHelper.ExcuteSqlGetDataSet( "SELECT ENDACCOUNT_ID, ENDACCOUNT_STARTDATE, ENDACCOUNT_DATE, SERVERPARTCODE, SHOPCODE, " + "MACHINECODE, ENDPERSONCODE, TICKETCOUNT, TOTALCOUNT, TOTALSELLAMOUNT, " + "TOTALOFFAMOUNT, CASH, CREDITCARD,TICKETBILL, VIPPERSON, COSTBILL, OTHERPAY, CASHPAY, FLAG " + "FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT " + "WHERE ENDACCOUNT_ID = " + _DataTable.Rows[i]["ENDACCOUNT_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _DataTable.Rows[i]["MACHINECODE"].ToString() + "' AND ENDACCOUNT_STARTDATE = TO_DATE('" + _DataTable.Rows[i]["ENDACCOUNT_STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') ").Tables[0]; if (_Table.Rows.Count < 1) { string _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_ENDACCOUNT (" + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[i]) + ")"; _ListSQL.Add(_insertsql); } else if (_Table.Rows.Count == 1) { if (_Table.Rows[0]["ENDACCOUNT_DATE"].ToString() == "") { string _updatesql = "UPDATE HIGHWAY_EXCHANGE.T_ENDACCOUNT SET ENDACCOUNT_DATE = TO_DATE('" + _DataTable.Rows[i]["ENDACCOUNT_DATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS'), ENDPERSONCODE = '" + _DataTable.Rows[i]["ENDPERSONCODE"].ToString() + "',TICKETCOUNT = " + _DataTable.Rows[i]["TICKETCOUNT"].ToString() + ",TOTALCOUNT = " + _DataTable.Rows[i]["TOTALCOUNT"].ToString() + ",TOTALSELLAMOUNT = " + _DataTable.Rows[i]["TOTALSELLAMOUNT"].ToString() + ",TOTALOFFAMOUNT = " + _DataTable.Rows[i]["TOTALOFFAMOUNT"].ToString() + ",CASH = " + _DataTable.Rows[i]["CASH"].ToString() + ",CREDITCARD = " + _DataTable.Rows[i]["CREDITCARD"].ToString() + ",TICKETBILL = " + _DataTable.Rows[i]["TICKETBILL"].ToString() + ",VIPPERSON = " + _DataTable.Rows[i]["VIPPERSON"].ToString() + ",COSTBILL = " + _DataTable.Rows[i]["COSTBILL"].ToString() + ",OTHERPAY = " + _DataTable.Rows[i]["OTHERPAY"].ToString() + ",CASHPAY = " + _DataTable.Rows[i]["CASHPAY"].ToString() + " WHERE ENDACCOUNT_ID = " + _DataTable.Rows[i]["ENDACCOUNT_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _DataTable.Rows[i]["MACHINECODE"].ToString() + "' AND ENDACCOUNT_STARTDATE = TO_DATE('" + _DataTable.Rows[i]["ENDACCOUNT_STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') "; _ListSQL.Add(_updatesql); } } else { _ListSQL.Add("DELETE FROM HIGHWAY_EXCHANGE.T_ENDACCOUNT WHERE ENDACCOUNT_ID = " + _DataTable.Rows[i]["ENDACCOUNT_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _DataTable.Rows[i]["MACHINECODE"].ToString() + "' AND ENDACCOUNT_STARTDATE = TO_DATE('" + _DataTable.Rows[i]["ENDACCOUNT_STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') "); string _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_ENDACCOUNT (" + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[i]) + ")"; _ListSQL.Add(_insertsql); } } break; //收银交班数据 case "personsell": for (int i = 0; i < _DataTable.Rows.Count; i++) { DataTable _Table = _OracleHelper.ExcuteSqlGetDataSet( "SELECT PERSONSELL_ID, SERVERPARTCODE, SHOPCODE, MACHINECODE, STARTDATE, ENDDATE, " + "CASHWORKER_CODE, TICKETCOUNT, TOTALCOUNT, TOTALSELLAMOUNT, TOTALOFFAMOUNT, " + "CASH, TICKETBILL, CREDITCARD, VIPPERSON, COSTBILL, OTHERPAY, CASHPAY, ENDPERSONCODE " + "FROM HIGHWAY_EXCHANGE.T_PERSONSELL " + "WHERE PERSONSELL_ID = " + _DataTable.Rows[i]["PERSONSELL_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _DataTable.Rows[i]["MACHINECODE"].ToString() + "' AND STARTDATE = TO_DATE('" + _DataTable.Rows[i]["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') ").Tables[0]; if (_Table.Rows.Count < 1) { string _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_PERSONSELL ( " + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[i]) + ")"; _ListSQL.Add(_insertsql); } else if (_Table.Rows.Count == 1) { string _updatesql = "UPDATE HIGHWAY_EXCHANGE.T_PERSONSELL SET ENDDATE = TO_DATE('" + _DataTable.Rows[i]["ENDDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS')," + "CASHWORKER_CODE = '" + _DataTable.Rows[i]["CASHWORKER_CODE"].ToString() + "'," + "TICKETCOUNT = " + _DataTable.Rows[i]["TICKETCOUNT"].ToString() + "," + "TOTALCOUNT = " + _DataTable.Rows[i]["TOTALCOUNT"].ToString() + "," + "TOTALSELLAMOUNT = " + _DataTable.Rows[i]["TOTALSELLAMOUNT"].ToString() + "," + "TOTALOFFAMOUNT = " + _DataTable.Rows[i]["TOTALOFFAMOUNT"].ToString() + "," + "CASH = " + _DataTable.Rows[i]["CASH"].ToString() + "," + "TICKETBILL = " + _DataTable.Rows[i]["TICKETBILL"].ToString() + "," + "CREDITCARD = " + _DataTable.Rows[i]["CREDITCARD"].ToString() + "," + "VIPPERSON = " + _DataTable.Rows[i]["VIPPERSON"].ToString() + "," + "COSTBILL = " + _DataTable.Rows[i]["COSTBILL"].ToString() + "," + "OTHERPAY = " + _DataTable.Rows[i]["OTHERPAY"].ToString() + "," + "CASHPAY = " + _DataTable.Rows[i]["CASHPAY"].ToString() + "," + "ENDPERSONCODE = '" + _DataTable.Rows[i]["ENDPERSONCODE"].ToString() + "' " + "WHERE PERSONSELL_ID = " + _DataTable.Rows[i]["PERSONSELL_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _DataTable.Rows[i]["MACHINECODE"].ToString() + "' AND STARTDATE = TO_DATE('" + _DataTable.Rows[i]["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') "; _ListSQL.Add(_updatesql); } else { _ListSQL.Add("DELETE FROM HIGHWAY_EXCHANGE.T_PERSONSELL WHERE PERSONSELL_ID = " + _DataTable.Rows[i]["PERSONSELL_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _DataTable.Rows[i]["MACHINECODE"].ToString() + "' AND STARTDATE = TO_DATE('" + _DataTable.Rows[i]["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') "); string _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_PERSONSELL ( " + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[i]) + ")"; _ListSQL.Add(_insertsql); } } break; //单品集合数据 case "transfer_sale": for (int i = 0; i < _DataTable.Rows.Count; i++) { if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_TRANSFER_SALE WHERE TRANSFER_ID = " + _DataTable.Rows[i]["TRANSFER_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND STARTDATE = TO_DATE('" + _DataTable.Rows[i]["STARTDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND ENDDATE = TO_DATE('" + _DataTable.Rows[i]["ENDDATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND TRANSFER_FIRSTDATAS = '" + _DataTable.Rows[i]["TRANSFER_FIRSTDATAS"].ToString() + "'").Tables[0].Rows.Count == 0) { string _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_TRANSFER_SALE ( " + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[i]) + ")"; _ListSQL.Add(_insertsql); } } break; //移动支付 case "mobile_pay": for (int i = 0; i < _DataTable.Rows.Count; i++) { if (_OracleHelper.ExcuteSqlGetDataSet("SELECT 1 FROM HIGHWAY_EXCHANGE.T_MOBILE_PAY WHERE MOBILE_PAY_ID = " + _DataTable.Rows[i]["MOBILE_PAY_ID"].ToString() + " AND SERVERPARTCODE = '" + _DataTable.Rows[i]["SERVERPARTCODE"].ToString() + "' AND SHOPCODE = '" + _DataTable.Rows[i]["SHOPCODE"].ToString() + "' AND MACHINECODE = '" + _DataTable.Rows[i]["MACHINECODE"].ToString() + "' AND WORKERCODE = '" + _DataTable.Rows[i]["WORKERCODE"].ToString() + "' AND MOBILEPAY_DATE = TO_DATE('" + _DataTable.Rows[i]["MOBILEPAY_DATE"].ToString() + "','YYYY/MM/DD HH24:MI:SS') AND MOBILEPAY_TYPE = '" + _DataTable.Rows[i]["MOBILEPAY_TYPE"].ToString() + "'").Tables[0].Rows.Count == 0) { string _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_MOBILE_PAY ( " + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[i]) + ")"; _ListSQL.Add(_insertsql); } } break; } //执行写入数据 if (_ListSQL.Count > 0) { try { _OracleHelper.ExecuteSqlTran(_ListSQL); _Result = "1"; } catch (Exception ex) { _Result = ex.Message; LogHelper.WriteSendLog(ex.Message); } } else { _Result = "9"; } } else { _Result = "9"; } return _Result; } #endregion #region 创建盘点单 [WebMethod] /// /// 创建盘点单 /// /// 服务区编号 /// 门店编号 /// 盘存日期 /// 盘存人 /// 盘存状态,发起:1000;开始:2000 /// 盘点详情最大行序号 /// 单次获取数量 /// public string CreateCheckBill(string SERVERPART_CODE, string SERVERPARTSHOP_CODE, string CHECKDATE, string CHECKPERSON, string CHECKSTATE, string ROWNUM, string ROWCOUNT) { string Str = "", SERVERPART_ID = "", SERVERPARTSHOP_ID = "", SQL_STARTDATE = "", CHECKCOMMODITY_ID = "", _Result = ""; int _Rownum = 0, _RowCount = 0; int.TryParse(ROWNUM, out _Rownum); int.TryParse(ROWCOUNT, out _RowCount); DataTable dt = null; DataTable STARTDATEDT = null; DataSet ds = new DataSet(); string _ValidationType = ""; try { _ValidationType = ConfigurationManager.AppSettings["ValidationType"].ToString(); } catch { } PayQueryResult _PayQueryResult = new PayQueryResult(); try { OracleHelper _OracleHelperDownLoad = new OracleHelper(_OracleHelperStringsp.Split(',')[0], _OracleHelperStringsp.Split(',')[1], _OracleHelperStringsp.Split(',')[2], _OracleHelperStringsp.Split(',')[3]); //获取服务器内码 Str = "SELECT SERVERPART_ID FROM HIGHWAY_STORAGE.T_SERVERPART@HWS WHERE SERVERPART_CODE = '" + SERVERPART_CODE + "'"; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; SERVERPART_ID = dt.Rows[0][0].ToString(); //获取门店内码 Str = "SELECT SERVERPARTSHOP_ID FROM HIGHWAY_STORAGE.T_SERVERPARTSHOP@HWS WHERE SHOPCODE = '" + SERVERPARTSHOP_CODE + "' AND SERVERPART_ID = " + SERVERPART_ID; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; SERVERPARTSHOP_ID = dt.Rows[0][0].ToString(); if (SERVERPARTSHOP_ID == "") { _Result = ((int)(CommonHelper.ResCode_Check.门店不存在)).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.门店不存在)).ToString(); _PayQueryResult.result_desc = "门店不存在"; } //判断门店在办业务 Str = "SELECT 1 FROM SALESTORE_STORAGE.T_SERVERPARTSTOCK@HWS WHERE SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND OPERATE_STATE > 1000 AND OPERATE_STATE < 2000 AND SERVERPART_ID = " + SERVERPART_ID; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; if (dt.Rows.Count > 0) { _Result = ((int)(CommonHelper.ResCode_Check.门店存在调拨退货业务)).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.门店存在调拨退货业务)).ToString(); _PayQueryResult.result_desc = "门店存在调拨退货业务"; } else { //判断门店是否在盘存 Str = "SELECT * FROM SALESTORE_STORAGE.T_CHECKCOMMODITY@HWS WHERE SERVERPART_ID = " + SERVERPART_ID + "AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND CHECK_STATE = 0"; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; if (dt.Rows.Count > 0) { //Str = "SELECT * FROM SALESTORE_STORAGE.T_CHECKCOMMODITY@HWS WHERE SERVERPART_ID = " + // SERVERPART_ID + "AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND CHECK_STATE = 0"; //dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; DataRow[] _RowList = dt.Select("CHECKDATE = '" + CHECKDATE + "'"); if (_RowList.Length > 0) { if (CHECKSTATE == "1000") { _Result = dt == null ? "" : JSonHelper.DataTableToJson(_RowList.CopyToDataTable(), "CheckBill").ToString(); } else { if (_Rownum <= 0) { Str = "SELECT 1 FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL@HWS WHERE CHECKCOMMODITY_ID = " + "(SELECT CHECKCOMMODITY_ID FROM SALESTORE_STORAGE.T_CHECKCOMMODITY@HWS WHERE SERVERPART_ID = " + SERVERPART_ID + "AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND CHECKDATE = TO_DATE('" + CHECKDATE + "','YYYY/MM/DD HH24:MI:SS') AND CHECK_STATE = 0 ) "; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str, "T_CHECKCOMMODITYDETAIL").Tables[0]; if (dt.Rows.Count > 0) { _PayQueryResult.trade_no = System.RealEstate_Extend.ToEncrypt( JSonHelper.DataTableToJson(_RowList.CopyToDataTable(), "T_CHECKCOMMODITY")); _PayQueryResult.trade_num = dt.Rows.Count.ToString(); _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.成功)).ToString(); _PayQueryResult.result_desc = "创建成功"; } else { _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.等待生成)).ToString(); _PayQueryResult.result_desc = "盘点明细正在生成,请稍候......"; } } else { Str = @"SELECT CHECKCOMMODITYDETAIL_ID,CHECKCOMMODITY_ID,SERVERPARTSTOCK_ID,OVERPLUSCOUNT,CHECKDATE, COMMODITY_ID,COMMODITY_CODE,CUROVERPLUSCOUNT,COMMODITY_BARCODE,CHECKDESC,COMMODITY_NAME, COMMODITY_SALECOUNT,COMMODITY_TOTALCOUNT,START_DATE,END_DATE,SERVERPART_ID FROM (SELECT ROWNUM AS RN,A.* FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL@HWS A,SALESTORE_STORAGE.T_CHECKCOMMODITY@HWS B WHERE A.CHECKCOMMODITY_ID = B.CHECKCOMMODITY_ID AND B.SERVERPART_ID = " + SERVERPART_ID + " AND B.CHECK_STATE = 0 AND B.SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND B.CHECKDATE = TO_DATE('" + CHECKDATE + "','YYYY/MM/DD HH24:MI:SS') ORDER BY A.CHECKCOMMODITYDETAIL_ID ) WHERE RN > " + (_Rownum >= _RowCount ? (_Rownum - _RowCount) : 0) + " AND RN <= " + _Rownum; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str, "T_CHECKCOMMODITYDETAIL").Tables[0]; if (dt.Rows.Count > 0) { _PayQueryResult.trade_no = System.RealEstate_Extend.ToEncrypt( JSonHelper.DataTableToJson(_RowList.CopyToDataTable(), "T_CHECKCOMMODITY")); _PayQueryResult.trade_num = System.RealEstate_Extend.ToEncrypt( JSonHelper.DataTableToJson(dt, "T_CHECKCOMMODITYDETAIL")); _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.成功)).ToString(); _PayQueryResult.result_desc = "创建成功"; } else { _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.等待生成)).ToString(); _PayQueryResult.result_desc = "盘点明细正在生成,请稍候......"; } } } } else { _Result = ((int)(CommonHelper.ResCode_Check.门店正在盘存)).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.门店正在盘存)).ToString(); _PayQueryResult.result_desc = "门店正在盘存"; } } else { bool Flag = true; Str = "SELECT 1 FROM HIGHWAY_SELLDATA.T_ENDACCOUNT@HWS A WHERE SERVERPARTCODE = '" + SERVERPART_CODE + "' AND SHOPCODE = '" + SERVERPARTSHOP_CODE + "' AND ENDACCOUNT_DATE = TO_DATE('" + CHECKDATE + "','YYYY/MM/DD HH24:MI:SS')"; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; if (dt.Rows.Count == 0) { Str = "SELECT 1 FROM HIGHWAY_SELLDATA.T_ENDACCOUNT_TEMP@HWS A WHERE SERVERPARTCODE = '" + SERVERPART_CODE + "' AND SHOPCODE = '" + SERVERPARTSHOP_CODE + "' AND ENDACCOUNT_DATE = TO_DATE('" + CHECKDATE + "','YYYY/MM/DD HH24:MI:SS')"; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; if (dt.Rows.Count == 0) { _Result = ((int)(CommonHelper.ResCode_Check.结账信息未上传)).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.结账信息未上传)).ToString(); _PayQueryResult.result_desc = "结账信息未上传"; Flag = false; } } if (Flag) { //判断是否有未结账的信息 Str = "SELECT 1 FROM HIGHWAY_SELLDATA.V_ENDACCOUNT@HWS A WHERE TREATMENT_MARK < 2 AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND ENDACCOUNT_DATE <= TO_DATE('" + CHECKDATE + "','YYYY/MM/DD HH24:MI:SS') AND ENDACCOUNT_DATE > (SELECT MAX(CHECKDATE) " + "FROM SALESTORE_STORAGE.T_CHECKCOMMODITY@HWS B WHERE A.SERVERPARTSHOP_ID = B.SERVERPARTSHOP_ID)"; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; if (dt.Rows.Count > 0 && _ValidationType != "0") { _Result = ((int)(CommonHelper.ResCode_Check.有未校验的结账信息)).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.有未校验的结账信息)).ToString(); _PayQueryResult.result_desc = "有未校验的结账信息"; } else { //判断是否有未扣除的单品 Str = "SELECT 1 FROM SALESTORE_STORAGE.V_COMMODITYSALESEARCH@HWS WHERE ENDDATE <= TO_DATE('" + CHECKDATE + "','YYYY/MM/DD HH24:MI:SS') + 1 / 1440 AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND TOTALCOUNT <> 0"; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0]; if (dt.Rows.Count > 0 && _ValidationType != "0") { _Result = ((int)(CommonHelper.ResCode_Check.有未扣除库存的单品信息)).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.有未扣除库存的单品信息)).ToString(); _PayQueryResult.result_desc = "有未扣除库存的单品信息"; } else { //获取盘存单内码 Str = "SELECT SALESTORE_STORAGE.SEQ_CHECKCOMMODITY.NEXTVAL@HWS FROM dual"; CHECKCOMMODITY_ID = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str).Tables[0].Rows[0][0].ToString(); Str = @"INSERT INTO SALESTORE_STORAGE.T_CHECKCOMMODITY@HWS (CHECKCOMMODITY_ID,CHECKPERSON,CHECKDATE, SERVERPART_ID,SERVERPARTSHOP_ID,CHECKCOMMODITY_DESC,CHECK_STATE,CHECK_PASSPORT_GUID,CHECK_TYPE) VALUES(" + CHECKCOMMODITY_ID + ",'" + CHECKPERSON + "',TO_DATE('" + CHECKDATE + "','YYYY/MM/DD HH24:MI:SS')," + SERVERPART_ID + "," + SERVERPARTSHOP_ID + ",'',0,'',1000)"; _OracleHelperDownLoad.ExcuteSql(Str); //更新库存状态 Str = "UPDATE SALESTORE_STORAGE.T_SERVERPARTSTOCK@HWS SET OPERATE_STATE = 2000 WHERE SERVERPART_ID = " + SERVERPART_ID + " AND SERVERPARTSHOP_ID = " + SERVERPARTSHOP_ID + " AND OPERATE_STATE != 8000"; _OracleHelperDownLoad.ExcuteSql(Str); //将插入的主单放入DataTable Str = "SELECT * FROM SALESTORE_STORAGE.T_CHECKCOMMODITY@HWS WHERE CHECKCOMMODITY_ID = " + CHECKCOMMODITY_ID; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str, "T_CHECKCOMMODITY").Tables[0]; _Result = dt == null ? "" : JSonHelper.DataTableToJson(dt, "CheckBill"); _PayQueryResult.trade_no = System.RealEstate_Extend.ToEncrypt( JSonHelper.DataTableToJson(dt, "T_CHECKCOMMODITY")); //将插入的明细放入DataTable if (_Rownum > 0) { Str = @"SELECT CHECKCOMMODITYDETAIL_ID,CHECKCOMMODITY_ID,SERVERPARTSTOCK_ID,OVERPLUSCOUNT,CHECKDATE, COMMODITY_ID,COMMODITY_CODE,CUROVERPLUSCOUNT,COMMODITY_BARCODE,CHECKDESC,COMMODITY_NAME, COMMODITY_SALECOUNT,COMMODITY_TOTALCOUNT,START_DATE,END_DATE,SERVERPART_ID FROM ( SELECT ROWNUM AS RN,A.* FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL@HWS A WHERE A.CHECKCOMMODITY_ID = " + CHECKCOMMODITY_ID + " ORDER BY A.CHECKCOMMODITYDETAIL_ID ) WHERE RN > " + (_Rownum >= _RowCount ? (_Rownum - _RowCount) : 0) + " AND RN <= " + _Rownum; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str, "T_CHECKCOMMODITYDETAIL").Tables[0]; if (dt.Rows.Count > 0) { _PayQueryResult.trade_num = System.RealEstate_Extend.ToEncrypt( JSonHelper.DataTableToJson(dt, "T_CHECKCOMMODITYDETAIL")); _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.成功)).ToString(); _PayQueryResult.result_desc = "创建成功"; } else { _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.等待生成)).ToString(); _PayQueryResult.result_desc = "盘点明细正在生成,请稍候"; } } else { Str = "SELECT 1 FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL@HWS WHERE CHECKCOMMODITY_ID = " + CHECKCOMMODITY_ID; dt = _OracleHelperDownLoad.ExcuteSqlGetDataSet(Str, "T_CHECKCOMMODITYDETAIL").Tables[0]; if (dt.Rows.Count > 0) { _PayQueryResult.trade_num = dt.Rows.Count.ToString(); _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.成功)).ToString(); _PayQueryResult.result_desc = "创建成功"; } else { _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.等待生成)).ToString(); _PayQueryResult.result_desc = "盘点明细正在生成,请稍候"; } } } } } } } } catch (Exception ex) { LogHelper.WriteReceiveLog(ex.Message + "[" + Str + "]"); _Result = ((int)(CommonHelper.ResCode_Check.系统异常)).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = ""; _PayQueryResult.result_code = ((int)(CommonHelper.ResCode_Check.系统异常)).ToString(); _PayQueryResult.result_desc = ex.Message; } LogHelper.WriteReceiveLog("SERVERPART_CODE(" + SERVERPART_CODE + "),SERVERPARTSHOP_CODE(" + SERVERPARTSHOP_CODE + "),CHECKDATE(" + CHECKDATE + "),CHECKPERSON(" + CHECKPERSON + ") 数据返回值:result_code=" + _PayQueryResult.result_code + ",result_desc=" + _PayQueryResult.result_desc); if (CHECKSTATE == "1000") { return _Result; } else { return JSonHelper.ObjectToJson(_PayQueryResult, false); } } #endregion #region 商品审批 /// /// 商品审批 /// /// Json格式数据 /// 记录结果 [WebMethod] public string CommodityApply(string Json) { string _Result = "", _insertsql = "", _updatesql = ""; List _ListSQL = new List(); OracleHelper _OracleHelper = new OracleHelper(_OracleHelperStringsp.Split(',')[0], _OracleHelperStringsp.Split(',')[1], _OracleHelperStringsp.Split(',')[2], _OracleHelperStringsp.Split(',')[3]); DataSet _DataSet = JSonHelper.JsonToDataSet(Json); for (int n = 0; n < _DataSet.Tables.Count; n++) { DataTable _DataTable = _DataSet.Tables[n]; switch (_DataTable.TableName.ToUpper()) { //主单 case "T_COMMODITY_APPLY": string SQL = "SELECT COUNT(*) FROM HIGHWAY_EXCHANGE.T_COMMODITYAPPLY WHERE COMMODITY_APPLY_ID = " + _DataTable.Rows[0]["COMMODITY_APPLY_ID"]; DataTable dt = _OracleHelper.ExcuteSqlGetDataSet(SQL).Tables[0]; if (dt.Rows[0][0].ToString() == "0") { _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_COMMODITYAPPLY (" + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[0]) + ")"; _ListSQL.Add(_insertsql); } break; //明细 case "T_COMMODITY_APPLYDETAIL": for (int i = 0; i < _DataTable.Rows.Count; i++) { string SQL_DETAIL = "SELECT COUNT(*) FROM HIGHWAY_EXCHANGE.T_COMMODITYAPPLYDETAIL WHERE COMMODITY_BARCODE = " + _DataTable.Rows[i]["COMMODITY_BARCODE"] + " AND BUSINESSTYPE = " + _DataTable.Rows[i]["BUSINESSTYPE"] + " AND SERVERPARTCODE = " + _DataTable.Rows[i]["SERVERPARTCODE"] + " AND COMMODITY_APPLY_ID = " + _DataTable.Rows[i]["COMMODITY_APPLY_ID"]; DataTable dt_DETAIL = _OracleHelper.ExcuteSqlGetDataSet(SQL_DETAIL).Tables[0]; if (dt_DETAIL.Rows[0][0].ToString() == "0") { _insertsql = "INSERT INTO HIGHWAY_EXCHANGE.T_COMMODITYAPPLYDETAIL (" + CommonHelper.SqlColumns(_DataTable) + ") VALUES (" + CommonHelper.SqlValues(_DataTable, _DataTable.Rows[i]) + ")"; _ListSQL.Add(_insertsql); } } break; } } if (_ListSQL.Count > 0) { try { _OracleHelper.ExecuteSqlTran(_ListSQL); _Result = "9"; } catch (Exception ex) { _Result = ex.Message; LogHelper.WriteSendLog(ex.Message); } } else { _Result = "0"; } return _Result; } #endregion #region 查询销售流水集合 /// /// 查询销售流水集合 /// /// 服务区 (加密) /// 门店 (加密) /// 开始销售时间 /// 结束销售时间 /// [WebMethod] public string Get_Transfer_Selldata_List(string ServerpartCode, string ShopCode, string StartTime, string EndTime) { DataTable Transfer_Selldata_List = null; try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = string.Format(@"SELECT TRANSFER_ID,SELLDATA_DATE,SERVERPARTCODE,SHOPCODE,MACHINECODE,TICKETCODE, WORKERCODE,SELLCOUNT,OFFPRICE,FACTAMOUNT,TRANSFER_FIRSTDATAS,TRANSFER_SECONDDATAS, TRANSFER_THIRDDATAS,TRANSFER_FORTHDATAS,TRANSFER_FIFTHDATAS,TRANSFER_STATE,TRANSFER_SELLDATA_ID FROM HIGHWAY_EXCHANGE.T_TRANSFER_SELLDATA WHERE 1=1 {0} {1} {2} {3} ORDER BY SELLDATA_DATE DESC", (string.IsNullOrEmpty(ServerpartCode) ? "" : " AND SERVERPARTCODE = '" + ServerpartCode.ToDecrypt() + "'"), (string.IsNullOrEmpty(ShopCode) ? "" : " AND SHOPCODE = '" + ShopCode.ToDecrypt() + "'"), (string.IsNullOrEmpty(StartTime) ? "" : " AND SELLDATA_DATE >= TO_DATE('" + StartTime + "','YYYY/MM/DD HH24:MI:SS')"), (string.IsNullOrEmpty(EndTime) ? "" : " AND SELLDATA_DATE <= TO_DATE('" + EndTime + "','YYYY/MM/DD HH24:MI:SS')")); Transfer_Selldata_List = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (Transfer_Selldata_List.Rows.Count > 0) { return JSonHelper.DataTableToJson(Transfer_Selldata_List, "Transfer_Selldata_List"); } } catch (Exception ex) { LogHelper.WriteSendLog(ex.ToString()); } return ""; } #endregion #region 发票查验 [WebMethod] /// /// 发票查验参数 /// /// 发票代码 /// 发票号码 /// 开票日期 /// 金额(非专票随便填个值) /// 校验码后六位(专票随便填个值) /// 账号秘钥 public string BillInfoQuery(string fpdm, string fphm, string kprq, string je, string jym, string appkey, string BillType) { DataTable BillInfo = null; OracleHelper _OracleHelper = new OracleHelper(); try { _OracleHelper = new OracleHelper(_OracleHelperString.Split(',')[0], _OracleHelperString.Split(',')[1], _OracleHelperString.Split(',')[2], _OracleHelperString.Split(',')[3]); string str = @"SELECT * FROM HIGHWAY_EXCHANGE.T_BILLINFO WHERE BILL_FPDM = '" + fpdm + "' AND BILL_FPHM = '" + fphm + "' AND BILL_KPRQ = '" + kprq + (BillType == "1" ? "' AND BILLJE = '" + je + "'" : "' AND BILLJYM = '" + jym + "'"); BillInfo = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (BillInfo.Rows.Count > 0) { _OracleHelper.ExcuteSql("UPDATE HIGHWAY_EXCHANGE.T_BILLINFO SET SCAN_COUNT = SCAN_COUNT + 1 WHERE BILLINFO_ID = " + BillInfo.Rows[0]["BILLINFO_ID"].ToString()); LogHelper.WriteSendLog("查询到的票据信息参数:发票代码(fpdm):" + fpdm + ",发票号码(fphm):" + fphm + ",开票日期(kprq):" + kprq + ",金额(je):" + je + ",校验码后六位(jym):" + jym + ",账号秘钥(appkey):" + appkey + ",数据返回值:" + JSonHelper.DataTableToJson(BillInfo, "BillInfo")); return JSonHelper.DataTableToJson(BillInfo, "BillInfo"); } else { #region 票据查验 JObject _JObject = GetBillInfo(fpdm, fphm, kprq, je, jym, appkey); if (_JObject != null && _JObject["code"].ToString() == "10000" && _JObject["result"]["data"] != null) { string _BILL_JQBM = "", _BILL_XFZH = "", _BILL_GFSH = "", _BILL_GFMC = "", _BILL_GFDZ = "", _BILL_SPXX = "", _BILL_BZ = "", _BILL_XFSH = "", _BILL_JE = "", _BILL_XFMC = "", _BILL_XFDZ = "", _BILL_GFZH = "", _BILL_ZFBZ = "", _BILL_JYM = "", _BILL_STATUS = ""; #region 参数赋值 try { _BILL_JQBM = _JObject["result"]["data"]["jqbm"].ToString(); } catch { } try { _BILL_XFZH = _JObject["result"]["data"]["xfzh"].ToString(); } catch { } try { _BILL_GFSH = _JObject["result"]["data"]["gfsh"].ToString(); } catch { } try { _BILL_GFMC = _JObject["result"]["data"]["gfmc"].ToString(); } catch { } try { _BILL_GFDZ = _JObject["result"]["data"]["gfdz"].ToString(); } catch { } try { _BILL_SPXX = _JObject["result"]["data"]["spxx"].ToString(); } catch { } try { _BILL_BZ = _JObject["result"]["data"]["bz"].ToString(); } catch { } try { _BILL_XFSH = _JObject["result"]["data"]["xfsh"].ToString(); } catch { } try { _BILL_JE = _JObject["result"]["data"]["je"].ToString(); } catch { } try { _BILL_XFMC = _JObject["result"]["data"]["xfmc"].ToString(); } catch { } try { _BILL_XFDZ = _JObject["result"]["data"]["xfdz"].ToString(); } catch { } try { _BILL_GFZH = _JObject["result"]["data"]["gfzh"].ToString(); } catch { } try { _BILL_ZFBZ = _JObject["result"]["data"]["zfbz"].ToString(); } catch { } try { _BILL_JYM = _JObject["result"]["data"]["jym"].ToString(); } catch { } try { _BILL_STATUS = _JObject["result"]["data"]["status"].ToString(); } catch { } #endregion string _BILLINFO_ID = _OracleHelper.ExcuteSqlGetDataSet( "SELECT HIGHWAY_EXCHANGE.SEQ_BILLINFO.NEXTVAL FROM DUAL").Tables[0].Rows[0][0].ToString(); string SqlString = @"INSERT INTO HIGHWAY_EXCHANGE.T_BILLINFO (BILLINFO_ID,BILL_FPDM,BILL_FPHM, BILL_KPRQ,BILLJE,BILLJYM,BILL_JQBM,BILL_XFZH,BILL_GFSH,BILL_GFMC,BILL_GFDZ,BILL_SPXX, BILL_BZ,BILL_XFSH,BILL_JE,BILL_XFMC,BILL_XFDZ,BILL_GFZH,BILL_ZFBZ,BILL_JYM,BILL_STATUS, OPERATE_DATE,SCAN_COUNT) VALUES (" + _BILLINFO_ID + ",'" + fpdm + "','" + fphm + "','" + kprq + "','" + je + "','" + jym + "','" + _BILL_JQBM + "','" + _BILL_XFZH + "','" + _BILL_GFSH + "','" + _BILL_GFMC + "','" + _BILL_GFDZ + "','" + _BILL_SPXX + "','" + _BILL_BZ + "','" + _BILL_XFSH + "','" + _BILL_JE + "','" + _BILL_XFMC + "','" + _BILL_XFDZ + "','" + _BILL_GFZH + "','" + _BILL_ZFBZ + "','" + _BILL_JYM + "','" + _BILL_STATUS + "',SYSDATE,1)"; _OracleHelper.ExcuteSql(SqlString); SqlString = @"SELECT * FROM HIGHWAY_EXCHANGE.T_BILLINFO WHERE BILLINFO_ID = " + _BILLINFO_ID; BillInfo = _OracleHelper.ExcuteSqlGetDataSet(SqlString).Tables[0]; } #endregion } } catch (Exception ex) { LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("查询到的票据信息参数:发票代码(fpdm):" + fpdm + ",发票号码(fphm):" + fphm + ",开票日期(kprq):" + kprq + ",金额(je):" + je + ",校验码后六位(jym):" + jym + ",账号秘钥(appkey):" + appkey + ",数据返回值:" + JSonHelper.DataTableToJson(BillInfo, "BillInfo")); return BillInfo == null ? "" : JSonHelper.DataTableToJson(BillInfo, "BillInfo").ToString(); } protected JObject GetBillInfo(string fpdm, string fphm, string kprq, string je, string jym, string appkey) { string url = "https://way.jd.com/YiHeKeJi/fapiaochayan?fpdm=" + fpdm + "&fphm=" + fphm + "&kprq=" + kprq + "&je=" + je + "&jym=" + jym + "&appkey=" + appkey; //根据url创建HttpWebRequest对象 HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url); objRequest.Method = "get"; //读取服务器返回信息 HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse(); //using作为语句,用于定义一个范围,在此范围的末尾将释放对象 using (StreamReader sr = new StreamReader(objResponse.GetResponseStream())) { //ReadToEnd适用于小文件的读取,一次性的返回整个文件 JObject _JObject = (JObject)JsonConvert.DeserializeObject(sr.ReadToEnd()); sr.Close(); return _JObject; } } #endregion #region 百度人脸识别 [WebMethod] public string BaiduAIService(string imageBase64) { Image _Image = ImageHelper.Base64ToImage(imageBase64); FaceDetectionModel faceDetectionModel = BaiduFaceAPI.FaceDetect(_Image); if (faceDetectionModel != null && faceDetectionModel.result != null) { double _blur = faceDetectionModel.result.face_list[0].quality.blur; double _completeness = faceDetectionModel.result.face_list[0].quality.completeness; if (_blur < 0.01 && _completeness == 1) { FaceIdentifyModel identifyInfo = BaiduFaceAPI.FaceIdentify(_Image, "gsyw_cs", 1, 1); //LogHelper.WriteSendLog("人脸识别:" + JsonConvert.SerializeObject(identifyInfo)); if (identifyInfo.result.user_list[0].score > BaiduAIConfig.RECOGNITION_DEGREE) { return JsonConvert.SerializeObject(identifyInfo); } } } return JsonConvert.SerializeObject(default(FaceIdentifyModel)); } #endregion #region 方法 -> 获取人事人员信息 /// /// 获取人员信息 /// /// 手机号码 /// /// [WebMethod] public string get_staff_by_tel(string phone_number) { DataTable STAFF_List = null; if (!string.IsNullOrEmpty(phone_number)) { try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = string.Format("SELECT * FROM PERSONNEL_STORAGE.T_STAFF WHERE PHONE_NUMBER = '{0}'", phone_number.ToDecrypt()); STAFF_List = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (STAFF_List.Rows.Count > 0) { return JSonHelper.DataTableToJson(STAFF_List, "STAFF_List"); } } catch (Exception ex) { LogHelper.WriteSendLog(ex.ToString()); } } return ""; } /// /// 获取人员信息 /// /// 手机号码,姓名,省份证号 /// [WebMethod] public string get_staff(string PHONE_NUMBER, string STAFF_NAME, string ID_CARD_NO) { DataTable STAFF_List = null; try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string sqlStr = ""; if (!string.IsNullOrEmpty(PHONE_NUMBER)) { sqlStr += (string.IsNullOrEmpty(sqlStr) ? "" : " OR ") + (string.IsNullOrEmpty(PHONE_NUMBER) ? "" : " PHONE_NUMBER = '" + PHONE_NUMBER.ToDecrypt() + "'"); } if (!string.IsNullOrEmpty(STAFF_NAME)) { sqlStr += (string.IsNullOrEmpty(sqlStr) ? "" : " OR ") + (string.IsNullOrEmpty(STAFF_NAME) ? "" : " STAFF_NAME = '" + STAFF_NAME.ToDecrypt() + "'"); } if (!string.IsNullOrEmpty(ID_CARD_NO)) { sqlStr += (string.IsNullOrEmpty(sqlStr) ? "" : " OR ") + (string.IsNullOrEmpty(ID_CARD_NO) ? "" : " ID_CARD_NO = '" + ID_CARD_NO.ToDecrypt() + "'"); } string str = "SELECT * FROM PERSONNEL_STORAGE.T_STAFF WHERE " + (string.IsNullOrEmpty(sqlStr) ? "1=2" : sqlStr); STAFF_List = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (STAFF_List.Rows.Count > 0) { return JSonHelper.DataTableToJson(STAFF_List, "STAFF_List"); } } catch (Exception ex) { LogHelper.WriteSendLog(ex.ToString()); } return ""; } #endregion #region 方法 -> 获取用户数据 [WebMethod] public string get_user_list() { DataTable USER_List = null; try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = string.Format("SELECT * FROM PLATFORM_FRAMEWORK.T_USER"); USER_List = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (USER_List.Rows.Count > 0) { return JSonHelper.DataTableToJson(USER_List, "USER_List"); } } catch (Exception ex) { LogHelper.WriteSendLog(ex.ToString()); } return ""; } #endregion #region 方法 -> 获取用户分类数据 [WebMethod] public string get_usertype_list() { DataTable USER_List = null; try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string str = string.Format("SELECT * FROM PLATFORM_FRAMEWORK.T_USERTYPE ORDER BY USERTYPE_PID,USERTYPE_INDEX,USERTYPE_NAME"); USER_List = _OracleHelper.ExcuteSqlGetDataSet(str).Tables[0]; if (USER_List.Rows.Count > 0) { return JSonHelper.DataTableToJson(USER_List, "USERTYPE_List"); } } catch (Exception ex) { LogHelper.WriteSendLog(ex.ToString()); } return ""; } #endregion #region 方法 -> 获取线上订单 //[WebMethod] //public string getSaleBillList(string ServerpartCode, string ShopCode, string SaleBillID, string ProvinceCode = "330000") //{ // //OracleHelper _OracleHelper = new OracleHelper("183.129.232.107", "orcl", "MOBILESERVICE_PLATFORM", "qrwl"); // OracleHelper _OracleHelper = new OracleHelper("60.191.61.27", "orcl", "MOBILESERVICE_PLATFORM", "qrwl", "9001"); // return CommonHelper.GetSaleBill(_OracleHelper, ServerpartCode, ShopCode, SaleBillID, ProvinceCode); //} #endregion #region 方法 -> 获取主订单信息 //[WebMethod] //public string getSaleBillInfo(string ServerpartCode, string ShopCode, string SaleBillID, string ProvinceCode) //{ // OracleHelper _OracleHelper = new OracleHelper("183.129.232.107", "orcl", "MOBILESERVICE_PLATFORM", "qrwl"); // return CommonHelper.GetSaleBillInfo(_OracleHelper, ServerpartCode, ShopCode, SaleBillID, ProvinceCode); //} /// /// 获取门店主订单 /// /// 省份编码 /// 门店内码 /// 订单类型 /// 订单状态 /// 最小订单时间 /// [WebMethod] public string GetOnlineOrder(string ProvinceCode, string ServerPartShopID, string SaleBillType, string SaleBillState, string OrderDate) { try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); return WebService.SDK.MemberService.MallService.GetOnlineOrder(_OracleHelper, int.Parse(ProvinceCode), int.Parse(ServerPartShopID), int.Parse(SaleBillType), SaleBillState, DateTime.ParseExact(OrderDate, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture)); } catch (Exception ex) { LogHelper.WriteSendLog("线上订单下发失败:" + ex.Message); return ""; } } /// /// 获取订单详情 /// /// 主订单内码 /// [WebMethod] public string GetOnlineOrderDetail(string SaleBillID) { try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); return WebService.SDK.MemberService.MallService.GetOnlineOrderDetail(_OracleHelper, int.Parse(SaleBillID)); } catch (Exception ex) { LogHelper.WriteSendLog("线上订单详情下发失败:" + ex.Message); return ""; } } #endregion #region 方法 -> 修改线上订单状态 //[WebMethod] //public string UpdateSaleBillList(string SaleBillId, string SaleBillState) //{ // OracleHelper _OracleHelper = new OracleHelper("183.129.232.107", "orcl", "MOBILESERVICE_PLATFORM", "qrwl"); // return CommonHelper.UpdateSaleBill(_OracleHelper, SaleBillId, SaleBillState); //} /// /// 更新订单状态 /// /// 主订单内码 /// 订单状态 /// 接单收银机号 /// 订单打印时间 /// [WebMethod] public string UpdateSaleBillState(string SaleBillID, string OrderState, string MachineCode, string PrintDate) { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); if (string.IsNullOrEmpty(PrintDate)) { PrintDate = DateTime.Now.ToString(); } return WebService.SDK.MemberService.MallService.UpdateOnlineOrderState(_OracleHelper, int.Parse(SaleBillID), int.Parse(OrderState), MachineCode, DateTime.Parse(PrintDate)); } #endregion #region 方法 -> 修改线上详细订单状态 //public string UpdateSaleDetailList(string SaleDetailId, string SaleBillState) //{ // OracleHelper _OracleHelper = new OracleHelper("183.129.232.107", "orcl", "MOBILESERVICE_PLATFORM", "qrwl"); // return CommonHelper.UpdateSaleDetail(_OracleHelper, SaleDetailId, SaleBillState); //} #endregion #region 方法 -> 获取移动支付交易结果 /// /// 获取移动支付交易结果 /// /// 服务区编码 /// 门店编码 /// 收银机编码 /// 交易订单号 /// [WebMethod] public string MobilePayCheck(string serverPartCode, string shopCode, string machineCode, string mobilePayOrderCode) { string[] _strOrderList = mobilePayOrderCode.Split(","); string _strOrderCode = ""; for (int i = 0; i < _strOrderList.Count(); i++) { _strOrderCode += (_strOrderCode == "" ? "" : ",") + "'" + serverPartCode + shopCode + machineCode.PadLeft(4, '0') + _strOrderList[i] + "'"; } if (!String.IsNullOrWhiteSpace(_strOrderCode)) { try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); string _strSelect = String.Format("SELECT SELLDATA_ID,SELLDATA_TYPE,SELLDATA_DATE,TICKETCODE," + "COMMODITY_CODE,FACTAMOUNT,SELLDATA_EXTRA_DESC FROM HIGHWAY_EXCHANGE.T_SELLDATA_EXTRA " + "WHERE TICKETCODE IN ({0}) AND FACTAMOUNT > 0 AND UPPER(SELLDATA_EXTRA_DESC) LIKE UPPER('SUCCESS%')", _strOrderCode); DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet(_strSelect).Tables[0]; return JSonHelper.DataTableToJson(_DataTable, "MobilePay"); } catch (Exception ex) { } } return ""; } #endregion #region 方法 -> 获取门店移动支付通道配置 /// /// 获取门店移动支付通道配置 /// /// 服务区编码 /// 业态编码 /// [WebMethod] public string MobilePayConfig(string serverPartCode, string businessType) { try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.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(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); return Newtonsoft.Json.JsonConvert.SerializeObject( new WebService.SDK.FeedbackHelper().Feedback( _OracleHelper, feedbackType, jsonData)); } catch (Exception ex) { 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( _connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.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 方法 -> 消费赠礼 /// /// 上传赠送记录 /// /// json数据包 /// [WebMethod] public string UploadPresenterRecord(string presenterData) { try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); JObject _JObject = JObject.Parse(presenterData); string serverPartCode = _JObject["serverPartCode"].ToString(); string shopCode = _JObject["shopCode"].ToString(); string machineCode = _JObject["machineCode"].ToString(); string selldataDate = _JObject["selldataDate"].ToString(); string ticketCode = _JObject["ticketCode"].ToString(); string totalCount = _JObject["totalCount"].ToString(); string totalAmount = _JObject["totalAmount"].ToString(); if (!string.IsNullOrWhiteSpace(serverPartCode) && !string.IsNullOrWhiteSpace(shopCode) && !string.IsNullOrWhiteSpace(machineCode) && !string.IsNullOrWhiteSpace(selldataDate) && !string.IsNullOrWhiteSpace(ticketCode) && !string.IsNullOrWhiteSpace(totalCount) && !string.IsNullOrWhiteSpace(totalAmount)) { _OracleHelper.ExcuteSql(string.Format( @"INSERT INTO HIGHWAY_EXCHANGE.T_PRESENTERRECORD (PRESENTERRECORD_ID,SERVERPARTCODE,SHOPCODE,MACHINECODE, PRESENTERRECORD_DATE,TICKETCODE,TOTALCOUNT,TOTALAMOUNT) VALUES (HIGHWAY_EXCHANGE.SEQ_PRESENTERRECORD.NEXTVAL,'{0}','{1}', '{2}',TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS'),'{4}',{5},{6})", serverPartCode, shopCode, machineCode, selldataDate, ticketCode, totalCount, totalAmount)); return "0"; } return "-1"; } catch (Exception ex) { LogHelper.WriteSendLog("赠礼记录失败:" + ex.Message); return "-2"; } } /// /// 获取赠礼剩余数量 /// /// /// /// [WebMethod] public string PresenterRecordQuery(string serverPartCode, string startDate) { try { int _TotalCount = 190; try { _TotalCount = int.Parse(ConfigurationManager.AppSettings["LuckyCount"]); } catch { } OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); if (DateTime.Now >= new DateTime(2019, 01, 21) || serverPartCode == "888888") { int _Count = int.Parse(_OracleHelper.ExcuteSqlGetDataSet(string.Format( @"SELECT COUNT(1) AS TOTALCOUNT FROM HIGHWAY_EXCHANGE.T_PRESENTERRECORD WHERE SERVERPARTCODE = '{0}' AND PRESENTERRECORD_DATE BETWEEN TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", serverPartCode, startDate, DateTime.Now.ToString())).Tables[0].Rows[0]["TOTALCOUNT"].ToString()); if (_Count >= _TotalCount) { return "0"; } return (_TotalCount - _Count).ToString(); } } catch (Exception ex) { LogHelper.WriteSendLog("赠礼剩余数量获取失败:" + ex.Message); } return "0"; } #endregion #region 方法 -> 统一供配送中转接口 /// /// 商品信息下载接口 /// /// 总部Ajax地址 /// [WebMethod] public string DownLoadSeller(string url) { string pageHtml = ""; try { OracleHelper _OracleHelper = new OracleHelper(_connectstring.Split(',')[0], _connectstring.Split(',')[1], _connectstring.Split(',')[2], _connectstring.Split(',')[3]); if (_OracleHelper.ExcuteSqlGetDataSet(@"SELECT 1 FROM DBA_TABLES WHERE OWNER = 'HIGHWAY_EXCHANGE' AND TABLE_NAME = 'T_SELLERCOMMODITYTYPE'").Tables[0].Rows.Count == 0) { WebClient _WebClient = new WebClient(); //获取或设置用于向Internet资源的请求进行身份验证的网络凭据 _WebClient.Credentials = CredentialCache.DefaultCredentials; Byte[] pageData = _WebClient.DownloadData(url); //从指定网站下载数据 pageHtml = Encoding.UTF8.GetString(pageData); int index = pageHtml.IndexOf(":"); pageHtml = pageHtml.Substring(index + 1, pageHtml.Length - index - 2); pageHtml = pageHtml.Replace(" ", ""); pageHtml = HttpUtility.UrlDecode(pageHtml); } else { string action_type = url.Contains("action_type=") ? url.Split("action_type=")[1].Split("&")[0] : ""; string action_data = url.Contains("action_data=") ? url.Split("action_data=")[1].Split("&")[0] : ""; string action_record = url.Contains("action_record=") ? url.Split("action_record=")[1].Split("&")[0] : ""; switch (action_type) { case "DownLoadSeller": DataSet _DataSet = new DataSet(); //商品类型 DataTable SELLERCOMMODITYTYPE_DataTable = _OracleHelper.ExcuteSqlGetDataSet( "SELECT * FROM HIGHWAY_EXCHANGE.T_SELLERCOMMODITYTYPE ORDER BY TO_CHAR(TYPE_INDEX)").Tables[0]; SELLERCOMMODITYTYPE_DataTable.TableName = "T_SELLERCOMMODITYTYPE"; _DataSet.Tables.Add(SELLERCOMMODITYTYPE_DataTable.Copy()); //商品信息 string COMMODITY_SQLString = @"SELECT A.SELLERCOMMODITY_ID,SELLERBUSINESSTYPE,COMMODITY_CODE, COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_BOXCODE,COMMODITY_ALLNAME,COMMODITY_EN, COMMODITY_UNIT,COMMODITY_RULE,COMMODITY_ORI,COMMODITY_GRADE,COMMODITY_BOXSELLPRICE, SELLPRICE,COMMODITY_SELLPRICE,SELLDUTY_PARAGRAPH,PURCHASE_BOXPRICE,COMMODITY_CURRPRICE, COMMODITY_PURCHASEPRICE,DUTY_PARAGRAPH,MOVING_AVERAGEPRICE,MOVING_PURCHASEPRICE, COMMODITY_STATE,COMMODITY_DESC,ADDTIME,ISBULK,METERINGMETHOD,SELLER_ID, SELLERCOMMODITYTYPE_ID,NVL(B.BOXENTRY_COUNT,A.BOXENTRY_COUNT) AS BOXENTRY_COUNT, SUPPLIER_ID,NULL AS IMAGE_CONTENT,NULL AS TABLE_ID,NULL AS IMAGE_PATH FROM HIGHWAY_EXCHANGE.T_SELLERCOMMODITY A, (SELECT * FROM ( SELECT BOXENTRY_COUNT,SELLERCOMMODITY_ID, ROW_NUMBER()OVER(PARTITION BY SELLERCOMMODITY_ID ORDER BY ROLEPRICE_ID DESC)COLNUM FROM HIGHWAY_EXCHANGE.T_ROLEPRICE WHERE ROLEPRICE_NAME = 2000 AND WAREHOUSE_ID = 1 ) WHERE COLNUM = 1) B WHERE A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID(+) AND EXISTS (SELECT 1 FROM HIGHWAY_EXCHANGE.T_COMMODITYEX C WHERE ',' || A.COMMODITY_BARCODE || ',' LIKE '%,' || C.COMMODITY_BARCODE || ',%' AND SERVERPARTSHOP_ID = " + (string.IsNullOrEmpty(action_record) ? "0" : action_record.Split('|').Length > 1 ? action_record.Split('|')[1] : "0") + ")" + (string.IsNullOrEmpty(action_record) ? "" : (action_record.Split('|')[0] == "" ? "" : " AND A.ADDTIME > TO_DATE('" + action_record.Split('|')[0] + "','YYYY/MM/DD HH24:MI:SS')")) + " ORDER BY COMMODITY_CODE"; DataTable SELLERCOMMODITY_DataTable = _OracleHelper.ExcuteSqlGetDataSet(COMMODITY_SQLString).Tables[0]; SELLERCOMMODITY_DataTable.TableName = "T_SELLERCOMMODITY"; _DataSet.Tables.Add(SELLERCOMMODITY_DataTable.Copy()); //商品价格信息 string PRICESQLString = string.Format(@"SELECT C.SHOPPRICE_ID,B.ROLEPRICE_ID, B.SELLER_ID,B.SUPPLIER_ID,B.SELLERCOMMODITY_ID,B.COMMODITY_CODE,B.BARCODE, B.ROLEPRICE_NAME,B.COMMODITY_BOXSELLPRICE,B.SELLTAXPRICE,B.SELLPRICE, B.SELLDUTY_PARAGRAPH,NULL AS COMMODITY_BOXCOSTPRICE, B.COSTTAXPRICE,B.COSTPRICE,B.DUTY_PARAGRAPH,B.ROLEPRICE_DESC FROM HIGHWAY_EXCHANGE.T_ROLEPRICE B INNER JOIN HIGHWAY_EXCHANGE.T_SHOPPRICE C ON C.PRICE_TYPE = B.ROLEPRICE_NAME AND B.SELLERCOMMODITY_ID = C.SELLERCOMMODITY_ID WHERE B.ROLEPRICE_NAME <> '2000' AND ',' || C.SERVERPARTSHOP_ID || ',' LIKE '%,{0},%' AND EXISTS (SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLERCOMMODITY A WHERE COMMODITY_STATE = 1 AND A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID) UNION ALL SELECT C.SHOPPRICE_ID,B.ROLEPRICE_ID,B.SELLER_ID,B.SUPPLIER_ID, B.SELLERCOMMODITY_ID,B.COMMODITY_CODE,B.BARCODE,B.ROLEPRICE_NAME, B.COMMODITY_BOXSELLPRICE,B.SELLTAXPRICE,B.SELLPRICE, B.SELLDUTY_PARAGRAPH,NULL AS COMMODITY_BOXCOSTPRICE, B.COSTTAXPRICE,B.COSTPRICE,B.DUTY_PARAGRAPH,B.ROLEPRICE_DESC FROM HIGHWAY_EXCHANGE.T_ROLEPRICE B INNER JOIN (SELECT * FROM HIGHWAY_EXCHANGE.T_SHOPPRICE WHERE SELLERCOMMODITY_ID IS NULL) C ON C.PRICE_TYPE = B.ROLEPRICE_NAME WHERE B.ROLEPRICE_NAME <> '2000' AND NOT EXISTS(SELECT 1 FROM HIGHWAY_EXCHANGE.T_SHOPPRICE D WHERE B.SELLERCOMMODITY_ID = D.SELLERCOMMODITY_ID AND ',' || D.SERVERPARTSHOP_ID || ',' LIKE '%,{0},%') AND EXISTS (SELECT 1 FROM HIGHWAY_EXCHANGE.T_SELLERCOMMODITY A WHERE COMMODITY_STATE = 1 AND A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID) AND ',' || C.SERVERPARTSHOP_ID || ',' LIKE '%,{0},%'", (string.IsNullOrEmpty(action_record) ? "0" : action_record.Split('|').Length > 1 ? action_record.Split('|')[1] : "0")); DataTable ROLEPRICE_DataTable = _OracleHelper.ExcuteSqlGetDataSet(PRICESQLString).Tables[0]; ROLEPRICE_DataTable.TableName = "T_ROLEPRICE"; _DataSet.Tables.Add(ROLEPRICE_DataTable.Copy()); pageHtml = JSonHelper.DataSetToJsons(_DataSet); break; case "GetScoreSetting": DataTable T_SHOPPRICE = new DataTable(); DataTable T_SELLERCOMMODITY = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT MAX(ADDTIME) FROM HIGHWAY_EXCHANGE.T_SELLERCOMMODITY A,HIGHWAY_EXCHANGE.T_COMMODITYEX C WHERE ',' || A.COMMODITY_BARCODE || ',' LIKE '%,' || C.COMMODITY_BARCODE || ',%' AND SERVERPARTSHOP_ID = " + action_data).Tables[0]; DataTable _DataTable = _OracleHelper.ExcuteSqlGetDataSet( @"SELECT 1 AS SCORESETTING_ID,NULL AS SCORE_TYPE,NULL AS SCORE_NAME, NULL AS EXCHANGE_BASE,NULL AS CONVERTIBLE_PROPORTION,NULL AS MEET_AMOUNT, NULL AS EARN_POINTS,NULL AS START_DATE,NULL AS END_DATE,NULL AS EXPIRY_DATE, NULL AS SCORESETTING_STATE,NULL AS ADDTIME,NULL AS STAFF_ID,NULL AS STAFF_NAME, NULL AS OPERATE_DATE,NULL AS SCORESETTING_DESC,NULL AS PRICE_TYPE FROM DUAL").Tables[0]; if (!string.IsNullOrEmpty(action_data)) { T_SHOPPRICE = _OracleHelper.ExcuteSqlGetDataSet( "SELECT * FROM HIGHWAY_EXCHANGE.T_SHOPPRICE WHERE ',' || SERVERPARTSHOP_ID || ',' LIKE '%," + action_data + ",%' ORDER BY OPERATE_DATE DESC").Tables[0]; } for (int RowCount = 0; RowCount < _DataTable.Rows.Count; RowCount++) { _DataTable.Rows[RowCount]["ADDTIME"] = T_SELLERCOMMODITY.Rows.Count > 0 ? T_SELLERCOMMODITY.Rows[0][0].ToString() : ""; if (T_SHOPPRICE.Rows.Count > 0) { _DataTable.Rows[RowCount]["PRICE_TYPE"] = T_SHOPPRICE.Rows[0]["PRICE_TYPE"].ToString(); if (T_SHOPPRICE.Rows[0]["PRICE_TYPE"].ToString() == "1000") { _DataTable.Rows[RowCount]["SCORE_NAME"] = ""; } } } pageHtml = JSonHelper.DataTableToJson(_DataTable); break; default: WebClient _WebClient = new WebClient(); //获取或设置用于向Internet资源的请求进行身份验证的网络凭据 _WebClient.Credentials = CredentialCache.DefaultCredentials; Byte[] pageData = _WebClient.DownloadData(url); //从指定网站下载数据 pageHtml = Encoding.UTF8.GetString(pageData); int index = pageHtml.IndexOf(":"); pageHtml = pageHtml.Substring(index + 1, pageHtml.Length - index - 2); pageHtml = pageHtml.Replace(" ", ""); pageHtml = HttpUtility.UrlDecode(pageHtml); break; } } return pageHtml; } catch (WebException webEx) { return webEx.Message; } } /// /// 报货单上传、配送单确认接口 /// /// /// /// [WebMethod] public string UploadSeller(string url, string postDataStr) { string retString = ""; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; byte[] byteArray = Encoding.UTF8.GetBytes(postDataStr); request.ContentLength = byteArray.Length; try { using (Stream dataStream = request.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); } using (WebResponse response = request.GetResponse()) { using (Stream dataStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(dataStream)) { string responseFromServer = reader.ReadToEnd(); retString = responseFromServer; } } } } catch (Exception ex) { retString = ex.Message; } return retString; } #endregion #region 方法 -> 代理转发调用WebService接口 /// /// 代理转发调用WebService接口 /// /// 接口主地址 /// 接口名称 /// 接口参数集合 /// [WebMethod] public string ProxyInterface(string url, string methodName, string parameter) { Hashtable hashtable = JsonConvert.DeserializeObject(parameter); return SoapWSHelper.QuerySoapWebServiceString(url, methodName, hashtable); } #endregion #region 方法 -> 调用第三方移动支付接口 /// /// 调用第三方移动支付接口 /// /// /// /// /// [WebMethod] public string MobilePayProxy(string requestURL, string postData, string contentType) { if (string.IsNullOrWhiteSpace(contentType)) { contentType = "application/x-www-form-urlencoded"; } return CommonHelper.HttpUrlPost(postData, requestURL, contentType); } #endregion /// /// 高速能源券核销专用转发接口 /// /// 接口参数集合 /// [WebMethod] public string GsnyCoupon(string parameter) { string url = ConfigurationManager.AppSettings["GsnyCoupon"]; Hashtable hashtable = JsonConvert.DeserializeObject(parameter); return SoapWSHelper.QuerySoapWebServiceString(url, "MobilePayProxy", hashtable); } } }