using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WebService.SDK.PayCommon;
namespace WebService.SDK.ICBCPay
{
public class ICBCPayAPI
{
#region 工商银行被扫交易接口
///
/// 工商银行被扫交易接口
///
/// 接口配置
/// 平台商户信息
/// 用户付款授权码
/// 商户交易订单号
/// 交易金额,单位:分
///
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 工商银行交易查询接口
///
/// 工商银行交易查询接口
///
/// 接口配置
/// 平台商户信息
/// 商户交易订单号
/// 平台交易订单号
/// 交易金额
/// 累计查询次数
///
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 工商银行交易退款接口
///
/// 工商银行交易退款接口
///
/// 接口配置
/// 平台商户信息
/// 平台交易订单号
/// 商户交易订单号
/// 退款订单号
/// 退款金额,单位:分
///
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 工商银行交易退款查询接口
///
/// 工商银行交易退款查询接口
///
/// 接口配置
/// 平台商户信息
/// 商户交易订单号
/// 平台交易订单号
/// 退款交易订单号
/// 交易金额
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
}
}