207 lines
9.8 KiB
C#
207 lines
9.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using WebService.SDK.PayCommon;
|
|
|
|
namespace WebService.SDK.ICBCPay
|
|
{
|
|
public class ICBCPayAPI
|
|
{
|
|
#region 工商银行被扫交易接口
|
|
/// <summary>
|
|
/// 工商银行被扫交易接口
|
|
/// </summary>
|
|
/// <param name="payConfig">接口配置</param>
|
|
/// <param name="merchantInfo">平台商户信息</param>
|
|
/// <param name="authCode">用户付款授权码</param>
|
|
/// <param name="merchantOrderCode">商户交易订单号</param>
|
|
/// <param name="payAmount">交易金额,单位:分</param>
|
|
/// <returns></returns>
|
|
public static Model.QrcodePayResponseV2 ScanPay(ICBCPayConfig payConfig,
|
|
MobilePayConfig.PayMerchant merchantInfo, string authCode, string merchantOrderCode, string payAmount)
|
|
{
|
|
//验证交易接口配置
|
|
if (payConfig == null)
|
|
{
|
|
return default(Model.QrcodePayResponseV2);
|
|
}
|
|
//验证交易参数信息
|
|
if (merchantInfo == null || string.IsNullOrWhiteSpace(merchantInfo.MerchantCode))
|
|
{
|
|
return default(Model.QrcodePayResponseV2);
|
|
}
|
|
//验证交易金额
|
|
if (!decimal.TryParse(payAmount, out decimal _PayAmount) || _PayAmount <= 0)
|
|
{
|
|
return default(Model.QrcodePayResponseV2);
|
|
}
|
|
//实例化交易传输类
|
|
Common.DefaultIcbcClient _ICBCClient = new Common.DefaultIcbcClient(payConfig.ICBCAPPID,
|
|
Common.IcbcConstants.SIGN_TYPE_RSA2, payConfig.UserPrivateKey, payConfig.ICBCPublicKey);
|
|
//实例化交易数据类
|
|
Model.QrcodePayRequestV2 _ScanPayRequest = new Model.QrcodePayRequestV2();
|
|
//设置交易接口地址
|
|
_ScanPayRequest.setServiceUrl(payConfig.ScanURL);
|
|
//填充交易请求数据
|
|
Model.QrcodePayRequestV2.QrcodePayRequestV2Biz _ScanPayRequestBiz =
|
|
new Model.QrcodePayRequestV2.QrcodePayRequestV2Biz
|
|
{
|
|
mer_id = merchantInfo.MerchantCode,
|
|
qr_code = authCode,
|
|
out_trade_no = merchantOrderCode,
|
|
trade_date = DateTime.Now.ToString("yyyyMMdd"),
|
|
trade_time = DateTime.Now.ToString("HHmmss"),
|
|
order_amt = payAmount
|
|
};
|
|
_ScanPayRequest.setBizContent(_ScanPayRequestBiz);
|
|
//请求并返回操作结果
|
|
return (Model.QrcodePayResponseV2)_ICBCClient.execute(_ScanPayRequest);
|
|
}
|
|
#endregion
|
|
#region 工商银行交易查询接口
|
|
/// <summary>
|
|
/// 工商银行交易查询接口
|
|
/// </summary>
|
|
/// <param name="payConfig">接口配置</param>
|
|
/// <param name="merchantInfo">平台商户信息</param>
|
|
/// <param name="merchantOrderCode">商户交易订单号</param>
|
|
/// <param name="platformOrderCode">平台交易订单号</param>
|
|
/// <param name="payType">交易金额</param>
|
|
/// <param name="queryCount">累计查询次数</param>
|
|
/// <returns></returns>
|
|
public static Model.QrcodeQueryResponseV2 QueryPay(ICBCPayConfig payConfig,
|
|
MobilePayConfig.PayMerchant merchantInfo, string merchantOrderCode,
|
|
string platformOrderCode, string payType, int queryCount)
|
|
{
|
|
//验证交易接口配置
|
|
if (payConfig == null)
|
|
{
|
|
return default(Model.QrcodeQueryResponseV2);
|
|
}
|
|
//验证交易参数信息
|
|
if (merchantInfo == null || string.IsNullOrWhiteSpace(merchantInfo.MerchantCode))
|
|
{
|
|
return default(Model.QrcodeQueryResponseV2);
|
|
}
|
|
//实例化交易传输类
|
|
Common.DefaultIcbcClient _ICBCClient = new Common.DefaultIcbcClient(payConfig.ICBCAPPID,
|
|
Common.IcbcConstants.SIGN_TYPE_RSA2, payConfig.UserPrivateKey, payConfig.ICBCPublicKey);
|
|
//实例化交易数据类
|
|
Model.QrcodeQueryRequestV2 _QueryPayRequest = new Model.QrcodeQueryRequestV2();
|
|
//设置交易接口地址
|
|
_QueryPayRequest.setServiceUrl(payConfig.QueryURL);
|
|
//填充交易请求数据
|
|
Model.QrcodeQueryRequestV2.QrcodeQueryRequestV2Biz _QueryPayRequestBiz =
|
|
new Model.QrcodeQueryRequestV2.QrcodeQueryRequestV2Biz
|
|
{
|
|
mer_id = merchantInfo.MerchantCode,
|
|
out_trade_no = merchantOrderCode,
|
|
order_id = platformOrderCode
|
|
};
|
|
_QueryPayRequest.setBizContent(_QueryPayRequestBiz);
|
|
//请求并返回操作结果
|
|
return (Model.QrcodeQueryResponseV2)_ICBCClient.execute(_QueryPayRequest);
|
|
}
|
|
#endregion
|
|
#region 工商银行交易退款接口
|
|
/// <summary>
|
|
/// 工商银行交易退款接口
|
|
/// </summary>
|
|
/// <param name="payConfig">接口配置</param>
|
|
/// <param name="merchantInfo">平台商户信息</param>
|
|
/// <param name="platformOrderCode">平台交易订单号</param>
|
|
/// <param name="merchantOrderCode">商户交易订单号</param>
|
|
/// <param name="refundOrderCode">退款订单号</param>
|
|
/// <param name="payAmount">退款金额,单位:分</param>
|
|
/// <returns></returns>
|
|
public static Model.QrcodeRejectResponseV2 PayRefund(ICBCPayConfig payConfig,
|
|
MobilePayConfig.PayMerchant merchantInfo, string platformOrderCode,
|
|
string merchantOrderCode, string refundOrderCode, string payAmount)
|
|
{
|
|
//验证交易接口配置
|
|
if (payConfig == null)
|
|
{
|
|
return default(Model.QrcodeRejectResponseV2);
|
|
}
|
|
//验证交易参数
|
|
if (merchantInfo == null || string.IsNullOrWhiteSpace(merchantInfo.MerchantCode))
|
|
{
|
|
return default(Model.QrcodeRejectResponseV2);
|
|
}
|
|
//验证交易金额
|
|
if (!decimal.TryParse(payAmount, out decimal _PayAmount) || _PayAmount <= 0)
|
|
{
|
|
return default(Model.QrcodeRejectResponseV2);
|
|
}
|
|
//实例化交易传输类
|
|
Common.DefaultIcbcClient _ICBCClient = new Common.DefaultIcbcClient(payConfig.ICBCAPPID,
|
|
Common.IcbcConstants.SIGN_TYPE_RSA2, payConfig.UserPrivateKey, payConfig.ICBCPublicKey);
|
|
//实例化交易数据类
|
|
Model.QrcodeRejectRequestV2 _PayRefundRequest = new Model.QrcodeRejectRequestV2();
|
|
//设置交易接口地址
|
|
_PayRefundRequest.setServiceUrl(payConfig.PayRefundURL);
|
|
//填充交易请求数据
|
|
Model.QrcodeRejectRequestV2.QrcodeRejectRequestV2Biz _PayRefundRequestBiz =
|
|
new Model.QrcodeRejectRequestV2.QrcodeRejectRequestV2Biz
|
|
{
|
|
mer_id = merchantInfo.MerchantCode,
|
|
out_trade_no = merchantOrderCode,
|
|
order_id = platformOrderCode,
|
|
reject_no = refundOrderCode,
|
|
reject_amt = payAmount
|
|
};
|
|
_PayRefundRequest.setBizContent(_PayRefundRequestBiz);
|
|
//请求并返回操作结果
|
|
return (Model.QrcodeRejectResponseV2)_ICBCClient.execute(_PayRefundRequest);
|
|
}
|
|
#endregion
|
|
#region 工商银行交易退款查询接口
|
|
/// <summary>
|
|
/// 工商银行交易退款查询接口
|
|
/// </summary>
|
|
/// <param name="payConfig">接口配置</param>
|
|
/// <param name="merchantInfo">平台商户信息</param>
|
|
/// <param name="merchantOrderCode">商户交易订单号</param>
|
|
/// <param name="platformOrderCode">平台交易订单号</param>
|
|
/// <param name="refundOrderCode">退款交易订单号</param>
|
|
/// <param name="payAmount">交易金额</param>
|
|
public static Model.QrcodeRejectQueryResponseV3 PayQueryRefund(ICBCPayConfig payConfig,
|
|
MobilePayConfig.PayMerchant merchantInfo, string merchantOrderCode,
|
|
string platformOrderCode,string refundOrderCode, string payAmount)
|
|
{
|
|
//验证交易接口配置
|
|
if (payConfig == null)
|
|
{
|
|
return default(Model.QrcodeRejectQueryResponseV3);
|
|
}
|
|
//验证交易参数
|
|
if (merchantInfo == null || string.IsNullOrWhiteSpace(merchantInfo.MerchantCode))
|
|
{
|
|
return default(Model.QrcodeRejectQueryResponseV3);
|
|
}
|
|
//实例化交易传输类
|
|
Common.DefaultIcbcClient _ICBCClient = new Common.DefaultIcbcClient(payConfig.ICBCAPPID,
|
|
Common.IcbcConstants.SIGN_TYPE_RSA2, payConfig.UserPrivateKey, payConfig.ICBCPublicKey);
|
|
//实例化交易数据类
|
|
Model.QrcodeRejectQueryRequestV3 _PayQueryRefundRequest = new Model.QrcodeRejectQueryRequestV3();
|
|
//设置交易接口地址
|
|
_PayQueryRefundRequest.setServiceUrl(payConfig.PayRefundURL);
|
|
//填充交易请求数据
|
|
Model.QrcodeRejectQueryRequestV3.QrcodeRejectQueryRequestV3Biz _PayRefundRequestBiz =
|
|
new Model.QrcodeRejectQueryRequestV3.QrcodeRejectQueryRequestV3Biz
|
|
{
|
|
mer_id = merchantInfo.MerchantCode,
|
|
out_trade_no = merchantOrderCode,
|
|
order_id = platformOrderCode,
|
|
reject_no = refundOrderCode
|
|
};
|
|
_PayQueryRefundRequest.setBizContent(_PayRefundRequestBiz);
|
|
//请求并返回操作结果
|
|
return (Model.QrcodeRejectQueryResponseV3)_ICBCClient.execute(_PayQueryRefundRequest);
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|