using Newtonsoft.Json; using System; namespace libESPay { public class ESPayService { #region 客无忧直连交易 #region 方法 -> 客无忧条码支付 /// /// 客无忧条码支付 /// /// 客无忧商户号 /// 客无忧商户密钥 预留 /// 用户支付授权码 /// 系统交易订单号 /// 交易金额(元) /// public static string KwyPayScan(string merchantCode, string merchantKey, string authCode, string orderCode, string oderAmount) { //初始化交易配置 KwyPay.KwyPayConfig _PayConfig = new KwyPay.KwyPayConfig( PayUtils.MobilePayConfig.KWYPay.ApiOpenID, PayUtils.MobilePayConfig.KWYPay.ApiKey, PayUtils.MobilePayConfig.KWYPay.ApiOrganization, PayUtils.MobilePayConfig.KWYPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; try { //发起交易请求并返回结果 return KwyPayServiceResult(orderCode, KwyPay.KwyPayAPI.MicroPay( _PayConfig, _PayMerchant, authCode, orderCode, oderAmount)); } catch (Exception ex) { return JsonConvert.SerializeObject(new PayModel.PayResultModel { result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(), trade_no = "", trade_num = orderCode, result_desc = $"系统异常:{ex.Message}" }); } } #endregion #region 方法 -> 客无忧支付查询 /// /// 客无忧支付查询 /// /// 客无忧商户号 /// 客无忧商户密钥 预留 /// 系统交易订单号 /// 注:与平台订单号必填一项 /// 平台订单号 /// 注:与系统交易订单号必填一项 /// 交易金额(元) /// public static string KwyPayQuery(string merchantCode, string merchantKey, string merchantOrderCode, string platformOrderCode, string payAmount) { //初始化交易配置 KwyPay.KwyPayConfig _PayConfig = new KwyPay.KwyPayConfig( PayUtils.MobilePayConfig.KWYPay.ApiOpenID, PayUtils.MobilePayConfig.KWYPay.ApiKey, PayUtils.MobilePayConfig.KWYPay.ApiOrganization, PayUtils.MobilePayConfig.KWYPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; try { //发起交易查询并返回结果 return KwyPayServiceResult(merchantOrderCode, KwyPay.KwyPayAPI.OrderQuery( _PayConfig, _PayMerchant, merchantOrderCode, platformOrderCode, payAmount)); } catch (Exception ex) { return JsonConvert.SerializeObject(new PayModel.PayResultModel { result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(), trade_no = "", trade_num = merchantOrderCode, result_desc = $"系统异常:{ex.Message}" }); } } #endregion #region 方法 -> 客无忧支付退款 /// /// 客无忧支付退款 /// /// 客无忧商户号 /// 客无忧商户密钥 预留 /// 系统退款订单号 /// 平台订单号(原流水号) /// 退款金额(元) /// public static string KwyPayRefund(string merchantCode, string merchantKey, string refundOrderCode, string platformOrderCode, string payAmount) { //初始化交易配置 KwyPay.KwyPayConfig _PayConfig = new KwyPay.KwyPayConfig( PayUtils.MobilePayConfig.KWYPay.ApiOpenID, PayUtils.MobilePayConfig.KWYPay.ApiKey, PayUtils.MobilePayConfig.KWYPay.ApiOrganization, PayUtils.MobilePayConfig.KWYPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; try { //发起交易退款并返回结果 KwyPay.Model.QueryResultModel queryResultModel = KwyPay.KwyPayAPI.RefundPrice( _PayConfig, _PayMerchant, platformOrderCode, "", refundOrderCode, payAmount); if (queryResultModel == null) { //参数缺失返回 return JsonConvert.SerializeObject(new PayModel.PayResultModel { result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(), trade_no = "", trade_num = refundOrderCode, result_desc = "交易请求参数缺失" }); } if (queryResultModel.errcode == "0") { //退款成功返回 return JsonConvert.SerializeObject(new PayModel.PayResultModel { result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(), trade_no = "", trade_num = refundOrderCode, result_desc = "SUCCESS" }); } else { //退款失败返回 return JsonConvert.SerializeObject(new PayModel.PayResultModel { result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(), trade_no = "", trade_num = refundOrderCode, result_desc = queryResultModel.errmsg }); } } catch (Exception ex) { return JsonConvert.SerializeObject(new PayModel.PayResultModel { result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(), trade_no = "", trade_num = refundOrderCode, result_desc = $"系统异常:{ex.Message}" }); } } #endregion #region 方法 -> 判断交易结果,返回JSON串 /// /// 判断交易结果,返回JSON串 /// /// 交易订单号 /// 平台返回结果 /// private static string KwyPayServiceResult(string orderCode, KwyPay.Model.QueryResultModel queryResultModel) { PayModel.PayResultModel payResult = new PayModel.PayResultModel(); if (queryResultModel == null) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = "交易请求参数缺失"; return JsonConvert.SerializeObject(payResult); } if (queryResultModel.errcode == "0") { switch (queryResultModel.order_info.pay_status) { case "已支付": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = queryResultModel.order_info.transaction_id; payResult.trade_num = queryResultModel.order_info.out_no; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); case "支付中": case "用户支付中": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.订单待支付).ToString(); payResult.trade_no = queryResultModel.order_info.transaction_id; payResult.trade_num = orderCode; payResult.result_desc = "USERPAYING"; return JsonConvert.SerializeObject(payResult); case "已退款": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = queryResultModel.order_info.transaction_id; payResult.trade_num = orderCode; payResult.result_desc = queryResultModel.order_info.pay_status; return JsonConvert.SerializeObject(payResult); default: payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = queryResultModel.order_info.transaction_id; payResult.trade_num = orderCode; payResult.result_desc = queryResultModel.order_info.pay_status; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = queryResultModel.errmsg; return JsonConvert.SerializeObject(payResult); } } #endregion #endregion #region 银联(众码)直连交易 #region 方法 -> 银联条码支付 /// /// 银联条码支付 /// /// 银联平台商户号 /// 银联平台商户密钥 /// 用户支付授权码 /// 系统交易订单号 /// 交易金额(元) /// public static string UnionPayScan(string merchantCode, string merchantKey, string authCode, string orderCode, string oderAmount) { //初始化交易配置 UnionPay.UnionPayConfig _PayConfig = new UnionPay.UnionPayConfig( PayUtils.MobilePayConfig.UnionPay.ApiAPPID, PayUtils.MobilePayConfig.UnionPay.ApiKey, PayUtils.MobilePayConfig.UnionPay.ApiOrganization, PayUtils.MobilePayConfig.UnionPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { DateTime _PayTime = DateTime.Now; //创建交易并返回结果 UnionPay.Model.ScanResultModel _ScanResult = UnionPay.UnionPayAPI.MerchantScanPay( _PayConfig, _PayMerchant, authCode, "127.0.0.1", orderCode, "服务区商品", oderAmount, _PayTime.ToString("yyyyMMddHHmmss"), _PayTime.AddMinutes(5).ToString("yyyyMMddHHmmss")); if (_ScanResult == null) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = "交易请求参数缺失"; return JsonConvert.SerializeObject(payResult); } if (_ScanResult.status == "0") { if (_ScanResult.result_code == "0") { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _ScanResult.transaction_id; payResult.trade_num = _ScanResult.out_trade_no; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.订单待支付).ToString(); payResult.trade_no = _ScanResult.transaction_id; payResult.trade_num = orderCode; payResult.result_desc = _ScanResult.err_msg; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = _ScanResult.err_msg; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = $"系统异常:{ex.Message}"; return JsonConvert.SerializeObject(payResult); } } #endregion #region 方法 -> 银联支付查询 /// /// 银联支付查询 /// /// 银联平台商户号 /// 银联平台商户密钥 /// 系统交易订单号 /// 注:与平台订单号必填一项 /// 平台订单号 /// 注:与系统交易订单号必填一项 /// 交易金额(元) /// public static string UnionPayQuery(string merchantCode, string merchantKey, string merchantOrderCode, string platformOrderCode, string payAmount) { //初始化交易配置 UnionPay.UnionPayConfig _PayConfig = new UnionPay.UnionPayConfig( PayUtils.MobilePayConfig.UnionPay.ApiAPPID, PayUtils.MobilePayConfig.UnionPay.ApiKey, PayUtils.MobilePayConfig.UnionPay.ApiOrganization, PayUtils.MobilePayConfig.UnionPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { UnionPay.Model.QueryResultModel _QueryResult = UnionPay.UnionPayAPI.QueryPay( _PayConfig, _PayMerchant, merchantOrderCode, platformOrderCode, payAmount); if (_QueryResult == null) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = merchantOrderCode; payResult.result_desc = "交易请求参数缺失"; return JsonConvert.SerializeObject(payResult); } if (_QueryResult.status != "0") { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = merchantOrderCode; payResult.result_desc = _QueryResult.message; return JsonConvert.SerializeObject(payResult); } if (_QueryResult.result_code != "0") { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = merchantOrderCode; payResult.result_desc = _QueryResult.err_msg; return JsonConvert.SerializeObject(payResult); } switch (_QueryResult.trade_state.ToUpper()) { case "SUCCESS": case "REFUND": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _QueryResult.transaction_id; payResult.trade_num = _QueryResult.out_trade_no; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); case "USERPAYING": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.订单待支付).ToString(); payResult.trade_no = _QueryResult.transaction_id; payResult.trade_num = _QueryResult.out_trade_no; payResult.result_desc = _QueryResult.trade_state_desc; return JsonConvert.SerializeObject(payResult); case "NOTPAY": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.未支付).ToString(); payResult.trade_no = _QueryResult.transaction_id; payResult.trade_num = _QueryResult.out_trade_no; payResult.result_desc = _QueryResult.trade_state_desc; return JsonConvert.SerializeObject(payResult); case "CLOSED": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.已关闭).ToString(); payResult.trade_no = _QueryResult.transaction_id; payResult.trade_num = _QueryResult.out_trade_no; payResult.result_desc = _QueryResult.trade_state_desc; return JsonConvert.SerializeObject(payResult); case "REVOKED": case "REVERSE": case "REVOKED/REVERSE": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.已撤销).ToString(); payResult.trade_no = _QueryResult.transaction_id; payResult.trade_num = _QueryResult.out_trade_no; payResult.result_desc = _QueryResult.trade_state_desc; return JsonConvert.SerializeObject(payResult); case "PAYERROR": default: payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = _QueryResult.transaction_id; payResult.trade_num = _QueryResult.out_trade_no; payResult.result_desc = _QueryResult.trade_state_desc; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.trade_no = ""; payResult.trade_num = merchantOrderCode; payResult.result_desc = $"系统异常:{ex.Message}"; return JsonConvert.SerializeObject(payResult); } } #endregion #region 方法 -> 银联支付退款 /// /// 银联支付退款 /// /// 银联平台商户号 /// 银联平台商户密钥 /// 系统退款订单号 /// 平台订单号(原流水号) /// 退款金额(元) /// public static string UnionPayRefund(string merchantCode, string merchantKey, string refundOrderCode, string platformOrderCode, string payAmount) { //初始化交易配置 UnionPay.UnionPayConfig _PayConfig = new UnionPay.UnionPayConfig( PayUtils.MobilePayConfig.UnionPay.ApiAPPID, PayUtils.MobilePayConfig.UnionPay.ApiKey, PayUtils.MobilePayConfig.UnionPay.ApiOrganization, PayUtils.MobilePayConfig.UnionPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { UnionPay.Model.RefundResultModel _RefundResult = UnionPay.UnionPayAPI.RefundPay( _PayConfig, _PayMerchant, platformOrderCode, "", refundOrderCode, payAmount); if (_RefundResult == null) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = "交易请求参数缺失"; return JsonConvert.SerializeObject(payResult); } if (_RefundResult.status != "0") { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundResult.message; return JsonConvert.SerializeObject(payResult); } if (_RefundResult.result_code == "0") { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _RefundResult.refund_id; payResult.trade_num = _RefundResult.out_refund_no; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = _RefundResult.refund_id; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundResult.err_code; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = $"系统异常:{ex.Message}"; return JsonConvert.SerializeObject(payResult); } } #endregion #region 方法 -> 银联支付退款查询 /// /// 银联支付退款查询 /// /// 银联平台商户号 /// 银联平台商户密钥 /// 平台订单号 /// 商户订单号 /// 平台退款单号 /// 商户退款单号 /// 交易金额(元) /// public static string UnionPayRefundQuery(string merchantCode, string merchantKey, string platformOrderCode, string merchantOrderCode, string platformRefundCode, string refundOrderCode, string payAmount) { //初始化交易配置 UnionPay.UnionPayConfig _PayConfig = new UnionPay.UnionPayConfig( PayUtils.MobilePayConfig.UnionPay.ApiAPPID, PayUtils.MobilePayConfig.UnionPay.ApiKey, PayUtils.MobilePayConfig.UnionPay.ApiOrganization, PayUtils.MobilePayConfig.UnionPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { UnionPay.Model.RefundQueryResultModel _RefundQueryResult = UnionPay.UnionPayAPI.RefundQuery( _PayConfig, _PayMerchant, platformOrderCode, merchantOrderCode, platformRefundCode, refundOrderCode); if (_RefundQueryResult == null) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = "交易请求参数缺失"; return JsonConvert.SerializeObject(payResult); } if (_RefundQueryResult.status != "0") { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundQueryResult.message; return JsonConvert.SerializeObject(payResult); } if (_RefundQueryResult.result_code != "0") { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = _RefundQueryResult.refund_id_0; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundQueryResult.err_code; return JsonConvert.SerializeObject(payResult); } switch (_RefundQueryResult.refund_status_0) { case "SUCCESS": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _RefundQueryResult.refund_id_0; payResult.trade_num = _RefundQueryResult.out_refund_no_0; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); case "PROCESSING": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.订单待支付).ToString(); payResult.trade_no = _RefundQueryResult.refund_id_0; payResult.trade_num = _RefundQueryResult.out_refund_no_0; payResult.result_desc = _RefundQueryResult.refund_status_0; return JsonConvert.SerializeObject(payResult); case "CHANGE": case "FAIL": case "NOTSURE": default: payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = _RefundQueryResult.refund_id_0; payResult.trade_num = _RefundQueryResult.out_refund_no_0; payResult.result_desc = _RefundQueryResult.refund_status_0; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = $"系统异常:{ex.Message}"; return JsonConvert.SerializeObject(payResult); } } #endregion #endregion #region 联动优势(南京银行)直连交易 #region 方法 -> 联动优势(南京银行)条码支付 /// /// 联动优势(南京银行)条码支付 /// /// 客无忧商户号 /// 客无忧商户密钥 预留 /// 用户支付授权码 /// 系统交易订单号 /// 交易金额(元) /// public static string IRichPayScan(string merchantCode, string merchantKey, string authCode, string orderCode, string oderAmount) { IRichPay.IRichPayConfig _PayConfig = new IRichPay.IRichPayConfig( PayUtils.MobilePayConfig.IRichPay.ApiAPPID, PayUtils.MobilePayConfig.IRichPay.ApiKey, PayUtils.MobilePayConfig.IRichPay.ApiOrganization, PayUtils.MobilePayConfig.IRichPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { //创建交易并返回结果 IRichPay.Model.IRichPayResultModel _IRichPayResult = IRichPay.IRichPayAPI.BeScanPay( _PayConfig, _PayMerchant, authCode, orderCode, oderAmount); if (_IRichPayResult != null) { switch (_IRichPayResult.status) { case "00": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _IRichPayResult.data.orderid; payResult.trade_num = _IRichPayResult.data.orderid; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); case "500": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.订单待支付).ToString(); payResult.trade_no = _IRichPayResult.data.orderid; payResult.trade_num = orderCode; payResult.result_desc = _IRichPayResult.data.tips; return JsonConvert.SerializeObject(payResult); case "01": default: payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = _IRichPayResult.data.tips; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = "该门店未配置商户号信息"; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.trade_no = ""; payResult.trade_num = orderCode; payResult.result_desc = ex.Message; return JsonConvert.SerializeObject(payResult); } } #endregion #region 方法 -> 联动优势(南京银行)支付查询 /// /// 联动优势(南京银行)支付查询 /// /// 联动优势(南京银行)商户号 /// 联动优势(南京银行)商户密钥 预留 /// 系统交易订单号 /// 注:与平台订单号必填一项 /// 平台订单号 /// 注:与系统交易订单号必填一项 /// 交易金额(元) /// public static string IRichPayQuery(string merchantCode, string merchantKey, string merchantOrderCode, string platformOrderCode, string payAmount) { IRichPay.IRichPayConfig _PayConfig = new IRichPay.IRichPayConfig( PayUtils.MobilePayConfig.IRichPay.ApiAPPID, PayUtils.MobilePayConfig.IRichPay.ApiKey, PayUtils.MobilePayConfig.IRichPay.ApiOrganization, PayUtils.MobilePayConfig.IRichPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { IRichPay.Model.IRichPayResultModel _QueryResult = IRichPay.IRichPayAPI.QueryPay( _PayConfig, _PayMerchant, merchantOrderCode, platformOrderCode, payAmount); if (_QueryResult != null) { if (_QueryResult.status == "00") { switch (_QueryResult.data.orderstatus) { case "2": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _QueryResult.data.orderid; payResult.trade_num = _QueryResult.data.orderid; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); case "1": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.订单待支付).ToString(); payResult.trade_no = _QueryResult.data.orderid; payResult.trade_num = _QueryResult.data.orderid; payResult.result_desc = _QueryResult.data.tips; return JsonConvert.SerializeObject(payResult); case "5": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.已关闭).ToString(); payResult.trade_no = _QueryResult.data.orderid; payResult.trade_num = _QueryResult.data.orderid; payResult.result_desc = _QueryResult.data.tips; return JsonConvert.SerializeObject(payResult); case "4": case "7": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.已撤销).ToString(); payResult.trade_no = _QueryResult.data.orderid; payResult.trade_num = _QueryResult.data.orderid; payResult.result_desc = _QueryResult.data.tips; return JsonConvert.SerializeObject(payResult); case "3": default: payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = _QueryResult.data.orderid; payResult.trade_num = _QueryResult.data.orderid; payResult.result_desc = _QueryResult.data.tips; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.result_desc = _QueryResult.msg; payResult.trade_no = ""; payResult.trade_num = merchantOrderCode; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.result_desc = "该门店未配置商户号信息"; payResult.trade_no = ""; payResult.trade_num = merchantOrderCode; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.result_desc = ex.Message; payResult.trade_no = ""; payResult.trade_num = merchantOrderCode; return JsonConvert.SerializeObject(payResult); } } #endregion #region 方法 -> 联动优势(南京银行)支付退款 /// /// 联动优势(南京银行)支付退款 /// /// 联动优势(南京银行)平台商户号 /// 联动优势(南京银行)平台商户密钥 /// 系统退款订单号 /// 平台订单号(原流水号) /// 退款金额(元) /// public static string IRichPayRefund(string merchantCode, string merchantKey, string refundOrderCode, string platformOrderCode, string payAmount) { IRichPay.IRichPayConfig _PayConfig = new IRichPay.IRichPayConfig( PayUtils.MobilePayConfig.IRichPay.ApiAPPID, PayUtils.MobilePayConfig.IRichPay.ApiKey, PayUtils.MobilePayConfig.IRichPay.ApiOrganization, PayUtils.MobilePayConfig.IRichPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { IRichPay.Model.IRichPayResultModel _RefundResult = IRichPay.IRichPayAPI.PayRefund( _PayConfig, _PayMerchant, platformOrderCode, platformOrderCode, refundOrderCode, payAmount); if (_RefundResult != null) { switch (_RefundResult.status) { case "00": case "02": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _RefundResult.data.refundorderid; payResult.trade_num = refundOrderCode; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); //case "02": //_PayQueryResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.转入退款).ToString(); //_PayQueryResult.trade_no = ""; //_PayQueryResult.trade_num = refund_order_no; //_PayQueryResult.result_desc = _RefundResult.msg; //return JsonConvert.SerializeObject(payResult); case "01": default: payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundResult.data.tips; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.result_desc = "该门店未配置商户号信息"; payResult.trade_no = ""; payResult.trade_num = refundOrderCode; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.result_desc = ex.Message; payResult.trade_no = ""; payResult.trade_num = refundOrderCode; return JsonConvert.SerializeObject(payResult); } } #endregion #region 方法 -> 联动优势(南京银行)支付退款查询 /// /// 联动优势(南京银行)支付退款查询 /// /// 联动优势(南京银行)平台商户号 /// 联动优势(南京银行)平台商户密钥 /// 平台订单号 /// 商户订单号 /// 平台退款单号 /// 商户退款单号 /// 交易金额(元) /// public static string IRichPayRefundQuery(string merchantCode, string merchantKey, string platformOrderCode, string merchantOrderCode, string platformRefundCode, string refundOrderCode, string payAmount) { IRichPay.IRichPayConfig _PayConfig = new IRichPay.IRichPayConfig( PayUtils.MobilePayConfig.IRichPay.ApiAPPID, PayUtils.MobilePayConfig.IRichPay.ApiKey, PayUtils.MobilePayConfig.IRichPay.ApiOrganization, PayUtils.MobilePayConfig.IRichPay.ApiURL); PayUtils.MobilePayConfig.PayMerchant _PayMerchant = new PayUtils.MobilePayConfig.PayMerchant { MerchantCode = merchantCode, MerchantKey = merchantKey }; PayModel.PayResultModel payResult = new PayModel.PayResultModel(); try { IRichPay.Model.IRichPayResultModel _RefundQueryResult = IRichPay.IRichPayAPI.PayQueryRefund( _PayConfig, _PayMerchant, merchantOrderCode, platformOrderCode, payAmount); if (_RefundQueryResult != null) { if (_RefundQueryResult.status == "00") { switch (_RefundQueryResult.data.orderstatus) { case "1": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.订单待支付).ToString(); payResult.trade_no = _RefundQueryResult.data.refundorderid; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundQueryResult.data.tips; return JsonConvert.SerializeObject(payResult); case "5": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.已关闭).ToString(); payResult.trade_no = _RefundQueryResult.data.refundorderid; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundQueryResult.data.tips; return JsonConvert.SerializeObject(payResult); case "4": case "7": payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付成功).ToString(); payResult.trade_no = _RefundQueryResult.data.refundorderid; payResult.trade_num = refundOrderCode; payResult.result_desc = "SUCCESS"; return JsonConvert.SerializeObject(payResult); case "2": case "3": default: payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.支付失败).ToString(); payResult.trade_no = _RefundQueryResult.data.refundorderid; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundQueryResult.data.tips; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = _RefundQueryResult.msg; return JsonConvert.SerializeObject(payResult); } } else { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.请求参数错误).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = "该门店未配置商户号信息"; return JsonConvert.SerializeObject(payResult); } } catch (Exception ex) { payResult.result_code = ((int)PayUtils.MobilePayConfig.ResultCode.系统异常).ToString(); payResult.trade_no = ""; payResult.trade_num = refundOrderCode; payResult.result_desc = ex.Message; return JsonConvert.SerializeObject(payResult); } } #endregion #endregion } }