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