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
}
}