using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Web.Services; using SDK = WebService.SDK; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using OperatingData.SDK; using HCC = HZQR.Common.Common; using HZQR.Common; using WebService.SDK; using WebService.SDK.BaiduAI.Model.FaceModel; using WebService.SDK.BaiduAI; using EShangTechService; using System.IO; using OracleHelper = OperatingData.SDK.OracleHelper; namespace ThirdPartInterfaceService { /// /// Service 的摘要说明 /// [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 [System.Web.Script.Services.ScriptService] public class Service : System.Web.Services.WebService { protected static string _OracleConnStr = ConfigurationManager.AppSettings["OracleConnStr"].ToString(); //protected static string _OracleConnStrPayList = ConfigurationManager.AppSettings["OracleConnStrPayList"].ToString(); protected static string _OracleHelperString = ConfigurationManager.AppSettings["OracleHelperString"].ToString(); protected static string VerifyCode = ConfigurationManager.AppSettings["VerifyCode"].ToString(); #region 方法 -> 移动支付交易统计传输接口 /// /// 移动支付交易统计传输接口 /// /// 授权码 /// Json格式数据 /// [WebMethod] public string DailyMobilepay(string code, string jsonString) { try { OracleHelper _OracleHelper = new OracleHelper(_OracleConnStr.Split(',')[0], _OracleConnStr.Split(',')[1], _OracleConnStr.Split(',')[2], _OracleConnStr.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); //string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); //if (codes == null) //{ // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; //} WebService.SDK.CommonHelper.MobilePayOperators _MobilePayOperators; try { if (!Enum.TryParse(code.ToDecrypt(), out _MobilePayOperators)) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } } catch { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } string[] _RequiredDatas = { "MERCHANT_CODE", "TICKET_AMOUNT", "DEDUCTION_RATE", "TAXFEE_AMOUNT", "TRADE_DATE" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List _MPSEPARATEList = JsonHelper.JSONStringToList(jsonString, "(TRADE_DATE)"); if (_MPSEPARATEList != null && _MPSEPARATEList.Count > 0) { foreach (Model.HIGHWAY.MPSEPARATE _MPSEPARATE in _MPSEPARATEList) { if (string.IsNullOrWhiteSpace(_MPSEPARATE.TRANSACTION_TRENCH)) { _MPSEPARATE.TRANSACTION_TRENCH = ((int)_MobilePayOperators).ToString(); } OperationDataHelper.InsertTableData(_OracleHelper, _MPSEPARATE, "HIGHWAY_EXCHANGE.T_MPSEPARATE", "MPSEPARATE_ID", "HIGHWAY_EXCHANGE.SEQ_MPSEPARATE.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(_MPSEPARATEList, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 方法 -> 移动支付交易流水传输接口 /// /// 移动支付交易统计传输接口 /// /// 授权码 /// Json格式数据 /// [WebMethod] public string DailyMobilepayList(string code, string jsonString) { try { string _OracleConnStrPayList = ConfigurationManager.AppSettings["OracleConnStr"].ToString(); OracleHelper _OracleHelper = new OracleHelper(_OracleConnStrPayList.Split(',')[0], _OracleConnStrPayList.Split(',')[1], _OracleConnStrPayList.Split(',')[2], _OracleConnStrPayList.Split(',')[3]); WebService.SDK.LogHelper.WriteSendLog(code + "\r\n" + jsonString); //string[] codes = OperationDataHelper.IsCorrectCode(_OracleHelper, code); //if (codes == null) //{ // WebService.SDK.LogHelper.WriteSendLog(code); // return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误或已过期\",\"rows\":[{}]}"; //} WebService.SDK.CommonHelper.MobilePayOperators _MobilePayOperators; try { if (!Enum.TryParse(code.ToDecrypt(), out _MobilePayOperators)) { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } } catch { WebService.SDK.LogHelper.WriteSendLog(code); return "{\"error\": -1 ,\"msg\": \"添加失败:授权码错误\",\"rows\":[{}]}"; } string[] _RequiredDatas = { "MERCHANT_CODE", "TICKET_AMOUNT", "DEDUCTION_RATE", "TAXFEE_AMOUNT", "TRADE_DATE" }; if (!string.IsNullOrEmpty(jsonString)) { JArray _JsonArray = JArray.Parse(jsonString); for (int i = 0; i < _JsonArray.Count; i++) { JObject _Json = JObject.Parse(_JsonArray[i].ToString()); foreach (string _RequiredData in _RequiredDatas) { if (_Json.Property(_RequiredData.ToUpper()) == null && _Json.Property(_RequiredData.ToLower()) == null) { return "{\"error\": -1 ,\"msg\": \"添加失败:第" + (i + 1) + "组数据中,JSON缺少必要参数:" + _RequiredData + "\",\"rows\":[{}]}"; } } } } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } List recordsList = JsonHelper.JSONStringToList(jsonString, "(TRADE_DATE)"); if (recordsList != null && recordsList.Count > 0) { foreach (Model.HIGHWAY.MobilePayment_Records _MobilePayment_Records in recordsList) { if (string.IsNullOrWhiteSpace(_MobilePayment_Records.Transaction_Trench)) { _MobilePayment_Records.Transaction_Trench = ((int)_MobilePayOperators).ToString(); } if (_MobilePayment_Records.Ticket_Code.Contains("-") || _MobilePayment_Records.Ticket_Code.Substring(0, 1) == "B") { _MobilePayment_Records.Ticket_Type = 1; } else { _MobilePayment_Records.Ticket_Type = 0; } try { //拆分服务区、门店、机器编号 string ticketCode = _MobilePayment_Records.Ticket_Code; _MobilePayment_Records.ServerPart_Code = ticketCode.Substring(0, 6); _MobilePayment_Records.ServerPartShop_Code = (ticketCode.Length == 28 ? ticketCode.Substring(6, 4) : ticketCode.Substring(6, 6)); _MobilePayment_Records.MachineCode = (ticketCode.Length == 28 ? ticketCode.Substring(10, 4) : ticketCode.Substring(12, 4)); //拆分下单时间 string dateString = ticketCode.Substring(ticketCode.Length - 14, 8); string hourString = ticketCode.Substring(ticketCode.Length - 6, 6); string dateStr = dateString.Substring(0, 4) + "-" + dateString.Substring(4, 2) + "-" + dateString.Substring(6, 2); string hourStr = hourString.Substring(0, 2) + ":" + hourString.Substring(2, 2) + ":" + hourString.Substring(4, 2); DateTime Order_Date = Convert.ToDateTime(dateStr + " " + hourStr); //string minutes = ticketCode.Substring(ticketCode.Length - 14, 8); _MobilePayment_Records.Order_Date = Order_Date; } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "DailyMobilepayList", "移动支付交易流水传输接口"); } OperationDataHelper.InsertTableData(_OracleHelper, _MobilePayment_Records, "HIGHWAY_SELLDATA.T_MOBILEPAYMENT_RECORDS", "MOBILEPAYMENT_RECORDS_ID", "HIGHWAY_SELLDATA.SEQ_MOBILEPAYMENT_RECORDS.NEXTVAL"); } return "{\"error\": 1 ,\"msg\": \"添加成功!\",\"rows\":" + JsonHelper.ListToJson(recordsList, "rows", false) + "}"; } else { return "{\"error\": -1 ,\"msg\": \"添加失败:JSON参数解析异常!\",\"rows\":[{}]}"; } } catch (Exception ex) { return "{\"error\": -1 ,\"msg\": \"添加失败:" + ex.ToString() + "\",\"rows\":[{}]}"; } } #endregion #region 提供给第三方做移动支付通讯 #region 创建对应的支付 [WebMethod] /// /// 支付参数 -反扫 /// /// 时间戳 /// 授权码 /// 店铺绑定码 /// 交易订单号 /// 交易金额 /// 支付授权码 /// 支付方式 /// public string createpay(string timespan, string code, string BusinessCode, string TicketCode, string TicketPrice, string UserPayCode, string PayType = "ALIPAY") { if (!Common.Verify(timespan, code, VerifyCode)) { return JsonConvert.SerializeObject(Result.Fail("验签失败")); } 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); // return JsonConvert.SerializeObject(Result.Fail("参数配置异常,服务区不匹配!", _PayCreateResult)); //} string ticket_price = TicketPrice; //string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE); string[] MerchantInfo = new string[1] { BusinessCode }; 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]); 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("用户支付中")))//支付状态 { var r = JsonConvert.DeserializeObject>(querypay( timespan, code, BusinessCode, TicketCode, "", TicketPrice, PayType)); if (r.IsSuccess) { _JObject = JObject.Parse(JsonConvert.SerializeObject(r.ResultData)); _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); return JsonConvert.SerializeObject(FromPayCreateResult(_PayCreateResult)); } #endregion #region 查询对应的支付 [WebMethod] /// /// 查询参数 /// /// 时间戳 /// 授权码 /// 店铺绑定码 /// 交易订单号 /// 商户订单号 /// 交易金额 /// 支付方式 /// public string querypay(string timespan, string code, string BusinessCode, string TicketCode, string OutTradeNo, string TicketPrice, string PayType = "ALIPAY") { if (!Common.Verify(timespan, code, VerifyCode)) { return JsonConvert.SerializeObject(Result.Fail("验签失败")); } string ResString = null; //string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE); string[] MerchantInfo = new string[1] { BusinessCode }; PayQueryResult _PayQueryResult = new PayQueryResult(); try { LogHelper.WriteSendLog("支付…查询请求参数-START[querypay]:订单编码(TICKETCODE):" + TicketCode + ",金额(TICKETPRICE):" + TicketPrice + ",付款方式:" + CommonHelper.GetPayType(PayType) + ",商户秘钥(term_Code):" + MerchantInfo[0]); //查询数据 ResString = Common.TradeQuery(TicketCode, OutTradeNo, 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, OutTradeNo, MerchantInfo)); _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 { 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();//第三方订单号 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 = ""; 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 JsonConvert.SerializeObject(FromPayQueryResult(_PayQueryResult)); } #endregion #region 移动支付退款-反扫 [WebMethod] /// /// 退款参数 /// /// 时间戳 /// 授权码 /// 店铺绑定码 /// 平台订单号 /// 退货订单号 /// 交易金额 /// 支付方式 /// public string refundpay(string timespan, string code, string BusinessCode, string mchnt_order_no, string refund_order_no, string refund_amt, string order_type) { if (!Common.Verify(timespan, code, VerifyCode)) { return JsonConvert.SerializeObject(Result.Fail("验签失败")); } string ResString = null; string ticket_price = ""; //string[] MerchantInfo = Common.GetMerchantInfo(TICKETCODE); string[] MerchantInfo = new string[1] { BusinessCode }; 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); } LogHelper.WriteSendLog("反扫…最终返回值-END[refundpay]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JsonConvert.SerializeObject(FromPayQueryResult(_PayQueryResult)); } #endregion #region 退款信息查询 /// /// 退款参数 /// /// 时间戳 /// 授权码 /// 店铺绑定码 /// 商户订单号 /// 平台订单号 /// 商户退款单号 /// 平台退款单号 /// [WebMethod] public string refundquery(string timespan, string code, string BusinessCode, string refund_order_no) { if (!Common.Verify(timespan, code, VerifyCode)) { return JsonConvert.SerializeObject(Result.Fail("验签失败")); } string ResString = null; //string[] MerchantInfo = Common.GetMerchantInfo(out_refund_no); string[] MerchantInfo = new string[1] { BusinessCode }; LogHelper.WriteSendLog("退款查询…请求参数-START[refundquery]:商户退款单号(out_refund_no):" + refund_order_no + ",商户编码(memberCode):" + MerchantInfo[0] ); 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", ""); PayQueryResult _PayQueryResult = new PayQueryResult(); try { ResString = Common.RefundQuery("", "", refund_order_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 = refund_order_no; _PayQueryResult.result_desc = "SUCCESS"; } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.支付失败).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = refund_order_no; _PayQueryResult.result_desc = _JObject["remark"].ToString(); } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.支付失败).ToString(); _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = refund_order_no; _PayQueryResult.result_desc = _JObject["errmsg"].ToString(); } } else { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "系统异常"; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = refund_order_no; } } catch (Exception ex) { _PayQueryResult.result_code = ((int)CommonHelper.ResCode.系统异常).ToString(); _PayQueryResult.result_desc = "错误为:" + ResString; //"____其他错误:" + ex.Message; _PayQueryResult.trade_no = ""; _PayQueryResult.trade_num = refund_order_no; LogHelper.WriteSendLog(ex.Message); } LogHelper.WriteSendLog("退款查询…最终返回值[refundquery]:" + JSonHelper.ObjectToJson(_PayQueryResult, false)); return JsonConvert.SerializeObject(FromPayQueryResult(_PayQueryResult)); } #endregion #region 查询方法 private string querypay(string TICKETCODE, string OUT_TRADE_NO, string[] MerchantInfo) { 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); } private Result FromPayQueryResult(PayQueryResult payQueryResult) { return new Result() { ResultCode = payQueryResult.result_code, ResultDesc = payQueryResult.result_desc, ResultData = new PayResultRes() { trade_no = payQueryResult.trade_no, trade_num = payQueryResult.trade_num } }; } private Result FromPayCreateResult(PayCreateResult payCreateResult) { return new Result() { ResultCode = payCreateResult.result_code, ResultDesc = payCreateResult.result_desc, ResultData = new PayResultRes() { trade_no = payCreateResult.trade_no, trade_num = payCreateResult.trade_num } }; } #endregion #endregion } }