跨境外汇支付接口
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
提交参数
请求地址
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.chinapnr.com/pay/receivehw.htm |
正式环境 | https://global.chinapnr.com/pay/receivehw.htm |
协议参数
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
inputCharset | Number | 是 | 1 | 字符集,固定值:1 1-UTF-8 |
1 |
pageUrl | String | 是 | 256 | 接受支付结果的页面地址 | https://www.merchant.com/pay/notifyReceiverPg.do |
bgUrl | String | 是 | 256 | 服务器接受支付结果的后台地址 | https://www.merchant.com/pay/notifyReceiverBg.do |
version | String | 是 | 10 | 网关版本,固定值:3.0 3.0-代表跨境外汇支付。 |
3.0 |
language | String | 是 | 1 | 网关页面显示语言种类,固定值:1 1-代表中文显示 |
1 |
signType | String | 是 | 1 | 签名类型,固定值:4 4-RSA加签 |
4 |
业务参数
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
merchantAcctId | String | 必选 | 32 | 会员账号,由我司提供的商户号+01,共13位数字 | 1001234001101 |
terminalId | String | 必选 | 8 | 终端号,由我司提供的终端号 | 999999 |
payerName | String | 有条件必选 | 64 | 支付人姓名,中文名,网银直连时必填 | 张三 |
payerContactType | String | 可选 | 1 | 支付人联系方式类型,固定值:1或者2 1-代表电子邮件方式 2-其他联系方式 |
1 |
payerContact | String | 可选 | 64 | 支付人联系方式,根据payerContactType的方式填写对应字符,邮箱或者其他联系方式 | 13400000000 |
payerIdentityCard | String | 有条件必选 | 32 | 支付人身份证号码,字符串,18位身份证号;网银直连时必填 | 320125198800001111 |
mobileNumber | String | 可选 | 32 | 支付人手机号 | 15800001111 |
cardNumber | string | 有条件必选 | 32 | 支付人所持卡号,网关直连时必填 | 6225881257400000 |
customerId | string | 可选 | 32 | 支付人在商户系统的客户编号 | jd1001 |
orderId | string | 可必选 | 32 | 商户订单号,只允许使用字母、数字、_,每商户提交的订单号,必须在自身账户交易中唯一 | order20170728120001299 |
inquireTrxNo | String | 可选 | 32 | 查询流水号,字符串,商户外汇从CHINAPNR询价时需填入,不填则根据交易时间实时询价 | 交易前已在CHINAPNR询价返回工单号:2089,则填入2089 |
orderCurrency | String | 必选 | 3 | 订单币种,3位币别码,详情请参照币别代码附录。当该字段不为CNY时,必须与settlementCurrency一致。 | 如美元:USD。 |
settlementCurrency | String | 必选 | 3 | 结算币种,3位币别码,详情请参照币别代码附录。该字段值不能为CNY。 | 如美元:USD。 |
orderAmount | Number | 必选 | 12 | 商户订单金额,整型数字,单位为分。日韩元支持的最小单位为元。 | 如100元,则填写10000 |
orderTime | String | 必选 | 14 | 数字串,一共14位。格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位] | 20171117020101 |
productName | String | 必选 | 256 | 商品名称 | iphone7 |
productNum | Number | 可选 | 8 | 商品数量,整型数字 | 1 |
productId | String | 必选 | 32 | 商品代码,请根据我司提供的商品代码附录进行填写。 | 如母婴营养保健,填写:100018 |
ext1 | String | 可选 | 128 | 扩展字段1,英文或中文字符串支付完成后,按照原样返回给商户 | 扩展字段1 |
ext2 | String | 可选 | 128 | 扩展字段2,英文或中文字符串支付完成后,按照原样返回给商户 | 扩展字段2 |
payType | String | 必选 | 4 | 支付方式: 00:全部 10:网银 10-1:B2C网银 10-2:B2B网银 |
00 |
bankId | String | 可选 | 8 | 银行代码,请参考银行代码表附录。网银直连时必填;此字段不为空时,payType必须为下列之一:10、10-1、10-2 | 如中国农业银行,ABC |
redoFlag | String | 可选 | 1 | 同一订单禁止重复提交标志,预留字段 | |
signMsg | String | 必选 | 2048 | 签名字符串请参考签名方法。 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
inputCharset={inputCharset}&pageUrl={pageUrl}&bgUrl={bgUrl}&version={version}&language={language}&signType={signType}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&payerName={payerName}&payerContactType={payerContactType}&payerContact={payerContact}&payerIdentityCard={payerIdentityCard}&mobileNumber={mobileNumber}&cardNumber={cardNumber}&customerId={customerId}&orderId={orderId}&inquireTrxNo={inquireTrxNo}&orderCurrency={orderCurrency}&settlementCurrency={settlementCurrency}&orderAmount={orderAmount}&orderTime={orderTime}&productName={productName}&productNum={productNum}&productId={productId}&productDesc={productDesc}&ext1={ext1}&ext2={ext2}&payType={payType}&bankId={bankId}&redoFlag={redoFlag}
只对非空值的字段进行加签。
返回结果
交易结果会同时通知提交时pageUrl和bgUrl对应的地址。
返回参数
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
merchantAcctId | String | 必选 | 32 | 会员账号,与提交订单时的保持一致 | 1001234001101 |
terminalId | String | 必选 | 8 | 终端号,与提交订单时的保持一致 | 999999 |
version | String | 必选 | 10 | 网关版本,与提交订单时一致 | 3.0 |
payType | String | 必选 | 4 | 支付方式,与提交订单时一致 | 00 |
bankId | String | 必选 | 10 | 银行代码,与提交订单一致 | ABC |
orderId | String | 必选 | 32 | 商户订单号,与提交订单时一致 | order20170728120001299 |
orderTime | String | 必选 | 14 | 商户订单提交时间,与提交订单时一致 | 20171117020101 |
orderCurrency | String | 必选 | 3 | 订单币种,与提交订单时一致 | USD |
orderAmount | Number | 必选 | 12 | 商户订单金额,与提交订单时一致 | 10000 |
dealId | String | 必选 | 32 | 收单系统交易号,该交易在收单系统对应的交易号/td> 错误码列表 | 20000100 |
dealTime | String | 可选 | 14 | 交易时间,交易失败时可能为空。收单系统对交易进行处理的时间,格式为:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位] | 20170728120001 |
ext1 | String | 可选 | 128 | 扩展字段1,与提交订单时一致 | |
ext2 | String | 可选 | 128 | 扩展字段2,与提交订单时一致 | |
bankDealId | String | 可选 | 64 | 银行交易号,后端通道系统的交易流水号 | |
payResult | String | 必选 | 2 | 处理结果: 10-支付成功 其他均为失败 |
10 |
errCode | String | 可选 | 8 | 错误代码,详细请参考错误代码附录 | 000000 |
signMsg | String | 必选 | 2048 | 签名字符串,商户需对该字段进行验签。详情请参考验签方法。对于所有值不为空的参数及对应值,按照字母顺序组成字符串 DSA:参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行支付平台证书加密形成密文后进行2048位的Base64转码。 |
bankDealId={bankDealId}&bankId={bankId}&dealId={dealId}&dealTime={dealTime}&errCode={errCode}&ext1={ext1}&ext2={ext2}&merchantAcctId={merchantAcctId}&orderAmount={orderAmount}&orderCurrency={orderCurrency}&orderId={orderId}&orderTime={orderTime}&payResult={payResult}&payType={payType}&terminalId={terminalId}&version={version}
根据字母排序(如a**字段放在b**字段前面)验签。
请求示例
请参考具体Demo。 下载地址
PG返回示例
http://www.merchant.com/pay/notifyReceiverPg.do?dealTime=20170728154002&errCode=000000&merchantAcctId=1001215986501&orderTime=20170728153936&orderCurrency=USD&dealId=1000014646&version=3.0&bankId=cmb&terminalId=0010001&payResult=10&ext1=ext1&orderAmount=600&ext2=ext2&signMsg=UZGi/zL/F84yGoyPtUfSLI0w/8rAdYZq/9CZRpDmxPPBlbEFD569fUYtcCiSYdnz7oFxu2aEOAbSOqW6SXJ/bTR8uOqlIhSOKzURlPle4nbThUVjZG8ZWTBvplxqmaMv0Z2ISZAeSVebNu1La1+TEV3Gn9TwiJuG1tlVwL0onI8=&payType=10&orderId=2017072815394180
BG返回示例
BG以http Key-Value方式返回,如:
dealTime=20170728154002
errCode=000000
merchantAcctId=1001215986501
orderTime=20170728153936
orderCurrency=USD
dealId=1000014646
version=3.0
bankId=cmb
terminalId=0010001
payResult=10
ext1=ext1
orderAmount=600
ext2=ext2
signMsg=UZGi%2FzL%2FF84yGoyPtUfSLI0w%2F8rAdYZq%2F9CZRpDmxPPBlbEFD569fUYtcCiSYdnz7oFxu2aEOAbSOqW6SXJ%2FbTR8uOqlIhSOKzURlPle4nbThUVjZ8ZWTBvplxqmaMv0Z2ISZAeSVebNu1La1%2BTEV3Gn9TwiJuG1tlVwL0onI8%3D
payType=10
orderId=2017072815394180