本开发文档的阅读对象为:具有一定开发能力,了解PHP、JAVA、.NET等开发语言的开发、维护或管理人员。
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
版本号 | 更新说明 | 更新日期 |
---|---|---|
V1.0 | 创建 | 2017.07.27 |
-
商户会员号
Chinapnr网关支付时提交的为商户会员号,并非商户号,会员号=商户号+"01"(如商户号为abc时,会员号为abc01)
-
网关直连
商户在自己的收银台展示银行列表,消费者在商户收银台选择支付使用的银行,支付过程中不出现汇付的收银台,直接跳转到银行网银页面。(注:直连模式需要商户自行采集消费者的身份信息及卡号)
商户接入Chinapnr网关支付时,调用API须遵循以下规则:
传输方式 | 为保证交易安全性,采用 HTTPS 传输 |
提交方式 | 采用 POST 方法提交 |
数据格式 | HTTP KEY=VALUE 格式 |
字符编码 | 支持 UTF-8 字符编码 |
签名算法 | 商户生成签名字符串,现支持的签名算法类型为 RSA-SHA1 |
签名要求 | 请求和接收数据均需要校验签名 |
场景介绍
人民币收款接口,收款资金可以按商户要求结算至境外或境内银行账户。支持网银、微信扫码、支付宝扫码等支付方式。适用于PC端。
可参考人民币网关模拟下单
第一步:消费者击进入商户网页购物进行支付

图3.0 商户网页下单
第二步:商户调用跨境系统网关,消费者跳转到人民币网关页面。消费者选择支付方式和银行,发起支付。
注意:如果调用接口选择直连模式,即调用时直接指定bankId,则不会显示此网关页面,直接跳转到网银。

图3.1 调用人民币网关支付
第三步:消费者根据选择支付方式和银行跳转到银行页面,如网银支付-招商银行,消费者输入卡号密码等支付完成。

图3.2 网银完成支付
第四步:支付成功,商户后台得到支付成功的通知。并且Chinapnr返回商户页面,显示购买成功。该页面由商户自定义。

图3.3 返回商户页面
概述
本文档展示了如何从零开始,与Chinapnr跨境系统网关对接的流程。
第一步:获取账号信息
-
商户需与前端销售沟通开通测试账号或生产账号,并提供接受邮箱地址。
-
1-2个工作日内由开通组负责将开通的账号信息发送至商户邮箱。
第二步:配置密钥
-
开发者调用接口前需要先生成RSA密钥,RSA密钥包含私钥、公钥。生成密钥后在商户后台进行密钥配置,配置完成后可发起交易。详细步骤请参考《配置密钥》。
第三步:搭建和配置开发环境
-
下载示例代码Demo 为了帮助开发者调用开放接口,我们提供了示例代码下载,包含JAVA、PHP和.NET三语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的Demo并引入您的开发工程《Demo下载》。
-
将Demo运行成功,并将代码集成到您的项目中,记得修改商户号,终端号,和私钥证书。如生产环境,还需更换Chinapnr生产公钥证书。
调用流程
接口调用时序图:

图4.1 非直连模式

图4.2 直连模式
-
用户(交易过程中的买家或实际支付人,以下简称用户)在商户(交易过程中的卖家或者电商平台,以下简称商户)网站下单完毕后确认进行在线支付。
-
用户点击确认按钮后,商户系统收集订单信息并通过《人民币网关接口》下单接口向汇付天下(以下简称汇付)发起支付请求。
-
非直连模式: 汇付对商户的支付请求进行处理并跳转到汇付的支付页面,该页面显示订单信息,商户开通的支付方式。用户选择银行后点击确认支付,此时页面跳转到该用户对应的银行支付页面。
直连模式: 汇付对商户的支付请求进行处理后,直接跳转到银行页面。(注意:直连模式在接口提交时必须指定支付方式和银行。) -
用户在银行页面按照银行要求完成支付。
-
支付完成后,银行页面会自动(或由用户发起)跳转到汇付的支付成功页面。
-
支付结果页面跳转到汇付后,汇付会进行相关处理,并继续将页面跳转到由商户提供的支付结果页面,汇付在跳转时所携带的参数请参照《人民币网关接口》中的返回参数章节。
-
商户系统根据收到的支付结果进行相应的展示,告知用户该笔订单的支付结果。
-
同时汇付系统会在后台通过《支付结果通知》接口通知商户系统该笔订单的支付结果,该地址不能与第6步中提供的支付结果页面地址相同。 后台通知以收到商户系统返回的http状态码200表示成功,否则将继续通知,如果连续通知10次仍不成功将停止通知。
注意:为确保安全,商户在收到汇付支付结果通知后,务必先验证返回的签名字段。
概述
Chinapnr开放平台采用了 RSA 安全签名机制,开发者可以通过Chinapnr公钥验证消息来源,同时可使用自己的私钥对信息进行加密。RSA 算法及数字签名机制是Chinapnr平台与开发者网关安全通信的基础,若开发者不熟悉 RSA 及数字签名,请先查阅相关资料。
RSA 私钥及公钥生成
1. 生成 RSA 私钥及公钥,请详见“附录一:私钥公钥生成及范例”。 生成的文件格式如:客户私钥private-rsa.pfx,客户公钥public-rsa.cer。
商户上传公钥
注意:
-
上传商户公钥前需先联系前端获取商户后台账号和密码,并将客户公钥public-rsa.cer文件前缀名称修改为商户号。 如开通的商户号为10012159865,则证书修改为10012159865.cer上传。
商户平台登录地址 测试环境 / 生产环境进入Platform Management菜单下Certificate Management菜单,转入如下界面:

图5.1 上传公钥
在证书管理,输入邮箱,点击Do Upload上传证书。页面提示上传成功,证书列表中可以查看新增证书,状态为1有效。
下载Chinapnr公钥
点击Download下载系统公钥用于接收跨境系统返回时验签。

图5.2 下载Chinapnr公钥
注意:
不同环境Chinapnr公钥证书需在不对环境的商户后台下载。
Chinapnr网关与开发者的通信主要由开发者主动调用Chinapnr网关接口(下文简称OpenAPI)实现。其中Chinapnr网关地址: 测试环境:https://hfgj.chinapnr.com/pay/receivermb.htm 生产环境:https://global.chinapnr.com/pay/receivermb.htm
接口参数说明请参见《人民币网关接口说明》
API请求
Chinapnr开放平台的OpenAPI调用采取POST方式(application/x-www-form-urlencoded),内容通过键值对(Key-Value)的形式作为参数传入。
请求示例:
pageUrl=http://192.168.1.111:8081/QAMOCK-Test/notifyReceiverPg.do
signType=4
refererUrl=http://www.baidu.com
version=3.0
redoFlag=1
terminalId=0010002
inputCharset=1
bgUrl=http://192.168.1.111:8081/QAMOCK-Test/notifyReceiverBg.do
customerId=
orderAmount=1000
productNum=1
payerContactType=2
orderId=20170821182123655
payerIdentityCard=320125198805232313
merchantAcctId=1001215986501
payerContact=15800000000
orderCurrency=CNY
orderTime=20170821182104
customerIp=127.0.0.1
bankId=
productId=YN0001
productDesc=IPHONE6港版
ext1=ext1
ext2=ext2
signMsg=Cs0eci1gWCqB+pATk7lZaS2aTVkuVqcnOfcZFTZj//WhrPQ/PFTpaDyawpJaYJXd82MSP5KCQc4rztS+4XKeF7O+PR9JeEVMU1c7y1PyltQZSOTGNpSkVrObKn2mNopx0oW0HzvYLXvTivB+T6AwqwOG0oxcID4R3SaEWuv3J9s=
payType=00
language=1
orderTimeout=60
mobileNumber=15800000000
productName=IPHONE6
payerName=张三
cardNumber=6225881257000000
在提交参数中需要对传入的数据进行签名组成signMsg字段,签名方法如下:
1.将所有非空参数(sign除外)按照signMsg签名串:
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}&orderCurrency={orderCurrency}&orderAmount={orderAmount}&orderTime={orderTime}&inquireTrxNo={inquireTrxNo}&productName={productName}&productNum={productNum}&productId={productId}&productDesc={productDesc}&ext1={ext1}&ext2={ext2}&payType={payType}&bankId={bankId}&refererUrl={refererUrl}&customerIp={customerIp}&orderTimeout={orderTimeout}&redoFlag={redoFlag}
按顺序用&连接起来组成字符串,格式是:p1=v1&p2=v2。如:
inputCharset=1&pageUrl=http://192.168.1.111:8081/QAMOCK-Test/notifyReceiverPg.do&bgUrl=http://192.168.1.111:8081/QAMOCK-Test/notifyReceiverBg.do&version=3.0&language=1&signType=4&merchantAcctId=1001215986501&terminalId=0010002&payerName=张三&payerContactType=2&payerContact=1&payerIdentityCard=320125198805232313&mobileNumber=15800000000&cardNumber=6225881257000000&customerId=1001&orderId=20170817180757683&orderCurrency=CNY&orderAmount=1000&orderTime=20170817180426&productName=IPHONE6&productNum=1&productId=YN0001&productDesc=IPHONE6港版&ext1=ext1&ext2=ext2&payType=00&refererUrl=http://www.baidu.com&customerIp=127.0.0.1&orderTimeout=60&redoFlag=1
2.进行RSA签名后获得sign,再经过Base64编码,具体加签代码请详见Demo其最终的请求报文样式参考如下:
REQUEST URL: https://global.chinapnr.com/pay/receivecb.htm
REQUEST METHOD: POST
CONTENT:
pageUrl=http://192.168.1.111:8081/QAMOCK-Test/notifyReceiverPg.do
signType=4
refererUrl=http://www.baidu.com
version=3.0
redoFlag=1
terminalId=0010002
inputCharset=1
bgUrl=http://192.168.1.111:8081/QAMOCK-Test/notifyReceiverBg.do
customerId=
orderAmount=1000
productNum=1
payerContactType=2
orderId=20170821182123655
payerIdentityCard=320125198805232313
merchantAcctId=1001215986501
payerContact=15800000000
orderCurrency=CNY
orderTime=20170821182104
customerIp=127.0.0.1
bankId=
productId=YN0001
productDesc=IPHONE6港版
ext1=ext1
ext2=ext2
signMsg=Cs0eci1gWCqB+pATk7lZaS2aTVkuVqcnOfcZFTZj//WhrPQ/PFTpaDyawpJaYJXd82MSP5KCQc4rztS+4XKeF7O+PR9JeEVMU1c7y1PyltQZSOTGNpSkVrObKn2mNopx0oW0HzvYLXvTivB+T6AwqwOG0oxcID4R3SaEWuv3J9s=
payType=00
language=1
orderTimeout=60
mobileNumber=15800000000
productName=IPHONE6
payerName=张三
cardNumber=6225881257000000
注意:
没有值的参数无需传递,也无需包含到待签名数据中。
签名时将字符转化成字节流时指定的字符集UTF8。
根据HTTP协议要求,传递参数的值中如果存在特殊字符(如:&、@等),那么该值需要做URL Encoding,这样请求接收方才能接收到正确的参数。此时,待签名数据应该是原始值而不是encoding之后的值。 例如:调用某接口需要对请求参数 email 进行数字签名,那么待签名数据应该是:email=test@abc.com,而不是 email=test%40abc.com。
返回结果
返回示例:
dealTime=20170817181646
errCode=000000
merchantAcctId=1001215986501
orderTime=20170817181604
orderCurrency=CNY
dealId=1000014989
version=3.0
bankId=cmb
terminalId=0010002
payResult=10
ext1=ext1
orderAmount=1000
ext2=ext2
signMsg=J+YM2hBexEr74jKaLW0guji7kVFVTMJI0VdZaoGy8z0MZ/VVlHo5/Di+DJFcGqDI78udAF6iJLomO7acEYASd9fd9GpPnXw8J6Nh/czZRzu3kji895+Cwfzt93KwfIRizujgIAqVEjs7/yqJ2R1bj9qftf8NQ2gEzRf5sZZTC3Q=
payType=00
orderId=20170817181623922
调用Chinapnr开放平台接口后,Chinapnr会向开发者提交的pageUrl地址同步返回支付结果。为保证信息安全,会经Chinapnr私钥进行RSA加密,开发者收到消息后可通过ChinapnrRSA公钥进行解密。
1.将所有返回参数(signMsg除外)按照signMsg验签串按顺序拼接:
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}
组成待验签字符串,如:
bankId=cmb&dealId=1000014989&dealTime=20170817181646&errCode=000000&ext1=ext1&ext2=ext2&merchantAcctId=1001215986501&orderAmount=1000&orderCurrency=CNY&orderId=20170817181623922&orderTime=20170817181604&payResult=10&payType=00&terminalId=0010002&version=3.0
2.将签名参数(signMsg)使用base64解码为字节码串
3.使用RSA的验签方法,通过签名字符串、签名参数(经过base64解码)及Chinapnr公钥验证签名。具体验签方法 请详见Demo
支付完成后,Chinapnr会向开发者提交的bgUrl地址后台异步返回支付结果。商户处理支付结果以支付结果通知结果为准。
接口返回参数说明请参见《人民币网关接口说明》
支付结果通知
支付结果通知示例:
dealTime=20170817181646
errCode=000000
merchantAcctId=1001215986501
orderTime=20170817181604
orderCurrency=CNY
dealId=1000014989
version=3.0
bankId=cmb
terminalId=0010002
payResult=10
ext1=ext1
orderAmount=1000
ext2=ext2
signMsg=J%2BYM2hBexEr74jKaLW0guji7kVFVTMJI0VdZaoGy8z0MZ%2FVVlHo5%2FDi%2BDJFcGqDI78udAF6iJLomO7acEYASd9fd9GpPnXw8J6Nh%2FczZRzu3kji895%2BCwfzt93KwfIRizujgIAqVEjs7%2FyqJ2R1bj9qftf8NQ2gEzRf5sZZTC3Q%3D
payType=00
orderId=20170817181623922
支付结果通知的验签
1.将所有返回参数(signMsg除外)按照signMsg验签串按顺序拼接:
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}
组成待验签字符串,如:
bankId=cmb&dealId=1000014989&dealTime=20170817181646&errCode=000000&ext1=ext1&ext2=ext2&merchantAcctId=1001215986501&orderAmount=1000&orderCurrency=CNY&orderId=20170817181623922&orderTime=20170817181604&payResult=10&payType=00&terminalId=0010002&version=3.0
2.将签名参数signMsg和拼接的验签字符串进行URLDecoder。
如C#代码,signMsg为通知中的signMsg字段,signMsgVal为拼接的验签串: String signMsgDecode = HttpUtility.UrlDecode(signMsg); String signMsgValDecode = HttpUtility.UrlDecode(signMsgVal);
3.将URLDecoder后的签名参数(signMsg)使用base64解码为字节码串。
4.使用RSA的验签方法,通过签名字符串、签名参数(经过base64解码)及Chinapnr公钥验证签名。具体验签方法 请详见Demo
商户业务处理注意事项
1.商户必须根据Chinapnr不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。
2.Chinapnr异步通知以通知地址返回HTTPSTATUS为200认为成功,否则会一直通知,通知策略是一共通知16次,前面每隔10s通知一次 一共通知6次每次,后10次通知时间间隔增加(N*60s+30s,N为第几次通知,如第7次通知间隔第一次7min30s)。商户在接受到Chinapnr异步通知后,应返回成功接受内容,如"SUCESS"。
3.在Chinapnr的业务通知中,只有交易通知payResult状态为10时,Chinapnr才会认定为买家付款成功。如果商户未正确处理业务通知,存在潜在的风险,商户自行承担因此而产生的所有损失。
货币符号 | 币别 |
---|---|
CNY | 人民币 |
USD | 美元 |
HKD | 港元 |
GBP | 英镑 |
JPY | 日元 |
EUR | 欧元 |
AUD | 澳元 |
CAD | 加元 |
银行代码 | 银行名称 |
---|---|
CMB | 招商银行 |
ICBC | 中国工商银行 |
ABC | 中国农业银行 |
CCB | 中国建设银行 |
BOC | 中国银行 |
SPDB | 浦发银行 |
BCOM | 中国交通银行 |
CMBC | 中国民生银行 |
GDB | 广东发展银行 |
CITIC | 中信银行 |
HXB | 华夏银行 |
SRCB | 上海农村商业银行 |
SRCB | 上海农村商业银行 |
PSBC | 中国邮政储蓄银行 |
BOB | 北京银行 |
CBHB | 渤海银行 |
BJRCB | 北京农商银行 |
NJCB | 南京银行 |
CEB | 中国光大银行 |
CZB | 浙商银行 |
CIB | 兴业银行 |
HZB | 杭州银行 |
PAB | 平安银行 |
SHB | 上海银行 |
code(支付错误代码) | msg(支付错误描述) |
---|---|
999999 | 系统异常 |
000000 | 交易处理成功 |
000009 | 交易处理失败 |
110001 | 必须提交的请求参数未提交 |
110002 | 请求的数据项长度不符 |
110003 | 请求的数据项格式错误,合法格式请参照接入文档 |
110004 | 错误请求 |
110005 | 请求的数据项不合法 |
110006 | 请求的交易币别暂不支持 |
130005 | 风控拦截 |
200001 | 订单信息的签名内容不正确 |
120010 | 请求的商户号不存在,请检查后重试 |
120011 | 请求的商户号状态异常,不允许交易 |
120012 | 请求的终端号不存在,请检查后重试 |
120013 | 请求的终端号状态异常,不允许交易 |
120014 | 产品功能未开通,不允许交易 |
120023 | 交易请求Ip未知,不允许交易 |
120024 | 支付人Ip在黑名单中,不允许交易 |
120025 | 支付人Ip有变化,存在风险不允许交易 |
120026 | 支付人链接来源有变化,存在风险不允许交易 |
120028 | 未开通任何受理银行,不允许交易 |
120029 | 不可受理的银行代码,不允许交易 |
120031 | 请求的商户号/终端号对应的结算币别与交易申请的币别不一致,请更换对应终端后重试 |
120032 | 请求的商户号/终端号对应的报价币别与交易申请的币别不一致,请更换对应终端后重试 |
120040 | 商户订单号重复,请先确认订单状态或重新下单后支付 |
120061 | 交易金额大于商户最高交易限额 |
120062 | 交易金额低于商户最低交易限额 |
120063 | 当日交易金额已大于日最高交易限额 |
120064 | 无可用的收单通道 |
120065 | 目标币别的汇率不存在 |
120066 | 交易金额精度超出交易币别的最小单位 |
120069 | 支付超时,请重新支付 |
120100 | 该商户账户异常,已被禁止交易 |
120101 | 该商户账户已被冻结,禁止交易 |
120102 | 该商户账户功能已被限制,禁止交易 |
120103 | 该商户账户已被删除,禁止交易 |
120110 | 该商户账户已被止入,禁止交易 |
120111 | 该商户账户已被止出,禁止交易 |
120112 | 该商户账户已被限制充值,禁止交易 |
120113 | 该商户账户已被限制提现,禁止交易 |
120114 | 该商户账户已被限制透支,禁止交易 |
120115 | 该商户账户已被限制支付,禁止交易 |
120116 | 该商户账户已被限制转入,禁止交易 |
120117 | 该商户账户已被限制转出,禁止交易 |
120300 | 授权商户未开通 |
120301 | 授权参数未设值 |
130001 | 交易失败,风控拒绝 |
130002 | 交易失败,疑似重复交易被拦截 |
130003 | 交易失败,产品不在经营范围内 |
130004 | (退款)受理失败 |
130005 | 交易失败,风控拒绝 |
100001 | 不支持的字符编码格式,系统支持的字符编码格式为1.UTF-8,2.GBK,3.GB2312 |
100003 | 页面返回地址和后台返回地址不能同时为空,请使用符合URL规则的http或者https地址 |
100005 | 不支持的网关接口版本号 |
100008 | 不支持的付款方联系方式,系统支持的联系方式为1.电子邮件,2.电话.当联系内容不为空时联系方式不能为空 |
100009 | 付款方的联系内容不正确,请输入合法的联系地址 |
100091 | 支付人手机号输入错误 |
100092 | 支付人身份信息有误 |
100010 | 订单号不正确,系统只支持以字母,数字组合的订单号,最大长度不能超过30 |
100011 | 订单金额不正确,请输入以分为单位的金额 |
100012 | 订单提交时间不正确,请输入以yyyyMMddhhmmss格式的时间字符串 |
100013 | 商品名称不正确 |
100014 | 商品数量不正确 |
100015 | 商品ID不正确 |
100016 | 商品的描述不正确 |
100017 | 扩展参数一不正确 |
100018 | 扩展参数二不正确 |
100019 | 指定的支付方式不正确 |
100021 | 指定的银行ID不正确 |
100022 | 不支持的语言类型,系统支持的语言为1.中文,2.英文 |
100023 | 不支持的签名类型,系统支持的签名类型为1.MD5 |
100024 | 客户号格式错误 |
100025 | 卡号格式错误 |
100037 | 对不起,该订单不允许重复提交,请重新下订单提交! |
100054 | 商户签名数据不能为空 |
100065 | 未提供付款人IP地址,请联系商用户网站支持人员 |
100086 | 错误的币别代码 |
200001 | 订单信息的签名内容不正确 |
200004 | 交易金额格式错误 |
400001 | 原交易没有找到 |
400003 | 原交易可退余额不足 |
400002 | 退款币别与原交易不一致 |
400004 | 商户结算状态异常,无法退货 |
400008 | 商户账户余额不足 |
400006 | 超期退货 |
400007 | 原交易状态错误 |
500001 | 银行系统异 |
商品编码列表
跨境系统商品类别列表下载商品编码 | 中文类名 |
---|---|
100003 | 护肤品 |
100004 | 洗发护发 |
100005 | 身体护理 |
100006 | 口腔护理 |
100003 | 护肤品 |
100004 | 洗发护发 |
100005 | 身体护理 |
100006 | 口腔护理 |
100007 | 包包 |
100008 | 女装 |
100009 | 男装 |
100010 | 童装 |
100011 | 内衣 |
100012 | 睡衣 |
100013 | 袜品 |
100014 | 配饰 |
100015 | 香水 |
100016 | 彩妆 |
100017 | 奶粉 |
100018 | 母婴营养保健 |
100019 | 婴儿辅食 |
100020 | 尿裤纸巾 |
100021 | 男鞋 |
100022 | 女鞋 |
100023 | 运动鞋 |
100024 | 户外鞋 |
100025 | 运动服 |
100026 | 休闲服装 |
100027 | 家纺/床品 |
100028 | 生活日用 |
100029 | 厨房电器 |
100030 | 家装软饰 |
100031 | 生活电器 |
100032 | 手机 |
100033 | 手机配件 |
100034 | 数码相机 |
100035 | 单反相机 |
100036 | 摄像机 |
100037 | 镜头 |
100038 | 耳机/耳麦 |
100039 | 音箱/音响 |
100040 | 数码配件 |
100041 | 智能手环 |
100042 | 影音娱乐 |
100043 | 笔记本 |
100044 | 进口食品 |
100045 | 休闲食品 |
100046 | 营养品 |
100047 | 地方特产 |
200003 | 游戏点卡 |
200004 | 游戏周边 |
200005 | 网页游戏 |
200006 | 手机游戏 |
200007 | 电脑杀毒软件 |
200008 | 电脑安装软件 |
200009 | 虚拟服务租赁 |
200010 | 物理服务器租赁 |
200011 | 国际线路租赁 |
200012 | 域名 |
200013 | 网页设计 |
200014 | 软件设计 |
300003 | 留学学费 |
300004 | 出国夏令营费用 |
400003 | 机票 |
400004 | 酒店 |
400005 | 当地旅游费用 |
银行受理能力
EXCEL受理能力列表下载网银B2C
网银B2C支持的银行列表以及对借记卡,信用卡限额的说明。


图7.1 网银B2C受理能力表
网银B2B
网银B2B支持的银行列表以及对限额的说明。

图7.2 网银B2B受理能力表
快捷支付
快捷支付支持的银行列表以及对限额说明。
注意:有些银行卡需要开通银联在线支付业务:
1、建设银行、中国银行、农业银行、光大、兴业、中信、渤海银行,上述银行卡有卡就能用,功能已默认开通。
2、交通银行、平安、浦发、邮储、上海银行,上述银行卡需通过https://online.unionpay.com/portal/open/init.do?entry=open开通银联在线支付业务。

图7.3 快捷支付受理能力表
商户请求API
商户需上传唯一的商户订单号(orderId),同时建议商户订单号中包含年月日等时间信息。
Chinapnr默认在网关页面半小时不选择银行支付,则超时失败。如已选择银行支付,默认支付超时时间12小时,即晚于该订单的最晚付款时间后,将关闭交易。
交易查询
商户可在商户后台进行交易查询,也可通过查询接口查询。
-
进入商户后台“交易管理”=>“交易查询”菜单,输入订单号,Chinapnr交易流水号发起查询。
图6.1 商户后台交易查询
-
网关交易在未收到支付结果通知时通过查询接口查询支付结果,查询接口未返回支付成功,则继续轮询。
详情请参见交易查询接口。
退款
商户因业务原因需要退款时,可通过成功交易的商户订单号或Chinapnr交易号进行退款。Chinapnr退款支持单笔交易分多次退款,多次退款需要提交Chinapnr交易号并设置不同的退款单号;总退款金额不能超过用户实际支付金额。
-
对接退款接口。
详情请参见退款接口。
对账
商户可通过接口下载指定日期(当天除外)的业务明细账单文件,并结合自身业务系统实现自动对账。
-
商户可在商户后台发起日终查询,进入“交易管理”=>“日终交易查询”菜单,选择要查询的交易所对应的终端号,选择日期,点击查询。
对查询出的日终列表,选择点击下载按钮下载日终对账文件。
图6.4 商户后台日终文件查询
-
对接日终文件查询接口
详情请参见日终交易查询。
DEMO下载
注意:Demo下载后可直接运行,也可将项目里商户号,终端号,私钥证书(**.pfx)更换成已开通测试商户的。
支付模式 | 说明 | 平台 | 操作 |
---|---|---|---|
人民币网关API | 人民币网关API对应的DEMO | JAVA | 下载 |
PHP | 下载 | ||
.NET | 下载 | ||
单笔交易查询API | 单笔交易查询API对应的DEMO | JAVA | 下载 |
PHP | 下载 | ||
.NET | 下载 | ||
退款API | 退款API对应的DEMO | JAVA | 下载 |
PHP | 下载 | ||
.NET | 下载 | ||
日终交易查询API | 日终交易查询API对应的DEMO | JAVA | 下载 |
PHP | 下载 | ||
.NET | 下载 |
文档下载
支付模式 | 说明 | 操作 |
---|---|---|
人民币网关API | 人民币网关API对应的文档 | 下载 |
退款接口API | 退款接口API对应的文档 | 下载 |
单笔交易查询API | 单笔交易查询API对应的文档 | 下载 |
日终交易查询API | 日终交易查询API对应的文档 | 下载 |
1.订单信息的签名不正确
确保私钥证书正确。
确保加签字段和加签顺序正确,可对照Demo对比
2.订单返回信息验签失败
确保公钥证书正确,与所提交环境匹配,可在对应环境商户后台下载。
确保验签字段和验签顺序正确,可对照Demo对比
3.网关发起交易,报商户号不存在或未开通
网关发起交易时,提交的并非是商户号,而是会员号,会员号=商户号+“01”。
4.TLS1.0 SSL3.0等协议无法正常进行网关交易
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
OpenSSL工具安装
1.Linux用户(以Ubuntu为例)
sudo apt-get install openssl
2.Windows用户开发者可以在OpenSSL官方网站下载Windows的OpenSSL安装包进行安装。或直接下载
RSA私钥及公钥生成
1.Linux用户(以Ubuntu为例)
$ openssl 进入OpenSSL程序
OpenSSL> genrsa -out private-rsa.key 1024 生成私钥
OpenSSL> req -new -x509 -key private-rsa.key -days 750 -out public-rsa.cer 生成公钥
OpenSSL> pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out private-rsa.pfx 生成证书,密码和别名需记住
OpenSSL> exit # 退出OpenSSL程序
2.Windows用户在cmd窗口中进行以下操作:
C:\Users\Hammer>cd C:\OpenSSL\bin 进入OpenSSL安装目录
C:\OpenSSL\bin>openssl.exe 进入OpenSSL程序
OpenSSL> genrsa -out private-rsa.key 1024 生成私钥
OpenSSL> req -new -x509 -key private-rsa.key -days 750 -out public-rsa.cer 生成公钥
OpenSSL> pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out private-rsa.pfx 生成证书,密码和别名需记住
OpenSSL> exit # 退出OpenSSL程序
注意:
1.对于使用Php的开发者,需要将“private-rsa.pfx”证书转换为“private-rsa.pem”,输入转换命令pkcs12 -in dc-rsa.pfx -passin pass:“此处输入商户第3步设置的密码” -nodes -out private-rsa.pem。
跨境公钥转pem(cer转pem):x509 -in C:\OpenSSL\bin\ChinaPnR.rsa.cer -out C:\OpenSSL\bin\ChinaPnR.rsa.pem
2.如第二步报错,则根据工具所在路径指定下配置文件,如命令改为:req -new -x509 -key private-rsa.key -config "C:\OpenSSL\bin\openssl.cnf" -days 750 -out public-rsa.cer
私钥及公钥文件示例
经过以上步骤,开发者可以在当前文件夹中(Windows用户在C:\OpenSSL\bin)看到private-rsa.pfx和public-rsa.cer两个文件,前者为私钥,后者为公钥。开发者将私钥保留,将公钥提交给Chinapnr网关,用于信息加密及解密。公钥需修改前缀为商户号,并上传至跨境系统商户后台。以下为使用OpenSSL生成的私钥文件和公钥文件示例:
1.私钥文件示例(Java使用)
-----BEGIN PRIVATE KEY-----
MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H
/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJ
Sg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is66
1jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGk
YdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJa
QU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz
711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7P
vgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm
3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMra
vGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1
FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8f
vTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU
2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQ
OGm38pDRPcUDUh2/
-----END PRIVATE KEY-----
3.公钥文件示例
-----BEGIN CERTIFICATE-----
MIIDNzCCAqCgAwIBAgIJAJaZj8YlPQcIMA0GCSqGSIb3DQEBBQUAMHExCzAJBgNV
BAYTAkhLMQswCQYDVQQIEwJISzELMAkGA1UEBxMCSEsxDTALBgNVBAoTBE1QQVkx
DTALBgNVBAsTBE1QQVkxDTALBgNVBAMTBE1QQVkxGzAZBgkqhkiG9w0BCQEWDE1Q
QVlAMTIzLkNPTTAeFw0xNjA3MDUxMDM5NDJaFw0xODA3MjUxMDM5NDJaMHExCzAJ
BgNVBAYTAkhLMQswCQYDVQQIEwJISzELMAkGA1UEBxMCSEsxDTALBgNVBAoTBE1Q
QVkxDTALBgNVBAsTBE1QQVkxDTALBgNVBAMTBE1QQVkxGzAZBgkqhkiG9w0BCQEW
DE1QQVlAMTIzLkNPTTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAyiVbdBOF
Qtb03wKw+7oR7bA32vi5/XkJ33CbzdiID+ZK6lkeeRlJVIQvf2UsfScIeTLE/Nyn
lapF12Gsw9dVoiCzrScagn3kknFcE7fM2x4kyLLNQdJgJvb7jCRl/oMOziVT+z5R
cZ8SS11vO5Dk5kx8W4n66ldoyDeUVXArlCcCAwEAAaOB1jCB0zAdBgNVHQ4EFgQU
epQ9Qvg/VE5nb69L+D08eqn6/E8wgaMGA1UdIwSBmzCBmIAUepQ9Qvg/VE5nb69L
+D08eqn6/E+hdaRzMHExCzAJBgNVBAYTAkhLMQswCQYDVQQIEwJISzELMAkGA1UE
BxMCSEsxDTALBgNVBAoTBE1QQVkxDTALBgNVBAsTBE1QQVkxDTALBgNVBAMTBE1Q
QVkxGzAZBgkqhkiG9w0BCQEWDE1QQVlAMTIzLkNPTYIJAJaZj8YlPQcIMAwGA1Ud
EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAOHgqqxMLoaUW/i43KtTHFGciwr9m
OkusX4B4kx5sKN8Ed110iyRPixMKCslV2EHP4uIVAMWhEw+AxULbJte86r8ryr/m
Jc0PR4U9vrpQxdWLsBh8lhKgC4GVJb8jkwcVkjF/XvvVUp/VqHto+LBnjdNAXqZa
GbuKXbLTnmIwGes=
-----END CERTIFICATE-----