本开发文档的阅读对象为:具有一定开发能力,了解PHP、JAVA、.NET等开发语言的开发、维护或管理人员。
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
版本号 | 更新说明 | 更新日期 |
---|---|---|
V1.0 | 创建 | 2017.07.27 |
-
商户会员号
Chinapnr网关支付时提交的为商户会员号,并非商户号,会员号=商户号+"01"(如商户号为abc时,会员号为abc01)
商户接入结汇业务,调用API须遵循以下规则:
传输方式 | 为保证交易安全性,采用 HTTPS 传输 |
提交方式 | 采用 POST 方法提交 |
数据格式 |
XML格式接口,详细可查看接口文档定义 |
字符编码 | 支持 UTF-8 字符编码 |
签名算法 | 商户生成签名字符串,现支持的签名算法类型为 RSA-SHA1 |
签名要求 | 请求和接收数据均需要校验签名 |
场景介绍
帮助商户将资金购结汇以及代发。
结汇代发流程
第一步:明细备案
图3.0 明细备案
第二步:汇款及结汇处理
图3.1 汇款及结汇处理
第三步:资金下发
图3.2 资金下发
概述
本文档展示了如何从零开始,与Chinapnr跨境系统结汇代发接口对接的流程。
第一步:获取账号信息
-
商户需与前端销售沟通开通测试账号或生产账号,并提供接受邮箱地址。
-
1-2个工作日内由开通组负责将开通的账号信息发送至商户邮箱。
第二步:配置密钥
-
开发者调用接口前需要先生成RSA密钥,RSA密钥包含私钥、公钥。生成密钥后在商户后台进行密钥配置,配置完成后可发起交易。详细步骤请参考《配置密钥》。
第三步:搭建和配置开发环境
-
下载示例代码Demo 为了帮助开发者调用开放接口,我们提供了示例代码下载,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的Demo并引入您的开发工程《Demo下载》。
-
将Demo运行成功,并将代码集成到您的项目中,记得修改商户号,终端号,和私钥证书。如生产环境,还需更换Chinapnr生产公钥证书。
调用流程
接口调用时序图:
图4.1 结汇代发时序图
注意:为确保安全,商户在收到汇付通知后,务必先验证返回的签名字段。
概述
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公钥证书需在不对环境的商户后台下载。
API请求
Chinapnr开放平台的OpenAPI调用采取POST方式(application/x-www-form-urlencoded),内容通过键值对(Key-Value)的形式作为参数传入。
注意:
没有值的参数无需传递,也无需包含到待签名数据中。
签名时将字符转化成字节流时指定的字符集UTF8。
根据HTTP协议要求,传递参数的值中如果存在特殊字符(如:&、@等),那么该值需要做URL Encoding,这样请求接收方才能接收到正确的参数。此时,待签名数据应该是原始值而不是encoding之后的值。 例如:调用某接口需要对请求参数 email 进行数字签名,那么待签名数据应该是:email=test@abc.com,而不是 email=test%40abc.com。
结汇申请完成后,Chinapnr会向开发者提交的通知地址后台异步返回结汇结果。
接口返回参数说明请参见《结汇代发接口》
结汇结果通知
结汇结果通知示例:
1.将所有返回参数(signMsg除外)按照signMsg验签串按顺序拼接:
competCustom={competCustom}&customCode={customCode}&customVersion={customVersion}&dealId={dealId}&decResult={decResult}&declareId={declareId}&ecpDomainName={ecpDomainName}&ecpShortName={ecpShortName}&errorCode={errorCode}&errorMsg={errorMsg}&freightAmt={freightAmt}&goodsAmt={goodsAmt}&iaqInstCode={iaqInstCode}&merCustomCode={merCustomCode}&merCustomName={merCustomName}&merchantAcctId={merchantAcctId}&offsetAmt={offsetAmt}&orderAmt={orderAmt}&orderCurrency={orderCurrency}&orderId={orderId}&payerIdNumber={payerIdNumber}&payerIdType={payerIdType}&payerName={payerName}&taxAmt={taxAmt}&terminalId={terminalId}&bizType={bizType}&version={version}
组成待验签字符串,如:
competCustom=11111&customCode=NBHG&dealId=c108270&decResult=20&declareId=15849&ecpDomainName=www.xxx.com&ecpShortName=1111&freightAmt=0&goodsAmt=600&iaqInstCode=11111&merCustomCode=1111&merCustomName=测试商户&merchantAcctId=1001215986501&offsetAmt=0&orderAmt=600&orderCurrency=CNY&orderId=20170825152657559&payerIdNumber=320125198805232313&payerIdType=1&payerName=张三&taxAmt=0&terminalId=hgtest02&version=1.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
货币符号 | 币别 |
---|---|
CNY | 人民币 |
USD | 美元 |
HKD | 港元 |
GBP | 英镑 |
JPY | 日元 |
EUR | 欧元 |
TWD | 新台币 |
AUD | 澳元 |
CAD | 加元 |
RUB | 卢布 |
code(支付错误代码) | msg(支付错误描述) |
---|---|
110001 | 必须提交的请求参数 []未提交 |
110002 | 请求的数据项格式错误 |
110006 | 请求的交易币别[]暂不支持 |
120010 | 请求的商户号[]不存在,请检查后重试 |
120011 | 请求的商户号[]状态异常,不允许交易 |
120012 | 请求的终端号[]不存在,请检查后重试 |
120013 | 请求的终端号[]状态异常,不允许交易 |
120014 | 产品功能未开通,不允许交易 |
120030 | 请求的商户号[]/终端号[]对应的结算信息未开通 |
120032 | 请求的商户号[]/终端号[]对应的报价币别[]与交易申请的币别[]不一致 |
120023 | 交易请求Ip[]未知,不允许交易 |
200004 | 您的IP地址不允许交易 |
400008 | 商户账户余额不足 |
110005 | 交易明细格式有误,详情参见明细错误描述 |
999999 | 系统异常或未知错误 |
DEMO下载
注意:Demo下载后可直接运行,也可将项目里商户号,终端号,私钥证书(**.pfx)更换成已开通测试商户的。
结汇代发API | 说明 | 平台 | 操作 |
---|---|---|---|
结汇API | 结汇API对应的DEMO | JAVA | 下载 |
PHP | 下载 |
文档下载
支付模式 | 说明 | 操作 |
---|---|---|
结汇代发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安装包进行安装。或直接下载
3.若不习惯查看文档中心,此为证书生成word文档,可自行下载证书生成文档下载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-----
用户提现接口
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
请求报文格式以http key-value格式提交,demo在资源下载中下载
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
提交参数
请求地址
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/remit.htm |
正式环境 | https://global.chinapnr.com/mcs/remit.htm |
2 接口定义
2.1 批量提现申请
2.1.1请求
协议参数
参数名称 | 参数含义 | 参数长度 | 可否为空 | 参数说明 |
---|---|---|---|---|
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数
参数名称 | 参数含义 | 参数长度 | 可否为空 | 参数说明 |
---|---|---|---|---|
requestId | 请求流水号 | String(32) | 不可空 | 商户系统中唯一性ID |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 请求会员号 | String(32) | 不可空 | 由我司提供 |
terminalId | 终端号 | String(32) | 不可空 | 由我司提供 |
batchNo | 提现批次号 | String(32) | 不可空 | 商户系统中唯一标识该笔批次 |
payCur | 付款币种 | String(3) | 不可空 | 默认CNY |
payTCnt | 总笔数 | Number(15) | 不可空 | |
payTAmt | 总金额 | Number(11) | 不可空 | 单位分 |
ignoreFlag | 是否忽略错外行 | String1 | 不可空 | 1:不忽略 2:忽略 为1时,只要存在错误的明细行则整个批次失败 为2时,丢弃错误的明细行后继续处理。 |
purpose | 用途 | String(256) | 不可空 | 请从如下值中选一种填入: 1. 销售结算款 2. 佣金/工资 |
ext1 | 扩展字段1 | String(256) | 可空 | |
ext2 | 扩展字段2 | String(256) | 可空 | |
noticeUrl | 结果通知地址 | String(256) | 不可空 | |
realTimeNoticeUrl | 实时部分结果通知地址2 | String(256) | 可空 | 当商户需要实时通知时传输 |
details | 提现明细 | 不可空 |
见提现明细字段说明; 例:12222222|72|CMB|M|1|10012159864|testsandobx|00|320125198805232313|江苏省|南京市|招行银行南京分行城东支行|Test|T1001|||10000006|收款银行 明细字段值可为空但栏位必须存在。 |
|
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
提现明细字段说明:各字段以|分隔,各行以半角“;”分隔
序号 | 字段 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 提现明细流水号 | String(32) | M | 同一商户号下唯一 |
2 | 金额 | Number(15) | M | 格式为实际金额扩大100倍提交。如1000,表示10元 |
3 | 收款银行代码 | String(32) | C | 详见字典当收款账户类型为汇付内部账户时,无需填写 |
4 | 收款账户的类型 | String(1) | M | 收款账户的类型 ‘C’–对公 ‘P’–对私 ‘H’–汇付内部账户 ‘M’–汇付内部商户账户 ‘S’–对私存折账户 ‘G’–对公存折账户 |
5 | 到账时效 | String(1) | C | 到账类型,收款账户的类型为C和P,S和G时必填 1:T+0,2:T+1,4:T0批量 |
6 | 账户 | String(32) | M | 银行账号纯数字。若账户类型为H,则为汇付账户号 |
7 | 户名 | String(32) | M | 户名 |
8 | 证件类型 | String(2) | M | 00–身份证 01–护照 02–军官证 03–士兵证 04–回乡证 05–户口本 06–外国护照 07–其它个人证件类型 61–组织机构代码证 62–营业执照 63–税务登记证 69–其它机构证件 |
9 | 证件号码 | String(32) | M | 收款人证件号,如果身份证号包含X,请保持字母为大写 |
10 | 省份 | String(30) | C | 见附录2 |
11 | 地区 | String(30) | C | 见附录2 |
12 | 支行名 | String(256) | C | 支行全称,如:招行银行南京分行城东支行 |
13 | 提现用途 | String(256) | M | 请从如下值中选一种填入: 1. 销售结算款 2. 佣金/工资 |
14 | 业务参考号 | String(256) | O | 备用 |
15 | 扩展字段1 | String(256) | O | 备用 |
16 | 扩展字段2 | String(256) | O | 备用 |
17 | 出款用户号 | String(8) | M | 开户成功,返回的userId |
18 | 收款行联行号 | String(20) | C | 对公时,省市支行名称和收款行联行号二选一 对公/对私存折账户时,收款行联行号必填 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
batchNo={batchNo}&ignoreFlag={ignoreFlag}&merchantAcctId={merchantAcctId}&niticeUrl={noticeUrl}&payCur={payCur}&payTAmt={payTAmt}&payTCnt={payTCnt}&requestId={requestId}&requestTime={requestTime}&signType={signType}&terminalId={terminalId}&version={version}
2.7.2应答
同步返回参数说明:
参数名称 | 参数含义 | 长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
requestTime | 请求时间 | String(16) | 原样返回 |
merchantAcctId | 商户号 | String(10) | 原样返回 |
terminalId | 终端号 | String(32) | 原样返回 |
batchNo | 批次号 | String(32) | 原样返回 |
payCur | 付款币种 | String(32) | 原样返回 |
payTCnt | 总笔数 | Number(15) | 当ignoreFlag=1时,原样返回 当ignoreFlag=2时,返回实际成功的总笔数 |
payTAmt | 总金额 | Number(11) | 当ignoreFlag=1时,原样返回 当ignoreFlag=2时,返回实际成功的总金额 |
purpose | 用途 | String(256) | 原样返回 |
ignoreFlag | 是否忽略错误行 | String(1) | 原样返回 |
ext1 | 扩展字段1 | String(256) | 原样返回 |
ext2 | 扩展字段2 | String(256) | 原样返回 |
noticeUrl | 结果通知地址 | String(256) | 原样返回 |
realTimeNoticeUrl | 实时结果通知地址 | String(256) | 原样返回 |
details | 提现明细 | 存在错误明细时返回,格式见返回明细字段说明2.1.1 | |
status | 状态 | String(1) | 1:全部接收成功 2:全部接收失败 3:部分接收成功(当且仅当ignoreFlag=2时返回) |
errorCode | 错误码 | String(6) | 格式校验未通过时返回该字段 |
errorMsg | 错误描述 | String(256) | 格式校验未通过时返回该字段 |
signMsg | 签名信息 | String(2048) | 签名字符串,商户需对该字段进行验签。详情请参考验签方法。对于所有值不为空的参数及对应值,按照字母顺序组成字符串 DSA:参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行支付平台证书加密形成密文后进行2048位的Base64转码。 |
2.1.1返回明细字段说明:各字段以|分隔,各行以半角“;”分隔
序号 | 字段 | 格式 | 说明 |
---|---|---|---|
1 | 提现明细流水号 | String(32) | 原样返回 |
2 | 金额 | Number(15) | 原样返回 |
3 | 收款银行代码 | String(32) | 原样返回 |
4 | 收款账户的类型 | String(1) | 原样返回 |
5 | 到账类型 | String(1) | 原样返回 |
6 | 账号 | String(32) | 原样返回 |
7 | 户名 | String(32) | 原样返回 |
8 | 证件类型 | String(32) | 原样返回 |
9 | 证件号码 | String(32) | 原样返回 |
10 | 省份 | String(30) | 原样返回 |
11 | 地区 | String(30) | 原样返回 |
12 | 支行名 | String(256) | 原样返回 |
13 | 用途 | String(256) | 原样返回 |
14 | 业务参考号 | String(256) | 原样返回 |
15 | 扩展字段1 | String(256) | 原样返回 |
16 | 扩展字段2 | String(256) | 原样返回 |
17 | 出款用户号 | String(8) | 原样返回 |
18 | 收款行联行号 | String(30) | 原样返回 |
19 | 失败原因 | String(128) | 当失败时返回失败原因描述 |
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
version={version}&signType={signType}&requestId={requestId}&requestTime={requestTime}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&batchNo={batchNo}&payCur={payCur}&payTCnt={payTCnt}&payTAmt={payTAmt}&ignoreFlag={ignoreFlag}¬iceUrl={noticeUrl}&status={status}&errorCode={errorCode}&errorMsg={errorMsg}
2.2 提现结果通知(全部)
2.8.1请求
当批次下所有明细都收到银行返回的结果时,发起此通知,通知地址为申请时提交的noticeUrl
协议参数
参数名称 | 参数含义 | 长度 | 可否为空 | 参数说明 |
---|---|---|---|---|
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数
参数名称 | 参数含义 | 长度 | 可否为空 | 参数说明 |
---|---|---|---|---|
requestTime | 请求时间 | String(16) | 不可空 | 原样返回 |
merchantAcctId | 商户号 | String(32) | 不可空 | 原样返回 |
terminalId | 终端号 | String(32) | 不可空 | 原样返回 |
batchNo | 提现批次号 | String(32) | 不可空 | 原样返回 |
payCur | 付款币种 | String(3) | 不可空 | 默认CNY |
payTCnt | 总笔数 | Number(15) | 总笔数 | 当ignoreFlag=1时,原样返回 当ignoreFlag=2时,返回实际接收成功的总笔数 |
payTAmt | 总金额 | Number(11) | 不可空 | 单位:分 当ignoreFlag=1时,原样返回; 当ignoreFlag=2时,返回实际接收成功的总金额. |
ignoreFlag | 忽略错误行 | String(1) | 不可空 | 原样返回 |
purpose | 用途 | String(256) | 可空 | 原样返回 |
ext1 | 扩展字段1 | String(256) | 可空 | 原样返回 |
ext2 | 扩展字段2 | String(256) | 可空 | 原样返回 |
noticeUrl | 结果通知地址 | String(256) | 不可空 | 原样返回 |
realTimeNoticeUrl | 实时结果通知地址 | String(256) | 不可空 | |
details | 提现明细 | 不可空 | 仅返回提现失败的交易明细,未在明细中返回的明细均表示提现成功。格式见结果通知明细字段说明2.1.11 | |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
2.1.11结果通知明细字段说明:各字段以|分隔,各行以半角“;”分隔
序号 | 字段 | 格式 | 说明 |
---|---|---|---|
1 | 提现明细流水号 | String(32) | 原样返回 |
2 | 金额 | Number(15) | 原样返回 |
3 | 收款银行代码 | String(32) | 原样返回 |
4 | 收款账户的类型 | String(1) | 原样返回 |
5 | 到账类型 | String(1) | 原样返回 |
6 | 账号 | String(32) | 原样返回 |
7 | 户名 | String(32) | 原样返回 |
8 | 证件类型 | String(2) | 原样返回 |
9 | 证件号码 | String(32) | 原样返回 |
10 | 省份 | String(30) | 原样返回 |
11 | 地区 | String(30) | 原样返回 |
12 | 支行名 | String(256) | 原样返回 |
13 | 用途 | String(256) | 原样返回 |
14 | 业务参考号 | String(256) | 原样返回 |
15 | 扩展字段1 | String(256) | 原样返回 |
16 | 扩展字段2 | String(256) | 原样返回 |
17 | 出款用户号 | String(8) | 原样返回 |
18 | 收款行联行号 | String(20) | 原样返回 |
19 | 失败原因 | String(128) | 返回具体失败原因描述 |
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
version={version}&signType={signType}&requestTime={requestTime}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&batchNo={batchNo}&payCur={payCur}&payTCnt={payTCnt}&payTAmt={payTAmt}&ignoreFlag={ignoreFlag}¬iceUrl={noticeUrl}
2.8.2应答
商户端接收到通知结果并处理完毕后需明确返回字符串:<result>000000</reuslt>表示接收并处理成功。如果我司没有成功收到<result>000000</reuslt>,系统会按照一定策略通知6次或收到<result>000000</reuslt>后结束停止,以先到者为准。
2.3 提现结果实时通知(部分)
2.9.1请求
每笔提现明细收到银行的异步结果通知时,立即通知商户该笔提现明细的处理结果。同时支持累积一定的数量(N)后合并通知,
目的是为了减轻商户端服务器压力。N的范围是根据商户需要在我司系统中配置的,范围:0<=N<=10,默认为0,表示不发起此类型的通知。
若需要通知,此通知地址为申请时提交的realTimeNoticeUrl。
参数名称 | 参数含义 | 长度 | 可否为空 | 说明 |
---|---|---|---|---|
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数
参数名称 | 参数含义 | 长度 | 可否为空 | 说明 |
---|---|---|---|---|
requestTime | 请求时间 | String(16) | 不可空 | 原样返回 |
merchantAcctId | 商户号 | String(32) | 不可空 | 原样返回 |
terminalId | 终端号 | String(32) | 不可空 | 原样返回 |
batchNo | 提现批次号 | String(32) | 不可空 | 原样返回 |
payCur | 付款币种 | String(3) | 不可空 | 默认CNY |
payTCnt | 总笔数 | Number(15) | 总笔数 | 本次通知明细总笔数 |
payTAmt | 总金额 | Number(11) | 不可空 | 本次通知明细总金额 |
ignoreFlag | 忽略错误行 | String(1) | 不可空 | 原样返回 |
purpose | 用途 | String(256) | 可空 | 原样返回 |
ext1 | 扩展字段1 | String(256) | 可空 | 原样返回 |
ext2 | 扩展字段2 | String(256) | 可空 | 原样返回 |
noticeUrl | 结果通知地址 | String(256) | 不可空 | 原样返回 |
realTimeNoticeUrl | 实时结果通知地址 | String(256) | 不可空 | |
details | 提现明细 | 不可空 | 本次通知累积的明细,无论成功失败都会返回。格式参照实时通知明细字段说明2.1.12 | |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
2.1.12结果通知明细字段说明:各字段以|分隔,各行以半角“;”分隔
序号 | 字段 | 格式 | 说明 |
---|---|---|---|
1 | 提现明细流水号 | String(32) | 原样返回 |
2 | 金额 | Number(15) | 原样返回 |
3 | 收款银行代码 | String(32) | 原样返回 |
4 | 收款账户的类型 | String(1) | 原样返回 |
5 | 到账类型 | String(1) | 原样返回 |
6 | 账号 | String(32) | 原样返回 |
7 | 户名 | String(32) | 原样返回 |
8 | 证件类型 | String(2) | 原样返回 |
9 | 证件号码 | String(32) | 原样返回 |
10 | 省份 | String(30) | 原样返回 |
11 | 地区 | String(30) | 原样返回 |
12 | 支行名 | String(256) | 原样返回 |
13 | 用途 | String(256) | 原样返回 |
14 | 业务参考号 | String(256) | 原样返回 |
15 | 扩展字段1 | String(256) | 原样返回 |
16 | 扩展字段2 | String(256) | 原样返回 |
17 | 出款用户号 | String(8) | 原样返回 |
18 | 收款行联行号 | String(20) | 原样返回 |
19 | 失败原因 | String(128) | 返回具体失败原因描述 |
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
version={version}&signType={signType}&requestTime={requestTime}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&batchNo={batchNo}&payCur={payCur}&payTCnt={payTCnt}&payTAmt={payTAmt}&ignoreFlag={ignoreFlag}¬iceUrl={noticeUrl}
2.9.2应答
商户端接收到通知结果并处理完毕后需明确返回字符串:<result>000000</reuslt>表示接收并处理成功。如果我司没有成功收到<result>000000</reuslt>,系统会按照一定策略通知6次或收到<result>000000</reuslt>后结束停止,以先到者为准。
2.4 提现结果查询(单笔)
2.10.1请求
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/remitQry.htm |
正式环境 | https://global.chinapnr.com/mcs/remitQry.htm |
协议参数
参数名称 | 参数含义 | 长度 | 可否为空 | 参数说明 |
---|---|---|---|---|
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数
参数名称 | 参数含义 | 长度 | 可否为空 | 参数说明 |
---|---|---|---|---|
requestId | 请求流水号 | String(32) | 不可空 | 商户系统中唯一性ID |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户会员号 | String(32) | 不可空 | 由我司提供 |
terminalId | 终端号 | String(32) | 不可空 | 由我司提供 |
batchNo | 提现批次号 | String(32) | 不可空 | 商户系统中唯一标识该笔批次 |
remitNo | 提现明细流水号 | String(32) | 不可空 | 关联明细字段的唯一流水号 |
applyDate | 原批次申请日期 | String(8) | 不可空 | 为批次申请提交的日期 格式:yyyyMMdd例如:20180920 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
applyDate={applyDate}&batchNo={batchNo}&merchantAcctId={merchantAcctId}&remitNo={remitNo}&requestId={requestId}&requestTime={requestTime}&signType={signType}&terminalId={terminalId}&version={version}
2.10.2应答
同步返回参数说明:
参数名称 | 参数含义 | 长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
requestTime | 请求时间 | String(16) | 原样返回 |
merchantAcctId | 商户会员号 | String(32) | 原样返回 |
terminalId | 终端号 | String(32) | 原样返回 |
batchNo | 提现批次号 | String(32) | 原样返回 |
remitNo | 提现明细流水号 | String(32) | 原样返回 |
applyTime | 原批次申请时间 | String(14) | 原批次申请时间,格式:yyyyMMddHHmmss 例如:20180503124565 |
cur | 币别 | String(3) | 默认:CNY |
amt | 金额 | String(15) | 格式为实际金额扩大100倍提交。如1000,表示10元 |
feeAmt | 手续费 | String(15) | 手续费。格式为实际金额扩大100倍提交。如1000,表示10元 |
bankId | 银行编码 | String(32) | 原样返回 |
acctType | 账户类型 | String(1) | 原样返回 |
timeType | 到账时效 | String(1) | 原样返回 |
bankAcct | 收款账户 | String(32) | 原样返回 |
payeeName | 收款人姓名 | String(32) | 原样返回 |
payeeIdType | 收款人证件类型 | String(2) | 原样返回 |
payeeIdNo | 收款人证件号 | String(32) | 原样返回 |
province | 省份 | String(30) | 原样返回 |
city | 城区 | String(30) | 原样返回 |
bankBranch | 支行名称 | String(256) | 原样返回 |
purpose | 用途 | String(256) | 原样返回 |
refNo | 业务参考号 | String(256) | 原样返回 |
ext1 | 扩张字段1 | String(256) | 原样返回 |
ext2 | 扩张字段2 | String(256) | 原样返回 |
userId | 出款用户号 | String(8) | 原样返回 |
cnapsNo | 收款行联行号 | String(20) | 原样返回 |
status | 状态 | String(1) | 0.请求参数错误, 1.处理中, 2.提现成功, 3.提现失败, 4.交易不存在 |
errorCode | 错误码 | String(6) | 当STATUS为0、3、4时返回 |
errorMsg | 错误描述 | String(256) | 当STATUS为0、3、4时返回 |
signMsg | 签名信息 | String(2048) | 签名字符串,商户需对该字段进行验签。详情请参考验签方法。对于所有值不为空的参数及对应值,按照字母顺序组成字符串 DSA:参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行支付平台证书加密形成密文后进行2048位的Base64转码。 |
注: STATUS=0,4时,除商户请求提交的字段和 STATUS、ERR_CODE、ERR_MSG外,均返回空值
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
version={version}&signType={signType}&requestId={requestId}&requestTime={requestTime}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&batchNo={batchNo}&remitNo={remitNo}&applyTime={applyTime}amt={amt}&feeAmt={feeAmt}&bankId={bankId}&acctType={acctType}&bankAcct={bankAcct}&payeeName={payeeName}&payeeIdType={payeeIdType}&payeeIdNo={payeeIdNo}&province={province}&city={city}&bankBranch={bankBranch}&refNo={refNo}&userId={userId}&cnapsNo={cnapsNo}&status={status}&errorCode={errorCode}&errorMsg={errorMsg}
交易规则说明
代发,提现交易规则说明:transAmt(0,100) 交易成功
transAmt[100,200) 交易失败
银行卡:6257080018600105 姓名:正常名称
用户开户
正式环境发送异步通知只支持443或80端口 其他端口暂时不支持
本文档定义CHINAPNR结汇入境业务开户接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
1 个人用户开户
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/individualComplianceReg.htm |
正式环境 | https://global.chinapnr.com/mcs/individualComplianceReg.htm |
1.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | - |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 由我司提供 |
platformUserId | 用户平台ID | String(32) | 不可空 | 用户在商户系统中的唯一编号 |
platformRegTime | 平台用户注册时间 | String(16) | 不可空 | yyyyMMddHHmmss |
contractEmailId | 签约邮箱 | String(40) | 不可空 | 用于第三方签约注册。此邮箱建议由商户随机生成,需在商户系统中唯一,格式可以为:{商户英文简称}+{唯一标识}@{商户英文简称}.com |
name | 姓名 | String(32) | 不可空 | - |
certType | 证件类型 | String(2) | 不可空 | 00-身份证(目前仅支持00) 01-护照 02-军官证 03-士兵证 04-回乡证 06-警官证 08-台胞证 13-其他 |
certId | 证件号码 | String(64) | 不可空 | 支- |
certExpDateStart | 证件有效期起始 | String(8) | 可空 | yyyyMMdd。 |
certExpDateEnd | 证件有效期结束 | String(8) | 不可空 | yyyyMMdd。如无则填写20990101 |
mobileNumber | 手机号 | String(11) | 不可空 | - |
address | 地址 | String(128) | 不可空 | - |
电子邮箱 | String(40) | 不可空 | 此邮箱号将用于接收合同文件,需保证正确性、真实性 | |
bankCode | 开户银行 | String(20) | 不可空 | 附件代发银行编码 |
acctType | 账户类型 | String(1) | 不可空 | 1-对公 2-对私 |
bankAcct | 账号 | String(20) | 不可空 | - |
acctName | 户名 | String(50) | 不可空 | 对公时须与企业名称一致; 对私时须与姓名一致 |
province | 省份 | String(8) | 条件必输 | 附录省份编码 |
area | 地区 | String(8) | 条件必输 | 附录地区编码 |
bankBranch | 支行名称 | String(50) | 条件必输 | - |
uniteBankCode | 联行号 | String(20) | 条件必输 | 对公时,省+地区+支行名称,或者收款联行号至少一组不为空。 |
certPhotoCopyF | 证件影印件正面 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
certPhotoCopyB | 证件影印件反面 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
asyncNoticeFlag | 是否接收异步通知 | String(1) | 不可空 | 固定填1,接收异步通知。 |
noticeUrl | 后台通知地址 | String(256) | 不可空 | 互联网可访问。用于接收异步结果。 |
ext1 | 扩展字段1 | String(2000) | 不可空 | 店铺信息,请以jason方式按如下规则填写:{"storeInfo":[{"storeId":"AMAZON_eq3142412342","storelink":"www.amazon.com/dfadasf"},{"storeId":"EBAY_EQRWE","storelink":"www.ebay.com/234234"}]}其中,storeId为“平台名称_店铺ID”,storelink为店铺链接。注:如果没有店铺ID可以提供例如用户在电商平台的sellerid或者在平台的账号等唯一识别标记作为替代;如果没有店铺链接,值可填N/A。 |
ext2 | 扩展字段2 | String(512) | 可空 | 备用 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
- - 仅对非空字段进行加签
acctName={acctName}&acctType={acctType}&address={address}&area={area}&bankAcct={bankAcct}&bankBranch={bankBranch}&bankCode={bankCode}&certExpDate={certExpDate}&certId={certId}&certType={certType}&contractEmailId={contractEmailId}&email={email}&merchantAcctId={merchantAcctId}&mobileNumber={mobileNumber}&name={name}¬iceUrl={noticeUrl}&platformRegTime={platformRegTime}&platformUserId={platformUserId}&province={province}&requestId={requestId}&requestTime={requestTime}&signType={signType}&uniteBankCode={uniteBankCode}&version={version}
1.2 应答
同步/异步返回参数说明:
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
merchantAcctId | 商户号 | String(32) | 原样返回 |
platformUserId | 用户平台ID | String(32) | 原样返回 |
ext1 | 扩展字段1 | String(512) | 原样返回 |
ext2 | 扩展字段2 | String(512) | 原样返回 |
userId | 汇付唯一用户号 | String(11) | result为00时返回 |
result | 状态 | String(2) | 01-审核中 02-失败 00-成功 |
errorCode | 错误码 | String(8) | 错误码;失败时返回的错误代码,可以为空。 |
errorMsg | 错误描述 | String(256) | 错误描述;失败时返回的错误信息,可以为空。 |
signMsg | 签名信息 | String(2048) | 异步返回参数,同步无此参数 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&userId={userId}&version={version}
2 企业用户开户
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/enterpriseRegV2.htm |
正式环境 | https://global.chinapnr.com/mcs/enterpriseRegV2.htm |
2.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | - |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 由我司提供 |
platformUserId | 用户平台ID | String(32) | 不可空 | 用户在商户系统中的唯一编号 |
platformRegTime | 平台用户注册时间 | String(16) | 不可空 | yyyyMMddHHmmss |
contractEmailId | 签约邮箱 | String(40) | 不可空 | 用于第三方签约注册。此邮箱建议由商户随机生成,需在商户系统中唯一,格式可以为:{商户英文简称}+{唯一标识}@{商户英文简称}.com |
name | 企业名称 | String(64)) | 不可空 | - |
shortName | 企业简称 | String(20) | 可空 | - |
type | 企业类型 | String(2) | 不可空 | 1-个体工商户 2-企业 |
legalPerson | 法人姓名 | String(32) | 不可空 | - |
legalCertType | 法人证件类型 | String(2) | 不可空 | 00-身份证 |
legalCertId | 法人证件号 | SString(32) | 不可空 | - |
legalCertExpDateStart | 法人证件生效日期 | String(8) | 可空 | 格式yyyyMMdd。 |
legalCertExpDateEnd | 法人证件时效日期 | String(8) | 不可空 | 格式yyyyMMdd。如无则填写20990101 |
legalMobile | 法人手机号 | String(11) | 可空 | - |
contactName | 联系人姓名 | String(32) | 不可空 | - |
contactCertType | 联系人证件类型 | String(2) | 不可空 | 00-身份证 |
contactCertId | 联系人证件号 | String(32) | 不可空 | - |
contactCertExpDateStart | 联系人证件生效日期 | String(8) | 不可空 | 格式yyyyMMdd。 |
contactCertExpDateEnd | 联系人证件失效日期 | String(8) | 不可空 | 格式:yyyyMMdd 若证件上无有效期,则填写20990101 |
contactMobile | 联系人手机号 | String(11) | 不可空 | - |
contactEmail | 联系人邮箱 | String(40) | 不可空 | - |
address | 企业地址 | String(128) | 不可空 | - |
phone | 企业电话 | String(15) | 不可空 | - |
orgCode | 组织机构代码 | String(45) | 不可空 | 组织机构代码 |
orgExpDateStart | 组织机构代码证生效日期 | String(8) | 不可空 | 日期格式:yyyyMMdd |
orgExpDateEnd | 组织机构代码失效日期 | String(8) | 不可空 | 格式:yyyyMMdd,若证件上无有效期,则填写20990101 |
bizLicenseCode | 营业执照号 | String(45) | 不可空 | 工商登记号或统一社会信用代码。开户后不可变更。 |
bizLicenseExpDateStart | 营业执照生效日期 | String(8) | 可空 | 日期格式:yyyyMMdd |
bizLicenseExpDateEnd | 营业执照失效日期 | String(8) | 不可空 | 日期格式:yyyyMMdd。若证件上无有效期,则填写20990101 |
taxRegCode | 税务登记号 | String(64) | 条件必输 | 若类型为企业,且为旧证时必填。 |
taxRegExpDateStart | 税务登记证生效日期 | String(8) | 可空 | 日期格式:yyyyMMdd |
taxRegExpDateEnd | 税务登记证失效日期 | String(8) | 条件必输 | 格式:yyyyMMdd, 税务登记号不为空时必填,若证件上无有效期,则填写20990101 |
bankCode | 开户银行 | String(20) | 不可空 | 附件代发银行编码 |
acctType | 账户类型 | String(1) | 不可空 | 1-对公 2-对私 |
bankAcct | 账号 | String(20) | 不可空 | - |
acctName | 户名 | String(50) | 不可空 | 对公时须与企业名称一致; 对私时须与法人姓名一致 |
province | 省份 | String(8) | 条件必输 | 附录省份编码 |
area | 地区 | String(8) | 条件必输 | 附录地区编码 |
bankBranch | 支行名称 | String(50) | 条件必输 | - |
uniteBankCode | 收款行联行号 | String(20) | 条件必输 | 对公时,省+地区+支行名称,或者收款联行号至少一组不为空。 |
legalCertPhotoCopyF | 法人证件的影印件正面 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
legalCertPhotoCopyB | 法人证件的影印件反面 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
contactCertPhotoCopyF | 联系人证件的影印件正面 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
contactCertPhotoCopyB | 联系人证件的影印件反面 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
bizLicensePhotoCopy | 营业执照影印件 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
orgPhotoCopy | 组织机构代码证影印件 | - | 条件必输 | 若类型为企业,且为旧证时必填,文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
taxRegPhotoCopy | 税务登记证影印件 | - | 条件必输 | 若类型为企业,且为旧证时必填,文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
openLicensePhotoCopy | 开户许可证影印件 | - | 可空 | 若类型为企业,且为旧证时必填,文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
asyncNoticeFlag | 是否接收异步通知 | String(1) | 不可空 | 固定值1,有异步 |
noticeUrl | 后台通知地址 | String(256) | 不可空 | 互联网可访问。 |
ext1 | 扩展字段1 | String(2000) | 不可空 | 店铺信息,请以jason方式按如下规则填写:{"storeInfo":[{"storeId":"AMAZON_eq3142412342","storelink":"www.amazon.com/dfadasf"},{"storeId":"EBAY_EQRWE","storelink":"www.ebay.com/234234"}]}其中,storeId为“平台名称_店铺ID”,storelink为店铺链接。注:如果没有店铺ID可以提供例如用户在电商平台的sellerid或者在平台的账号等唯一识别标记作为替代;如果没有店铺链接,值可填N/A。 |
ext2 | 扩展字段2 | String(512) | 可空 | 备用 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
- 仅对非空字段进行加签
acctName={acctName}&acctType={acctType}&address={address}&area={area}&bankAcct={bankAcct}&bankBranch={bankBranch}&bankCode={bankCode}&bizLicenseCode={bizLicenseCode}&contactCertId={contactCertId}&contactCertType={contactCertType}&contactEmail={contactEmail}&contactMobile={contactMobile}&contactName={contactName}&contractEmailId={contractEmailId}&legalCertId={legalCertId}&legalCertType={legalCertType}&legalMobile={legalMobile}&legalPerson={legalPerson}&merchantAcctId={merchantAcctId}&name={name}&orgCode={orgCode}&phone={phone}&platformRegTime={platformRegTime}&platformUserId={platformUserId}&province={province}&requestId={requestId}&requestTime={requestTime}&shortName={shortName}&signType={signType}&taxRegCode={taxRegCode}&type={type}&uniteBankCode={uniteBankCode}&version={version}
2.2 应答
同步/异步返回参数说明:
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
requestTime | 请求时间 | String(16) | 原样返回 |
merchantAcctId | 商户号 | String(32) | 原样返回 |
platformUserId | 用户平台ID | String(32) | 原样返回 |
userId | 汇付唯一用户号 | String(11) | result为00时返回 |
result | 状态 | String(2) | 01-审核中 02-失败 00-成功 |
errorCode | 错误码 | String(8) | 错误码;失败时返回的错误代码,可以为空。 |
errorMsg | 错误描述 | String(256) | 错误描述;失败时返回的错误信息,可以为空。 |
ext1 | 扩展字段1 | String(512) | 原样返回 |
ext2 | 扩展字段2 | String(512) | 原样返回 |
signMsg | 签名信息 | String(2048) | 异步返回参数,同步无此参数 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
version={version}&signType={signType}&requestId={requestId}&requestTime={requestTime}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&userId={userId}&result={result}&errorCode={errorCode}&errorMsg={errorMsg}
3 个人/企业用户开户结果查询
环境 | HTTPS请求地址 |
---|---|
测试环境 | 个人:https://hfgj.testpnr.com/mcs/individualQry.htm 企业:https://hfgj.testpnr.com/mcs/enterpriseQry.htm |
正式环境 | 个人:https://global.chinapnr.com/mcs/individualQry.htm 企业:https://global.chinapnr.com/mcs/enterpriseQry.htm |
3.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | - |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 由我司提供 |
platformUserId | 用户平台ID | String(32) | 不可空 | 用户在商户系统中的唯一编号 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&signType={signType}&version={version}
3.2 应答
同步/异步返回参数说明:
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
requestTime | 请求时间 | String(16) | 原样返回 |
merchantAcctId | 商户号 | String(32) | 原样返回 |
platformUserId | 用户平台ID | String(32) | 原样返回 |
userId | 汇付唯一用户号 | String(11) | 汇付唯一用户号 |
result | 状态 | String(2) | 01-审核中 02-失败 00-成功 |
errorCode | 错误码 | String(8) | 错误码;失败时返回的错误代码,可以为空。 |
errorMsg | 错误描述 | String(256) | 错误描述;失败时返回的错误信息,可以为空。 |
signMsg | 签名信息 | String(2048) | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
version={version}&signType={signType}&requestId={requestId}&requestTime={requestTime}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&result={result}&errorCode={errorCode}&errorMsg={errorMsg}
商户结汇接口
正式环境发送异步通知只支持443或80端口 其他端口暂时不支持.
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
本页面接口通过XML格式提交报文,加签为全报文加签名,返回以XML报文,具体可在资源下载中下载demo:结汇代发api
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
报文必填标识:M(必填选项) O(可选选项) C(条件必选,特定条件先必填); 报文必填标识:AN(字母及数字) N(数字) A(字母) D(日期,14位数值:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位]) X(其它任意字符)
请求地址
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/sell/receivesell.htm |
正式环境 | https://global.chinapnr.com/sell/receivesell.htm |
1.1 T0结汇结果通知
1.1请求
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
NOTIFY | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 会员账号,由我司提供的商户号+01,共13位数字 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200000:T0结汇处理结果通知 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
RECEIPT_ID | 收汇流水号 | AN32 | O | 汇付唯一流水号 |
BANK_ID | 收款银行编号 | AN32 | M | 目前默认BOC |
BANK_ACC_ID | 收款银行账号 | AN32 | M | 汇付收款银行账号 |
BATCH_NO | 商户业务流水号 | AN32 | O | 商户汇款凭证上的业务编号,便于商户确定对应哪笔汇款 |
BANK_TRXID | 银行汇入汇款编号 | AN32 | M | |
REMIT_TIME | 汇款时间 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
PAY_CURRENCY | 币种 | X3 | M | |
PAY_AMOUNT | 到账金额 | N15 | M | 格式为实际金额扩大100倍 |
PAYOUT_AMT_FX | 可下发金额(汇款币种) | N15 | M | 格式为实际金额扩大100倍。币种同到账币种 |
SHCEPP_FEE_FX | 手续费金额(汇款币种) | N15 | M | 格式为实际金额扩大100倍。币种同到账币种。手续费后收时该金额为0 |
ORI_PAY_AMOUNT | 原汇款金额(33B场) | N15 | O | 格式为实际金额扩大100倍 |
RATE | 汇率 | N15 | O | 日元、韩元:实际汇率扩大100万倍。其他币种实际汇率扩大10000备。如日元汇率为0.05904,传给商户的汇率为59040;如美元汇率为6.5321,传给商户的汇率为65321。到账币种为外币时必填 |
RATE_TIME | 汇率时间 | D | C | 格式:yyyyMMddHHmmss,到账币种为外币时必填 |
SETTLE_AMT | 结汇人民币金额 | N15 | M | 格式为实际金额扩大100倍提交。等于PAYOUT_AMT+ SHCEPP_FEE |
CHARGE_DETAILS | 费用细则(71A) | X3 | O | SHA/BEN/OUR |
RECEIVER_CHARGES | 收报行的收费(71G) | N15 | O | 格式为实际金额扩大100倍 |
SENDER_REFERENCE | 汇款参考号(20场) | X16 | O | |
ORDER_BANK | 付汇银行信息 | X256 | O | |
PAY_ACC | 汇款人账号 | X256 | O | |
PAYER_NAME | 汇款人名称 | X256 | O | |
PAYER_ADDRESS | 汇款人地址 | X256 | O | |
REMIT_INFO | 交易附言(70场) | X256 | O | |
SENDER_BIC | 发报行BIC CODE | X11 | O | |
PAYOUT_AMT | 可下发金额(人民币) | N15 | M | 格式为实际金额扩大100倍。币种人民币 |
SHCEPP_FEE | 手续费金额(人民币) | N15 | M | 格式为实际金额扩大100倍。币种人民币。手续费后收时该金额为0 |
FEE_AMT | 手续费金额 | N15 | O | 备用。格式为实际金额扩大100倍提交。 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
1.1.1示例报文
通知报文以xml方式返回,如:
1.2应答
商户->汇付
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200000:T0结汇处理结果通知 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
RESULT | 接收确认 | AN30 | M | 000000 接收成功 |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
1.2.1示例报文
应答报文以xml方式返回,如:
商户结汇接口
正式环境发送异步通知只支持443或80端口 其他端口暂时不支持
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
本页面接口通过XML格式提交报文,加签为全报文加签名,返回以XML报文,具体可在资源下载中下载demo:结汇代发api
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
报文必填标识:M(必填选项) O(可选选项) C(条件必选,特定条件先必填); 报文必填标识:AN(字母及数字) N(数字) A(字母) D(日期,14位数值:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位]) X(其它任意字符)
请求地址
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/sell/receivesell.htm |
正式环境 | https://global.chinapnr.com/sell/receivesell.htm |
1.交易明细备案
1.1请求
商户->汇付
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
REQUEST | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 会员账号,由我司提供的商户号+01,共13位数字 |
TERMINALID | 虚拟终端号 | AN8 | M | 汇付给的虚拟终端号,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100010:结汇申请 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
RECEIPT_ID | 收汇流水号 | AN32 | O | 汇付唯一流水号 |
BATCH_NO | 结汇申请批次号 | AN32 | M | 对应同一笔汇款;同一商户号唯一;同步返回失败可重新提交 |
ORD_NUM | 请求序号 | AN10 | M | 同一批次超过5000笔时需分多次备案。 格式为:当前批次号/总批次号。 默认为:1/1 总批次号最大99 |
REQTIME | 请求时间 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
PAY_CUR | 币种 | X3 | M | 见附录币别代码 |
SUM_CNT | 批次总笔数 | N15 | M | 批次的总笔数 |
SUM_AMT | 批次总金额 | N15 | M | 批次总金额,格式为实际金额扩大100倍提交。如10000,表示100元 |
PAY_TCNT | 总笔数 | N15 | M | 本次请求的总笔数,单次备案数据不超过5000笔。 如批次总笔数超过5000笔,可分批次备案 |
PAY_TAMT | 总金额 | N15 | M | 本次请求的总金额,格式为实际金额扩大100倍提交。 如10000,表示100元 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
REVIEW_URL | 审核结果通知地址 | X256 | M | 需外网可访问的地址:该地址格式可参考下面:1.3 明细备案审核结果通知格式 |
RESULT_URL | 备用地址 | X256 | M | 该地址无通知返回,当前该地址值同REVIEW_URL即可 |
BIZ_TYPE | 业务类型 | N4 | M | 该批次订单对应的业务类型:
1001 跨境电商货物贸易 2001 机票 2002 酒店住宿 2003 海外留学 2004 旅游套餐 2005 物流服务 2006 国际租车 2007 线上教育 2008 广告服务 1002 跨境电商货物贸易B2B 1010 一般贸易 1011 市场采购 |
DETAILS | 交易明细 | - | M | 见如下2.1.1说明 |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
2.1.1 交易明细格式说明
各字段以|分隔,各行以回车换行符分隔
请求交易明细笔数不能大于5000,当行数达到5000时最后一行明细末尾不能存在换行符(可以查看以下示例中remark</DETAILS>的不同)
批次中存在一笔交易明细失败,整批失败,重新修改提交
正确示例
如:
错误示例
如:
序号 | 字段名 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 明细流水号 | AN32 | M | 同一商户号下唯一,若备案失败,也需重新生成 |
2 | 订单编号 | AN32 | M | 订单在电商/电商平台的订单号,如amazon的订单号 |
3 | 业务日期 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
4 | 收款方类型 | X1 | M | 默认P – 个人 C-对公 |
5 | 收款人证件类别 | X2 | M | 收款方类型为P时,00-身份证 收款方类型为C时,支持61-组织机构代码,62/66-统一社会信用代码 同一批明细中不可同时包含对公和对私两种类型 |
6 | 收款人证件号 | X18 | M | 321281119300000000,如果身份证号包含X,请保持字母为大写 |
7 | 收款人名称 | X32 | M | 王文斌;收款人名称支持32个汉字(包含少数民族名字中间的•) |
8 | 收款人帐号 | X32 | M | 411081199004235955 |
9 | 收款银行代码或名称 | X32 | M | 详见字典 |
10 | 付款币种 | X3 | M | 参考币种代码。 |
11 | 付款金额 | N17 | M | 格式为实际金额扩大100倍提交。 如1000,表示10元 |
12 | 商品描述 | X4000 | M |
请按如下json格式填写订单对应商品及收货人的信息: {"customInfo":{"addr":"客户地址","name":"客户名称","tel":"客户联系电话 "},"goodInfo":[{"cnt":"3","name":"货物名称 1","price":"12.31"},{"cnt":"1","name":"货物名称 2","price":"100.31"}], "storeInfo":{"storeId":"amazon_eq3142412342","storelink": "12010" },"totalCnt":"4","cur":"USD","totalAmt":"1000","logInfo":{"logCompany":"物流公司名称 ","logNo":"物流单号"},"productId":"商品大类编号","contractInfo":{"contractId":"20230906121"},"customsDecInfo":{"customsDecCode":"9610","customsDecId":"21231111221"}} 字段解释: customInfo:支付人或收货人信息  addr:地址    name:姓名    tel:联系电话 goodInfo:商品信息,可多个,当订单包含多个商品时请按商品填写   cnt:商品数量,例:3。如商品件数,机票数量,酒店数量等   name:商品名称(按照业务类型区分)业务类型:商品名称 货物:购买商品的名称、机票:航空公司名称/机票号 酒店:酒店名称、留学:学校名称/录取通知书编号   price:商品单价,例:13.36 storeInfo:店铺信息   storeId:平台名称_店铺ID,例:AMAZON_er341342143 《平台名称填写规则》   storelink:店铺链接,例:www.amazon.com/ er341342143 totalCnt:商品总数量,例:30 cur:标价币种,例:USD totalAmt:原订单总金额,例:1000.35 logInfo:物流信息   logCompany:物流公司名称,例:DHL   logNo:物流公司单号,例:32131231231 productId:商品大类编号;请参考:商品大类编码 contractInfo:对公合同申报信息   contractId:申报合同id customsDecInfo:海关报关信息   customsDecCode:海关监管方式   customsDecId:报关单号 特别注意:商品信息容易出现set、print、get、post、files、globals、_construct字符,如有请特殊处理,如改成pri-nt,阿里云安全策略会对报文中完整print等一些特殊字符进行拦截 描述中不要前后出现"|",单独存在不影响 |
13 | 备注 | X256 | O |
2.1.1示例报文
请求报文以xml方式返回,如:
1.2应答
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100010:结汇申请 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
RECEIPT_ID | 收汇流水号 | AN32 | O | 汇付唯一流水号(1:为空 2:等于结汇通知结果中的流水号) |
BATCH_NO | 结汇批次号 | AN32 | M | 对应同一笔汇款; 同一商户号唯一 |
ORD_NUM | 请求序号 | N2 | M | 同一批次超过5000笔需分多次备案时,请求序号依次递增。 |
REQTIME | 请求时间 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
PAY_CUR | 付款币种 | X3 | M | 见附录币别代码 |
SUM_CNT | 批次总笔数 | N15 | M | 批次的总笔数 |
SUM_AMT | 批次总金额 | N15 | M | 批次总金额,格式为实际金额扩大100倍提交。 如1000,表示10元 |
PAY_TCNT | 总笔数 | N15 | M | 本次请求的总笔数,单次备案数据不超过5000笔。 如批次总笔数超过5000笔,可分批次备案 |
PAY_TAMT | 总金额 | N15 | M | 本次请求的总金额,格式为实际金额扩大100倍提交。 如10000,表示100元 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
REVIEW_URL | 审核结果通知地址 | X256 | M | 需外网可访问的地址 |
RESULT_URL | 结汇结果通知地址 | X256 | M | 需外网可访问的地址 |
DETAILS | 交易明细 | - | O | 如果处理成功,则不返回该字段。 如果有交易明细未通过校验则返回所有记录并给出错误说明。 格式参照审核结果通知的交易明细格式说明 |
STATUS | 处理结果 | N1 | M | 1:处理成功 2:处理失败 |
ERRERCODE | 错误码 | X6 | O | |
ERRERMSG | 错误描述 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
1.2.1示例报文
应答报文以xml方式返回,如:
1.3 明细备案审核结果通知
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
NOTIFY | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100020:结汇申请审核结果通知 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
RECEIPT_ID | 收汇流水号 | AN32 | M | 汇付唯一流水号 |
BATCH_NO | 结汇批次号 | AN32 | M | 对应同一笔汇款; 同一商户号唯一 |
ORD_NUM | 请求序号 | N2 | M | 同一批次超过5000笔需分多次备案时,请求序号依次递增。最大999次 |
REQTIME | 请求时间 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
PAY_CUR | 付款币种 | X3 | M | 见附录币别代码 |
SUM_CNT | 批次总笔数 | N15 | M | 批次的总笔数 |
SUM_AMT | 批次总金额 | N15 | M | 批次总金额,格式为实际金额扩大100倍提交。 如10000,表示100元 |
PAY_TCNT | 总笔数 | N15 | M | 本次请求的总笔数,单次备案数据不超过5000笔。 如批次总笔数超过5000笔,可分批次备案 |
PAY_TAMT | 总金额 | N15 | M | 本次请求的总金额,格式为实际金额扩大100倍提交。 如10000,表示100元 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
REVIEW_URL | 审核结果通知地址 | X256 | M | 需外网可访问的地址 |
RESULT_URL | 结汇结果通知地址 | X256 | M | 需外网可访问的地址 |
DETAILS | 交易明细 | - | O | 如果审核成功,则不返回该字段。 如果有交易明细审核拒绝则在ERRERMSG中返回明细所属序列,行数。本字段无明细返回 |
STATUS | 处理结果 | N1 | M | 1:审核成功 2:审核拒绝 |
ERRERCODE | 错误码 | X6 | O | |
ERRERMSG | 错误描述 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
1.3.1示例报文
通知报文以xml方式返回,如:
1.4应答
商户->汇付
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100020:结汇申请审核结果通知 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
RESULT | 接收确认 | AN30 | M | 000000 接收成功 |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
1.4.1示例报文
应答报文以xml方式返回,如:
余额支付
只支持同商户下的账户间交易,包括:
(1)商户付款给旗下用户;
(2)用户付款给所属商户;
(3)用户付款给同商户下的其他用户。
不能商户或用户自己转自己
1 余额支付申请接口
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/acctransfer/transfer.htm |
正式环境 | https://global.chinapnr.com/acctransfer/transfer.htm |
1.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestTime | 请求时间 | String(32) | 不可空 | yyyyMMddHHmmss |
agentAcctId | 代理商账号 | String(16) | 可空 | 默认不填 |
merchantAcctId | 商户会员号 | String(32) | 不可空 | 由我司提供(即11位商户号+01)例如商户号为10012021109,则此处填写1001202110901 |
terminalId | 终端号 | String(32) | 不可空 | 由我司提供 |
batchNo | 批次号 | String(32) | 不可空 | 商户系统中唯一标识该笔批次,失败重发请更换批次号 |
payCur | 付款币种 | String(3) | 不可空 | 默认CNY |
payTCnt | 总笔数 | String(11) | 不可空 | - |
payTAmt | 总金额 | String(15) | 不可空 | 单位分,明细总金额之和 |
ext1 | 扩展字段1 | String(256) | 可空 | 备用 |
ext2 | 扩展字段2 | String(256) | 可空 | 备用 |
noticeUrl | 结果通知地址 | String(256) | 不可空 | 备用 |
details | 支付明细 | - | 不可空 | 见明细字段说明,例:1624938759507|1624938759507|163|M|10012159865|H|20000003|测试|ext1|ext2 |
dupChkFlag | 重复拦截校验标志 | 1 | 可空 | 重复拦截标志,默认值为1校验 0-不校验 1- 校验 校验规则: 批次明细按以下格式拼接,当日存在完全相同的交易则拦截不允许交易 付款人类型+付款人账号+收款人类型+收款人账号+币别+金额 |
signMsg | 签名信息 | - | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
○1提现明细字段说明:各字段以|分隔,各行以半角“;”分隔
序号 | 字段 | 长度 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 明细流水号 | 32 | M | 同一商户号下唯一,用以区分请求记录,失败重发请更新明细流水号 |
2 | 商家业务订单号 | 64 | M | 同一商户号下唯一,用以标识商户系统内部该笔交易的业务订单号,便于全局溯源,例如通过该订单号查看业务相关的背景、凭证材料等 |
3 | 金额 | 15 | M | 格式为实际金额扩大100倍提交。如1000,表示10元 |
4 | 付款人类型 | 1 | M | M:商户 H:用户 |
5 | 付款人类型 | 15 | M | 付款人为商户时,填写本商户号的商户号; 付款人为用户时,填写用户开户时得到的8位用户号 |
6 | 收款人类型 | 1 | M | M:商户 H:用户 |
7 | 收款人账户号 | 15 | M | 收款人为商户时,填写本商户的商户号; 收款人为用户时,填写用户开户时得到的8位用户号 |
8 | 付款背景 | 256 | M | 按实际情况填写,支持中文、数字、英文字母、-或_,不支持特殊字符 |
9 | 扩展字段1 | 256 | O | 备用,值可为空但栏位必须存在 |
10 | 扩展字段2 | 256 | O | 备用,值可为空但栏位必须存在 |
- - 仅对非空字段进行加签
version={version}&signType={signType}&requestTime={requestTime}&agentAcctId={agentAcctId}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&batchNo={batchNo}&payCur={payCur}&payTCnt={payTCnt}&payTAmt={payTAmt}&ext1={ext1}&ext2={ext2}¬iceUrl={noticeUrl}&details={details}&dupChkFlag={dupChkFlag}
1.2 应答
同步/异步返回参数说明:
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestTime | 请求时间 | String(14) | 原样返回 |
merchantAcctId | 商户号 | String(32) | 原样返回 |
terminalId | 终端号 | String(32) | 原样返回 |
batchNo | 批次号 | String(32) | 原样返回 |
payCur | 付款币种 | String(3) | 原样返回 |
payTCnt | 总笔数 | String(11) | 原样返回 |
payTAmt | 总金额 | String(15) | 原样返回 |
ext1 | 扩展字段1 | String(256) | 原样返回 |
ext2 | 扩展字段2 | String(256) | 原样返回 |
noticeUrl | 结果通知地址 | String(256) | 原样返回 |
details | 提现明细 | - | 存在错误明细时返回(只返回错误明细),格式见返回明细字段说明○2 |
status | 状态 | String(1) | 1、受理成功 2、受理失败 |
errorCode | 错误码 | String(6) | 格式校验未通过时返回该字段 |
errorMsg | 错误描述 | String(256) | 格式校验未通过时返回该字段 |
○2返回明细字段说明:各字段以|分隔,各行以半角“;”分隔
序号 | 字段 | 长度 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 明细流水号 | 32 | M | 原样返回 |
2 | 商家业务订单号 | 64 | M | 原样返回 |
3 | 金额 | 15 | M | 原样返回 |
4 | 付款人类型 | 1 | M | 原样返回 |
5 | 付款人类型 | 15 | M | 原样返回 |
6 | 收款人类型 | 1 | M | 原样返回 |
7 | 收款人账户号 | 15 | M | 原样返回 |
8 | 付款背景 | 256 | M | 原样返回 |
9 | 扩展字段1 | 256 | O | 原样返回 |
10 | 扩展字段2 | 256 | O | 原样返回 |
11 | 失败原因 | 256 | M | 失败描述 |
2 余额支付交易结果异步通知
当批次下所有明细都收到处理完成时,发起此通知,通知地址为申请时提交的noticeUrl。
2.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestTime | 请求时间 | String(32) | 不可空 | 原样返回 |
merchantAcctId | 商户会员号 | String(32) | 不可空 | 原样返回 |
terminalId | 终端号 | String(32) | 不可空 | 原样返回 |
batchNo | 批次号 | String(32) | 不可空 | 原样返回 |
payCur | 付款币种 | String(3) | 不可空 | 默认CNY |
payTCnt | 总笔数 | String(11) | 不可空 | 原样返回 |
payTAmt | 总金额 | String(15) | 不可空 | 单位:分 原样返回 |
ext1 | 扩展字段1 | String(256) | 可空 | 原样返回 |
ext2 | 扩展字段2 | String(256) | 可空 | 原样返回 |
noticeUrl | 结果通知地址 | String(256) | 不可空 | 原样返回 |
status | 交易结果 | String(2) | - | 1-全部成功 2-全部失败 3-部分成功 |
details | 支付明细 | - | 不可空 | 仅返回付款失败的交易明细,未在明细中返回的明细均表示付款成功。格式见结果通知明细字段说明○3 |
signMsg | 签名信息 | - | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
序号 | 字段 | 长度 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 明细流水号 | 32 | M | 原样返回 |
2 | 商家业务订单号 | 64 | M | 原样返回 |
11 | 失败原因 | 256 | M | 失败描述 |
- 仅对非空字段进行加签
version={version}&signType={signType}&requestTime={requestTime}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&batchNo={batchNo}&payCur={payCur}&payTCnt={payTCnt}&payTAmt={payTAmt}&ext1={ext1}&ext2={ext2}¬iceUrl={noticeUrl}&details={details}&status={status}
2.2 应答
商户端接收到通知结果并处理完毕后需明确返回字符串:<result>000000</reuslt>表示接收并处理成功。如果我司没有成功收到<result>000000</reuslt>,系统会按照一定策略通知6次或收到<result>000000</reuslt>后结束停止,以先到者为准。
3.余额支付交易结果查询(单笔)
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/acctransfer/transferQuery.htm |
正式环境 | https://global.chinapnr.com/acctransfer/transferQuery.htm |
3.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 商户系统中唯一性ID |
requestTime | 请求时间 | String(14) | 不可空 | yyyyMMddHHmmss |
agentAcctId | 代理商账号 | String(32) | 可空 | 默认不填 |
merchantAcctId | 商户号 | String(32) | 不可空 | 由我司提供 |
terminalId | 终端号 | String(32) | 不可空 | 由我司提供 |
origbatchNo | 原付款批次号 | String(32) | 不可空 | 商户系统中唯一标识该笔批次 |
origtransNo | 原付款明细流水号 | String(32) | 不可空 | 关联明细字段的唯一流水号 |
origApplyDate | 原批次申请日期 | String(8) | 不可空 | 为批次申请提交的日期 格式:yyyyMMdd例如:20180920 |
signMsg | 签名信息 | - | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
version={version}&signType={signType}&requestId={requestId}&requestTime={requestTime}&agentAcctId={agentAcctId}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&origbatchNo={origbatchNo}&origtransNo={origtransNo}&origApplyDate={origApplyDate}
3.2 应答
同步返回参数说明:
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
requestTime | 请求时间 | String(14) | 原样返回 |
merchantAcctId | 商户号 | String(32) | 原样返回 |
terminalId | 终端号 | String(32) | 原样返回 |
origbatchNo | 原付款批次号 | String(32) | 原样返回 |
origtransNo | 原付款明细流水号 | String(32) | 原样返回 |
origApplyTime | 原批次申请时间 | String(14) | 原批次申请时间,格式:yyyyMMddHHmmss 例如:20180503124565 |
cur | 币别 | String(3) | 币别,默认CNY |
amt | 金额 | String(15) | 格式为实际金额扩大100倍提交。如1000,表示10元 |
feeAmt | 手续费 | String(15) | 手续费。格式为实际金额扩大100倍提交。如1000,表示10元 |
ext1 | 扩展字段1 | String(256) | 原样返回 |
ext2 | 扩展字段1 | String(256) | 原样返回 |
payerAcctType | 付款人账户类型 | 1 | 原样返回 |
payerAcctNo | 付款人账户号 | String(15) | 原样返回 | payeeAccttype | 收款人账户类型 | String(1) | 原样返回 | payeeAcctNo | 收款人账户号 | String(15) | 原样返回 | status | 状态 | String(2) | 0.请求参数错误, 1.处理中, 2.付款成功, 3.付款失败, 4.交易不存在(请求流水不存在或原批次受理失败均为交易不存在) |
errorCode | 错误码 | String(6) | 当STATUS为0、3、4时返回 |
errorMsg | 错误描述 | String(256) | 当STATUS为0、3、4时返回 |
注: STATUS=0,4时,除商户请求提交的字段和 STATUS、ERR_CODE、ERR_MSG外,均返回空值
商户代发接口
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
本页面接口通过XML格式提交报文,加签为全报文加签名,返回以XML报文,具体可在资源下载中下载demo:结汇代发API
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
报文必填标识:M(必填选项) O(可选选项) C(条件必选,特定条件先必填); 报文必填标识:AN(字母及数字) N(数字) A(字母) D(日期,14位数值:年[4位]月[2位]日[2位]时[2位]分[2位]秒[2位]) X(其它任意字符)
请求地址
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/sell/receivesell.htm |
正式环境 | https://global.chinapnr.com/sell/receivesell.htm |
1.代发申请
1.1请求
商户->汇付
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
REQUEST | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 汇付给的虚拟终端号 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100040:代发申请 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
BATCH_NO | 代发批次号 | AN32 | M | 商户系统中唯一性ID |
REQTIME | 请求时间 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
PAY_CUR | 币种 | X3 | M | 默认CNY |
PAY_TCNT | 总笔数 | N15 | M | |
PAY_TAMT | 总金额 | N15 | M | 本次请求的总金额,格式为实际金额扩大100倍提交。 如1000,表示100元 |
PURPOSE | 用途 | X256 | M | 请从如下值中选一种填入: 1.销售结算款 2.佣金/工资 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
RESULT_URL | 结果通知地址 | X256 | M | 需外网可访问的地址 |
REVIEW_URL | 校验结果通知地址 | X256 | M | 需外网可访问的地址 |
DETAILS | 交易明细 | - | M | 见如下3.1.1说明 |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
1.1.1 代发明细格式说明
各字段以|分隔,各行以回车换行符分隔
序号 | 字段名 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 代发明细流水号 | X32 | M | 同一商户号下唯一 |
2 | 金额 | N15 | M | 格式为实际金额扩大100倍提交。 如1000,表示10元 |
3 | 收款银行代码或名称 | X256 | O | 详见字典,当收款账户类型为汇付内部账户时,无需填写 |
4 | 收款账户的类型 | X1 | M | 收款账户的类型 ‘C’–对公 ‘P’–对私 ‘H’–汇付用户账户 ‘M’–汇付商户账户 ‘S’–对私存折账户 ‘G’–对公存折账户 |
5 | 账号 | N32 | M | 银行账号 |
6 | 户名 | X32 | M | 户名 |
7 | 证件类型 | AN2 | M | 默认00 00-身份证 01–护照 02–军官证 03–士兵证 04–回乡证 05–户口本 06–外国护照 07–其它个人证件类型 61–组织机构代码证 62–营业执照 63–税务登记证 69–其它机构证件 |
8 | 证件号码 | X32 | M | |
9 | 省份 | X30 | M | 见附录2 |
10 | 地区 | X30 | M | 见附录2 |
11 | 支行名 | X256 | M | 支行全称。 如:招行银行南京分行城东支行 |
12 | 用途 | X256 | M |
请从如下值中选一种填入: 1.销售结算款 2.佣金/工资 |
13 | 对应结汇明细 | X20000 | O | 对应交易明细备案接口中的“明细流水号”,多个流水号用逗号“,”分隔 |
14 | 扩展字段1 | X256 | O | |
15 | 扩展字段2 | X256 | O |
1.1.2示例报文
请求报文以xml方式返回,如:
1.2应答
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100040:代发申请 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
BATCH_NO | 代发批次号 | AN32 | M | 商户系统中唯一性ID |
REQTIME | 请求时间 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
PAY_CUR | 付款币种 | X3 | M | 默认CNY |
PAY_TCNT | 总笔数 | N15 | M | |
PAY_TAMT | 总金额 | N15 | M | |
PURPOSE | 用途 | X256 | M | 佣金/工资 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
RESULT_URL | 结果通知地址 | X256 | M | 需外网可访问的地址 |
DETAILS | 代发明细 | - | O | 参见3.2.1 |
STATUS | 处理结果 | N1 | M | 1:校验处理成功 2:校验处理失败 |
ERRERCODE | 错误码 | X6 | O | |
ERRERMSG | 错误描述 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
1.2.1示例报文
应答报文以xml方式返回,如:
1.3 代发结果通知
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
NOTIFY | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100060:代发结果通知 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
BATCH_NO | 代发批次号 | AN32 | M | 商户系统中唯一性ID |
REQTIME | 请求时间 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
PAY_CUR | 付款币种 | X3 | M | 默认CNY |
PAY_TCNT | 总笔数 | N15 | M | |
PAY_TAMT | 总金额 | N15 | M | |
PURPOSE | 用途 | X256 | M | 佣金/工资 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
RESULT_URL | 结果通知地址 | X256 | M | 需外网可访问的地址 |
DETAILS | 代发明细 | - | O | 代发成功时返回为空;代发失败时返回。 |
STATUS | 处理结果 | N1 | M | 1:代发处理成功 2:代发处理失败 |
ERRERCODE | 错误码 | X6 | O | |
ERRERMSG | 错误描述 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
1.3.1代发明细格式说明
各字段以|分隔,各行以回车换行符分隔
序号 | 字段名 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 代发明细流水号 | X32 | M | 原样返回 |
2 | 金额 | N15 | M | 原样返回 |
3 | 收款银行代码或名称 | X256 | M | 原样返回 |
4 | 收款账户类型 | X1 | M | 原样返回 |
5 | 账号 | N32 | M | 原样返回 |
6 | 户名 | X32 | M | 原样返回 |
7 | 证件类型 | AN2 | M | 原样返回 |
8 | 证件号码 | X18 | M | 原样返回 |
9 | 省份 | X30 | M | 原样返回 |
10 | 地区/td> | X30 | M | 原样返回 |
11 | 支行名 | X256 | M | 原样返回 |
12 | 用途 | X256 | M | 原样返回 |
13 | 对应结汇明细 | X20000 | O | |
14 | 扩展字段1 | X256 | O | 原样返回 |
15 | 扩展字段2 | X256 | O | 原样返回 |
16 | 处理说明 | X256 | O | 明细处理有误时会给出错误描述,明细处理成功则不会有此列 |
1.3.2示例报文
请求报文以xml方式返回,如:
1.4应答
商户->汇付
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 100060:代发结果通知 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
RESULT | 接收确认 | AN30 | M | 000000 接收成功 |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
1.4.1示例报文
应答报文以xml方式返回,如:
2.代发查询接口
2.1请求
商户->汇付
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
REQUEST | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 汇付给的虚拟终端号 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200030 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
BATCH_NO | 代发批次号 | X32 | M | 申请时提交的批次号 |
REMIT_REQ_ID | 明细流水号 | X32 | M | 申请时提交的明细流水号 |
APPLY_DATE | 原交易日期 | D | M | 格式:yyyyMMdd 例如:20180503 |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
2.1.1示例报文
请求报文以xml方式返回,如:
2.2返回
汇付 –> 商户(同步)
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200030 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
BATCH_NO | 代发批次号 | X32 | M | 申请时提交的批次号 |
REMIT_REQ_ID | 明细流水号 | X32 | M | 申请时提交的明细流水号 |
APPLY_TIME | 交易时间 | D | M | 原交易申请时间,格式: yyyyMMddHHmmss 例如:20180503124565 |
CUR | 币别 | X3 | M | 币别,默认CNY |
AMT | 金额 | N15 | M | 格式为实际金额扩大100倍提交。 如1000,表示10元 |
FEE_AMT | 手续费 | N15 | O | 手续费。格式为实际金额扩大100倍提交。 如10000,表示10元 |
BANK_ID | 银行编码 | X256 | O | 原样返回 |
ACCT_TYPE | 账户类型 | X1 | M | 原样返回 |
BANK_ACCT | 收款账号 | N32 | M | 原样返回 |
PAYEE_NAME | 收款人户名 | AN2 | M | 原样返回 |
PAYEE_ID_TYPE | 收款人证件类型 | AN2 | M | 原样返回 |
PAYEE_ID_NO | 收款人证件号 | X32 | M | 原样返回 |
PROVINCE | 省份 | X30 | M | 原样返回 |
CITY | 地区 | X30 | M | 原样返回 |
BANK_BRANCH | 支行名称 | X256 | M | 原样返回 |
PURPOSE | 用途 | X256 | O | 原样返回 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
STATUS | 状态 | X1 | M | 0.请求参数错误,1.处理中, 2.代发成功,3.代发失败, 4.交易不存在 |
ERRERCODE | 错误码 | X6 | O | 当STATUS为0、3、4时返回 |
ERRERMSG | 错误描述 | X64 | O | 当STATUS为0、3、4时返回 |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
注: STATUS=0,4时,PARAMS节点下除 STATUS、ERR_CODE、ERR_MSG外,均返回空值
2.2.1示例报文
应答报文以xml方式返回,如:
附录:代发系统错误码
110001 必须提交的请求参数 []未提交
110002 请求的数据项格式错误
110006 请求的交易币别[]暂不支持
120010 请求的商户号[]不存在,请检查后重试
120011 请求的商户号[]状态异常,不允许交易
120012 请求的终端号[]不存在,请检查后重试
120013 请求的终端号[]状态异常,不允许交易
120014 产品功能未开通,不允许交易
120030 请求的商户号[]/终端号[]对应的结算信息未开通
120032 请求的商户号[]/终端号[]对应的报价币别[]与交易申请的币别[]不一致
120023 交易请求Ip[]未知,不允许交易
200004 您的IP地址不允许交易
400008 商户账户余额不足
110005 交易明细格式有误,详情参见明细错误描述
999999 系统异常或未知错误
交易规则说明
代发,提现交易规则说明:
transAmt(0,100) 交易成功
transAmt[100,200) 交易失败
银行卡:6257080018600105 姓名:正常名称
应答报文以xml方式返回,如: