2025-03-28 09:49:56 +08:00

930 lines
48 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Newtonsoft.Json;
using System;
namespace libESPay
{
public class ESPayService
{
#region
#region ->
/// <summary>
/// 客无忧条码支付
/// </summary>
/// <param name="merchantCode">客无忧商户号</param>
/// <param name="merchantKey">客无忧商户密钥 预留</param>
/// <param name="authCode">用户支付授权码</param>
/// <param name="orderCode">系统交易订单号</param>
/// <param name="oderAmount">交易金额(元)</param>
/// <returns></returns>
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 ->
/// <summary>
/// 客无忧支付查询
/// </summary>
/// <param name="merchantCode">客无忧商户号</param>
/// <param name="merchantKey">客无忧商户密钥 预留</param>
/// <param name="merchantOrderCode">系统交易订单号
/// 注:与平台订单号必填一项</param>
/// <param name="platformOrderCode">平台订单号
/// 注:与系统交易订单号必填一项</param>
/// <param name="payAmount">交易金额(元)</param>
/// <returns></returns>
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 -> 退
/// <summary>
/// 客无忧支付退款
/// </summary>
/// <param name="merchantCode">客无忧商户号</param>
/// <param name="merchantKey">客无忧商户密钥 预留</param>
/// <param name="refundOrderCode">系统退款订单号</param>
/// <param name="platformOrderCode">平台订单号(原流水号)</param>
/// <param name="payAmount">退款金额(元)</param>
/// <returns></returns>
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串
/// <summary>
/// 判断交易结果返回JSON串
/// </summary>
/// <param name="orderCode">交易订单号</param>
/// <param name="queryResultModel">平台返回结果</param>
/// <returns></returns>
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 ->
/// <summary>
/// 银联条码支付
/// </summary>
/// <param name="merchantCode">银联平台商户号</param>
/// <param name="merchantKey">银联平台商户密钥</param>
/// <param name="authCode">用户支付授权码</param>
/// <param name="orderCode">系统交易订单号</param>
/// <param name="oderAmount">交易金额(元)</param>
/// <returns></returns>
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 ->
/// <summary>
/// 银联支付查询
/// </summary>
/// <param name="merchantCode">银联平台商户号</param>
/// <param name="merchantKey">银联平台商户密钥</param>
/// <param name="merchantOrderCode">系统交易订单号
/// 注:与平台订单号必填一项</param>
/// <param name="platformOrderCode">平台订单号
/// 注:与系统交易订单号必填一项</param>
/// <param name="payAmount">交易金额(元)</param>
/// <returns></returns>
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 -> 退
/// <summary>
/// 银联支付退款
/// </summary>
/// <param name="merchantCode">银联平台商户号</param>
/// <param name="merchantKey">银联平台商户密钥</param>
/// <param name="refundOrderCode">系统退款订单号</param>
/// <param name="platformOrderCode">平台订单号(原流水号)</param>
/// <param name="payAmount">退款金额(元)</param>
/// <returns></returns>
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 -> 退
/// <summary>
/// 银联支付退款查询
/// </summary>
/// <param name="merchantCode">银联平台商户号</param>
/// <param name="merchantKey">银联平台商户密钥</param>
/// <param name="platformOrderCode">平台订单号</param>
/// <param name="merchantOrderCode">商户订单号</param>
/// <param name="platformRefundCode">平台退款单号</param>
/// <param name="refundOrderCode">商户退款单号</param>
/// <param name="payAmount">交易金额(元)</param>
/// <returns></returns>
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 ->
/// <summary>
/// 联动优势(南京银行)条码支付
/// </summary>
/// <param name="merchantCode">客无忧商户号</param>
/// <param name="merchantKey">客无忧商户密钥 预留</param>
/// <param name="authCode">用户支付授权码</param>
/// <param name="orderCode">系统交易订单号</param>
/// <param name="oderAmount">交易金额(元)</param>
/// <returns></returns>
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 ->
/// <summary>
/// 联动优势(南京银行)支付查询
/// </summary>
/// <param name="merchantCode">联动优势(南京银行)商户号</param>
/// <param name="merchantKey">联动优势(南京银行)商户密钥 预留</param>
/// <param name="merchantOrderCode">系统交易订单号
/// 注:与平台订单号必填一项</param>
/// <param name="platformOrderCode">平台订单号
/// 注:与系统交易订单号必填一项</param>
/// <param name="payAmount">交易金额(元)</param>
/// <returns></returns>
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 -> 退
/// <summary>
/// 联动优势(南京银行)支付退款
/// </summary>
/// <param name="merchantCode">联动优势(南京银行)平台商户号</param>
/// <param name="merchantKey">联动优势(南京银行)平台商户密钥</param>
/// <param name="refundOrderCode">系统退款订单号</param>
/// <param name="platformOrderCode">平台订单号(原流水号)</param>
/// <param name="payAmount">退款金额(元)</param>
/// <returns></returns>
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 -> 退
/// <summary>
/// 联动优势(南京银行)支付退款查询
/// </summary>
/// <param name="merchantCode">联动优势(南京银行)平台商户号</param>
/// <param name="merchantKey">联动优势(南京银行)平台商户密钥</param>
/// <param name="platformOrderCode">平台订单号</param>
/// <param name="merchantOrderCode">商户订单号</param>
/// <param name="platformRefundCode">平台退款单号</param>
/// <param name="refundOrderCode">商户退款单号</param>
/// <param name="payAmount">交易金额(元)</param>
/// <returns></returns>
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
}
}