本开发文档的阅读对象为:具有一定开发能力,了解PHP、JAVA、.NET等开发语言的开发、维护或管理人员。
本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
版本号 | 更新说明 | 更新日期 |
---|---|---|
V1.0 | 创建 | 2017.07.27 |
-
商户会员号
Chinapnr网关支付时提交的为商户会员号,并非商户号,会员号=商户号+"01"(如商户号为abc时,会员号为abc01)
商户接入结汇业务,调用API须遵循以下规则:
传输方式 | 为保证交易安全性,采用 HTTPS 传输 |
提交方式 | 采用 POST 方法提交 |
数据格式 |
HTTP KEY=VALUE 格式,XML格式 xml格式接口:商户代发,商户余额查询,用户余额查询接口; 请求,响应为xml格式,详细可查看接口文档 其他为KEY=VALUE格式接口,如:用户提现,用户开户,余额支付; 请求,响应为KEY=VALUE格式,详细可查看接口文档 |
字符编码 | 支持 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 | 系统异常或未知错误 |
银行码表+省市代码(省市代码为文件里中文名称)
《银行码表+省市代码》下载《汇付国际联行号清单》下载
《T0对公代发实时响应银行》下载:T0对公下发除上述文件内银行,其他银行T0对公资金到账是实时但不会给予实时响应,系统状态更新会延迟
针对代发提现,提交明细及商户开户时使用。
客户职业/行业代码
客户职业/行业代码下载国家编码
国家编码下载DEMO下载
注意:Demo下载后可直接运行,也可将项目里商户号,终端号,私钥证书(**.pfx)更换成已开通测试商户的。
结汇代发API | 说明 | 平台 | 操作 |
---|---|---|---|
结汇代发API | 结汇代发API对应的DEMO | JAVA | 下载 |
PHP | 下载 | ||
代发交易查询API | 代发交易查询API对应的DEMO | JAVA | 下载 |
个人合规开户API | 个人合规开户API对应的DEMO | JAVA | 下载 |
企业合规开户API | 企业合规开户API对应的DEMO | JAVA | 下载 |
用户批量提现API | 用户批量提现API对应的DEMO | JAVA | 下载 |
1.订单信息的签名不正确
确保私钥证书正确。
确保加签字段和加签顺序正确,可对照Demo对比
2.订单返回信息验签失败
确保公钥证书正确,与所提交环境匹配,可在对应环境商户后台下载。
确保验签字段和验签顺序正确,可对照Demo对比
3.商户提交明细备案请求、代发申请,报商户号不存在或未开通
发起明细备案请求、代发申请时,提交的并非是商户号,而是会员号,会员号=商户号+“01”。
4.TLS1.0 SSL3.0等协议无法正常进行网关交易
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
5.商户同金额、卡号的不同出款申请被疑似重复拦截
为避免商户同金额、卡号的不同出款申请被疑似重复拦截,商户需要在明细记录的扩展字段1里上送不同的值(例如1-1,1-2… 用于区分不同的代发/用户提现申请),商户开发完成后,需联系我司在系统中进行配置,配置完成后即可避免上述出款申请被作为疑似重复的记录。
6.代发提现常遇问题
问题描述 | 问题解答 |
---|---|
交换中心判断安全信息与交易信息的时间差超过24小时(中国银行代发) | 账户状态为已注销 |
对公活期存款合约币种信息@@记录不存在 | 银行没查到上送的账号信息(开户行名称、账号、户名这些都要跟开户许可证上核对下) |
差错处理状态更新 | 贵司同一时间给同一个卡代发同金额的交易,银联风控拦截导致(多笔同金额的会被拦截掉的 银联防止重复打款),烦请贵司注意下,返回该失败原因的贵司可以直接重发 |
交易金额超限 | 2类户,超过账户银行限制当日入账金额 |
持卡人认证失败 | 对私主要客户自身问题;对公烦请联系人工客服 |
账户状态异常 | 持卡人咨询银行了,卡存在问题 |
交易失败,回账成功,账号或卡号不存在 | 请让商户和客户核实下是否上送银行填写错误 |
交易失败,回账成功,收款方开户行行号不能以0,9开头(905除外 | 烦请让商户核实下银行卡号是否填写正确(比如卡号写成了身份证号) |
OpenSSL工具安装
1.Linux用户(以Ubuntu为例)
sudo apt-get install openssl
2.Windows用户开发者可以在OpenSSL官方网站下载Windows的OpenSSL安装包进行安装。或直接下载
3.若不习惯查看文档中心,此为证书生成word文档,可自行下载证书生成文档下载RSA私钥及公钥生成
生成证书days730-780之间
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-----
用户提现接口目录:
用户提现接口
正式环境发送异步通知只支持443或80端口 其他端口暂时不支持。
本文档定义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) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
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) | 不可空 | 请从如下值中选一种填入: 销售结算款 佣金/工资 |
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|收款银行|备注 明细字段值可为空但栏位必须存在。批次支持明细笔数5000笔 |
|
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
提现明细字段说明:各字段以|分隔,各行以半角“;”分隔,批次支持明细笔数5000笔
序号 | 字段 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
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 | 取值: 1:T+0,2:T+1; 1.若终端下配置多个到账时效;且收款账户的类型为C和P,S和G时,必填,需指定到账时效; 2.若终端下配置单个到账时效;非必填,默认获取配置到账时效。 |
6 | 账户 | String(32) | M | 银行账号纯数字。若账户类型为H,则为汇付账户号 |
7 | 户名 | String(32) | M | 户名 |
8 | 证件类型 | String(2) | M | 00–身份证 01–护照 02–军官证 03–士兵证 04–回乡证 05–户口本 06–外国护照 07–其它个人证件类型 61–组织机构代码证 62–营业执照 63–税务登记证 66–统一社会信用代码 69–其它机构证件 |
9 | 证件号码 | String(32) | M | 收款人证件号,如果身份证号包含X,请保持字母为大写 |
10 | 省份 | String(30) | C | 见附录:银行码表+省市代码 收款账户类型为C/G时,省市/联行号2选1; 收款账户类型为P/S/H/M时,省市为空即可。 |
11 | 地区 | String(30) | C | 见附录:银行码表+省市代码 收款账户类型为C/G时,省市/联行号2选1; 收款账户类型为P/S/H/M时,省市为空即可。 此处为地级市或省辖县,若客户的提供的是县或县级市,请按其所属的地级市填写。 |
12 | 支行名 | String(256) | C | 支行全称,如:招行银行南京分行城东支行 |
13 | 提现用途 | String(256) | M | 请从如下值中选一种填入: 销售结算款 佣金/工资 |
14 | 业务参考号 | String(256) | O | 备用 |
15 | 扩展字段1 | String(256) | O | 为避免商户同金额、卡号的不同出款申请被疑似重复拦截,不同的提现申请,建议传入全局唯一值 |
16 | 扩展字段2 | String(256) | O | 备用 |
17 | 出款用户号 | String(8) | M | 开户成功,返回的userId |
18 | 收款行联行号 | String(20) | C | 对公时,省市支行名称和收款行联行号二选一 对公/对私存折账户时,收款行联行号必填 见附录:汇付国际联行号清单 测试数据:105554508399 |
19 | 备注 | String(100) | O | 该字段会通过银网联送给收款银行,但收款人能否看到该字段的内容,还要看收款行的处理逻辑。 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
batchNo={batchNo}&ignoreFlag={ignoreFlag}&merchantAcctId={merchantAcctId}& noticeUrl={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转码。 注:若通过sdk接入,则无需自己处理,代码已封装 |
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) | 当失败时返回失败原因描述 |
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
batchNo={batchNo}&errorCode={errorCode}&errorMsg={errorMsg}&ignoreFlag={ignoreFlag}&merchantAcctId={merchantAcctId}& noticeUrl={noticeUrl}&payCur={payCur}&payTAmt={payTAmt}&payTCnt={payTCnt}&requestId={requestId}&requestTime={requestTime}&signType={signType}&status={status}&terminalId={terminalId}&version={version}
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}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
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) | 返回具体失败原因描述 |
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
batchNo={batchNo}&merchantAcctId={merchantAcctId}& noticeUrl={noticeUrl}&payCur={payCur}&payTAmt={payTAmt}&payTCnt={payTCnt}&requestTime={requestTime}&signType={signType}&terminalId={terminalId}&version={version}&
2.8.2应答
商户端接收到通知结果并处理完毕后需明确返回字符串:<result>000000</result>表示接收并处理成功。如果我司没有成功收到<result>000000</result>,系统会按照一定策略通知6次或收到<result>000000</result>后结束停止,以先到者为准。
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}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
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) | 返回具体失败原因描述 |
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
batchNo={batchNo}&merchantAcctId={merchantAcctId}& noticeUrl={noticeUrl}&payCur={payCur}&payTAmt={payTAmt}&payTCnt={payTCnt}&requestTime={requestTime}&signType={signType}&terminalId={terminalId}&version={version}
2.9.2应答
商户端接收到通知结果并处理完毕后需明确返回字符串:<result>000000</result>表示接收并处理成功。如果我司没有成功收到<result>000000</result>,系统会按照一定策略通知6次或收到<result>000000</result>后结束停止,以先到者为准。
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) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
terminalId | 终端号 | String(32) | 不可空 | 由我司提供,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
batchNo | 提现批次号 | String(32) | 不可空 | 商户系统中唯一标识该笔批次 |
remitNo | 提现明细流水号 | String(32) | 不可空 | 关联明细字段的唯一流水号 |
applyDate | 原批次申请日期 | String(8) | 不可空 | 为批次申请提交的日期 格式:yyyyMMdd例如:20180920 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
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转码。 注:若通过sdk接入,则无需自己处理,代码已封装 |
注: STATUS=0,4时,除商户请求提交的字段和 STATUS、ERR_CODE、ERR_MSG外,均返回空值
- 按以下字段字母顺序进行验签
- 仅对非空字段进行验签
acctType={acctType}&amt={amt}&applyTime={applyTime}&bankAcct={bankAcct}&bankBranch={bankBranch}&bankId={bankId}&batchNo={batchNo}&city={city}&cnapsNo={cnapsNo}&errorCode={errorCode}&errorMsg={errorMsg}&feeAmt={feeAmt}&merchantAcctId={merchantAcctId}&payeeIdNo={payeeIdNo}&payeeIdType={payeeIdType}&payeeName={payeeName}&province={province}&refNo={refNo}&remitNo={remitNo}&requestId={requestId}&requestTime={requestTime}&signType={signType}&status={status}&terminalId={terminalId}&userId={userId}&version={version}
交易规则说明
代发,提现交易规则说明:transAmt(0,10000) 交易成功
transAmt[10000,50000) 交易失败
银行卡: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 |
开户测试账号:
姓名:张三 ;身份证号:411081199004235955;卡号:4682037906128888;手机号:15015160170
1.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 商户自动生成,请求流水号系统唯一,如:GRKH202112120930001 |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
platformUserId | 用户平台ID | String(32) | 不可空 | 用户在商户系统中的唯一编号 |
platformRegTime | 平台用户注册时间 | String(16) | 不可空 | yyyyMMddHHmmss |
contractEmailId | 签约邮箱 | String(40) | 不可空 | 用于第三方签约注册。此邮箱建议由商户随机生成,需在商户系统中唯一,格式可以为:{商户英文简称}+{唯一标识}@{商户英文简称}.com 当前不支持包含下划线'_'的邮箱,支持以"字母大小写","数字","-","."生成符合格式的电子邮箱 |
name | 姓名 | String(32) | 不可空 | - |
certType | 证件类型 | String(2) | 不可空 | 00-身份证(目前仅支持00) |
certId | 证件号码 | String(64) | 不可空 | 如果身份证号包含X,请保持字母为大写 |
certExpDateStart | 证件有效期起始 | String(8) | 可空 | yyyyMMdd。 |
certExpDateEnd | 证件有效期结束 | String(8) | 不可空 | yyyyMMdd。如无则填写20990101 |
mobileNumber | 手机号 | String(11) | 不可空 | - |
address | 地址 | String(128) | 不可空 | - |
电子邮箱 | String(40) | 不可空 | 此邮箱号将用于接收合同文件,需保证正确性、真实性 | |
bankCode | 开户银行 | String(20) | 不可空 | 银行代码:银行代码 |
acctType | 账户类型 | String(1) | 不可空 | 2-对私 |
bankAcct | 账号 | String(20) | 不可空 | - |
acctName | 户名 | String(50) | 不可空 | 对公时须与企业名称一致; 对私时须与姓名一致 |
province | 省份 | String(8) | 条件必输 | 省份编码:省市编码 |
area | 地区 | String(45) | 条件必输 | 地区编码:省市编码 |
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) | 可空 | 备用 |
occupationCode | 职业 | String(10) | 不可空 | 请查看附录职业编码 |
nationalCode | 国籍 | String(10) | 不可空 | 请查看附录国家编码 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- - 仅对非空字段进行加签
acctName={acctName}&acctType={acctType}&address={address}&area={area}&bankAcct={bankAcct}&bankBranch={bankBranch}&bankCode={bankCode}&certId={certId}&certType={certType}&contractEmailId={contractEmailId}&email={email}&merchantAcctId={merchantAcctId}&mobileNumber={mobileNumber}&name={name}&nationalCode={nationalCode}& noticeUrl={noticeUrl}&occupationCode={occupationCode}&platformRegTime={platformRegTime}&platformUserId={platformUserId}&province={province}&requestId={requestId}&requestTime={requestTime}&signType={signType}&uniteBankCode={uniteBankCode}&version={version}
1.2 应答
同步/异步返回参数说明:
商户在接受到Chinapnr异步通知后,应返回成功接受内容,如"SUCCESS"。
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
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) | 验签串 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
errorCode={errorCode}&errorMsg={errorMsg}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&userId={userId}&version={version}
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&userId={userId}&version={version}
3 个人用户开户结果查询
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/individualQry.htm |
正式环境 | https://global.chinapnr.com/mcs/individualQry.htm |
3.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 商户自动生成,请求流水号系统唯一,如:GRKH202112120930001 |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
platformUserId | 用户平台ID | String(32) | 不可空 | 用户在商户系统中的唯一编号 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
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}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
errorCode={errorCode}&errorMsg={errorMsg}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&version={version}
错误代码
code(错误代码) | msg(错误描述) |
---|---|
110001 | 必须提交的请求参数 []未提交 |
110002 | 请求的数据项[]长度最大允许[],实际[] |
110003 | 请求的数据项[]格式错误,合法格式请参照接入文档 |
110005 | 请求的数据项[]不合法 |
110006 | 请求的交易币别[]暂不支持 |
113001 | 营业执照OCR识别不通过,缺失字段: |
113002 | 营业执照OCR识别不通过,[] |
113003 | [法人/联系人]身份证OCR识别不通过,缺失字段: |
113004 | [法人/联系人]身份证OCR识别不通过,[] |
113005 | 营业执照与提交的信息不符[] |
113006 | 企业身份验证不通过 |
113007 | 法人身份证与提交的信息不符[] |
113008 | 联系人身份证与提交的信息不符[] |
113009 | 工商网该企业状态异常:[] |
113010 | 营业执照与工商网信息不符[] |
113011 | 联系人证件有效期起与提交的信息不符[] |
120001 | 用户不存在 |
120002 | 非法操作 |
120003 | 开户失败 |
120004 | 身份信息或卡信息有误 |
120010 | 请求的商户号[]不存在,请检查后重试 |
120011 | 请求的商户号[]状态异常,不允许交易 |
120092 | 请求的机构[]不存在 |
120093 | 请求机构状态异常,不允许操作 |
120094 | 非法请求,商户不属于机构 |
120095 | [证件]到期日须在[{1}]天后 |
130001 | 报备失败 |
140001 | 第三方签约失败 |
140002 | 当前商户合同有效期未配置或必须大于当天日期,请联系管理员 |
140003 | 第三方签约失败,调用接口网络请求超时 |
150007 | 受益人身份鉴权失败 |
150008 | 受益人身份信息{0}不能为空 |
150009 | 受益人身份信息不能为空 |
150010 | 受益人身份信息格式错误 |
20001 | 订单信息的签名内容不正确 |
999999 | 系统异常或未知错误 |
用户开户
正式环境发送异步通知只支持443或80端口 其他端口暂时不支持
本文档定义CHINAPNR结汇入境业务开户接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
1 企业用户开户
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/enterpriseRegV2.htm |
正式环境 | https://global.chinapnr.com/mcs/enterpriseRegV2.htm |
开户测试账号:
企业名称 :上海某某电子商务有限公司
营业执照号 :91310120MA009K0000
法人姓名 :张三
法人身份证号:320125198805233308
1.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 商户自动生成,请求流水号系统唯一,如:GRKH202112120930001 |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
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-身份证 01-护照 02-军官证 03-士兵证 04-回乡证 06-警官证 08-台胞证 13-其他 如果证件类型不为身份证,则提交后会进入人工审核流程。 |
legalCertId | 法人证件号 | SString(32) | 不可空 | legalCertType=00时,证件号为固定18位身份证号码,如果身份证号包含X,请保持字母为大写 |
legalCertExpDateStart | 法人证件生效日期 | String(8) | 可空 | 格式yyyyMMdd。 |
legalCertExpDateEnd | 法人证件时效日期 | String(8) | 不可空 | 格式yyyyMMdd。如无则填写20990101 |
legalMobile | 法人手机号 | String(11) | 可空 | - |
contactName | 联系人姓名 | String(32) | 不可空 | 可与法人信息一致 联系人姓名,证件类型,证件号起止日期需匹配 |
contactCertType | 联系人证件类型 | String(2) | 可空 | 00-身份证 01-护照 02-军官证 03-士兵证 04-回乡证 06-警官证 08-台胞证 13-其他 |
contactCertId | 联系人证件号 | String(32) | 可空 | 可与法人信息一致 联系人姓名,证件类型,证件号起止日期需匹配,如果身份证号包含X,请保持字母为大写 |
contactCertExpDateStart | 联系人证件生效日期 | String(8) | 可空 | 格式yyyyMMdd。 |
contactCertExpDateEnd | 联系人证件失效日期 | String(8) | 条件必填 | 格式:yyyyMMdd 若证件上无有效期,则填写20990101;若上送联系人证件号,则失效期必填 |
contactMobile | 联系人手机号 | String(11) | 不可空 | - |
contactEmail | 联系人邮箱 | String(40) | 不可空 | - |
address | 企业地址 | String(128) | 不可空 | - |
phone | 企业电话 | String(15) | 不可空 | 纯数字,不可存在特殊字符,如有,请去除后再上送,例:+ - |
bizLicenseCode | 营业执照号 | String(45) | 不可空 | 工商登记号或统一社会信用代码。开户后不可变更。 |
bizLicenseExpDateStart | 营业执照生效日期 | String(8) | 可空 | 日期格式:yyyyMMdd |
bizLicenseExpDateEnd | 营业执照失效日期 | String(8) | 不可空 | 日期格式:yyyyMMdd。若证件上无有效期,则填写20990101 |
bankCode | 开户银行 | String(20) | 不可空 | 银行编码:银行代码 |
acctType | 账户类型 | String(1) | 不可空 | 1-对公 2-对私 |
bankAcct | 账号 | String(20) | 不可空 | - |
acctName | 户名 | String(50) | 不可空 | 对公时须与企业名称一致; 对私时须与法人姓名一致 |
province | 省份 | String(8) | 条件必输 | 省份编码:省市编码 |
area | 地区 | String(45) | 条件必输 | 省份编码:省市编码 |
bankBranch | 支行名称 | String(50) | 条件必输 | - |
uniteBankCode | 收款行联行号 | String(20) | 条件必输 | 对公时,省+地区+支行名称,或者收款联行号至少一组不为空。 见附录:汇付国际联行号清单 |
legalCertPhotoCopyF | 法人证件的影印件正面(人像面) | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
legalCertPhotoCopyB | 法人证件的影印件反面(国徽面) | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
contactCertPhotoCopyF | 联系人证件的影印件正面(人像面) | - | 可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
contactCertPhotoCopyB | 联系人证件的影印件反面(国徽面) | - | 可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
bizLicensePhotoCopy | 营业执照影印件 | - | 不可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
orgPhotoCopy | 补充材料1 | - | 可空 | 如果企业有处罚记录,请在补充材料栏上传对应的结案材料并在补充说明栏填写对应的说明。不同情况可提交的材料如下: 1)法院司法执行信息——已结案文书 2)市场监督管理或者食药监督处罚——罚款缴纳单 3)环保处罚——罚款缴纳单 4)税务处罚——罚款缴纳单 5)其他-对应结案或证明材料 |
taxRegPhotoCopy | 补充材料2 | - | 可空 | 如果企业有处罚记录,请在补充材料栏上传对应的结案材料并在补充说明栏填写对应的说明。不同情况可提交的材料如下: 1)法院司法执行信息——已结案文书 2)市场监督管理或者食药监督处罚——罚款缴纳单 3)环保处罚——罚款缴纳单 4)税务处罚——罚款缴纳单 5)其他-对应结案或证明材料 |
openLicensePhotoCopy | 补充材料3 | - | 可空 | 如果企业有处罚记录,请在补充材料栏上传对应的结案材料并在补充说明栏填写对应的说明。不同情况可提交的材料如下: 1)法院司法执行信息——已结案文书 2)市场监督管理或者食药监督处罚——罚款缴纳单 3)环保处罚——罚款缴纳单 4)税务处罚——罚款缴纳单 5)其他-对应结案或证明材料 |
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"}],"beneficiary": [{"name": "受益人姓名","address": "受益人地址","idType": "受益人证件类型","idNo": "受益人证件号码","idExpDate": "受益人证件有效期","shareRatio": "受益人股份占比"}, {"name": "王二锤","address": "北京朝阳区","idType": "00","idNo": "333333333333333332","idExpDate": "20250101","shareRatio": "25.5"}]}其中,storeId为“平台名称_店铺ID”,storelink为店铺链接。注:如果没有店铺ID可以提供例如用户在电商平台的sellerid或者在平台的账号等唯一识别标记作为替代;如果没有店铺链接,值可填N/A。 |
ext2 | 扩展字段2 | String(512) | 可空 | 备用 |
industryCode | 行业 | String(10) | 不可空 | 请查看附录行业编码 |
nationalCode | 企业所在国家地区 | String(10) | 不可空 | 请查看附录国家编码 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 仅对非空字段进行加签
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}&industryCode={industryCode}&legalCertId={legalCertId}&legalCertType={legalCertType}&legalMobile={legalMobile}&legalPerson={legalPerson}&merchantAcctId={merchantAcctId}&name={name}&nationalCode={nationalCode}&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}
1.2 应答
同步/异步返回参数说明:
商户在接受到Chinapnr异步通知后,应返回成功接受内容,如"SUCCESS"。
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
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) | 验签串 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
errorCode={errorCode}&errorMsg={errorMsg}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&userId={userId}&version={version}
2 企业用户开户结果查询
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/enterpriseQry.htm |
正式环境 | https://global.chinapnr.com/mcs/enterpriseQry.htm |
2.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 商户自动生成,请求流水号系统唯一,如:GRKH202112120930001 |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
platformUserId | 用户平台ID | String(32) | 不可空 | 用户在商户系统中的唯一编号 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&signType={signType}&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 | 状态 | String(2) | 01-审核中 02-失败 00-成功 |
errorCode | 错误码 | String(8) | 错误码;失败时返回的错误代码,可以为空。 |
errorMsg | 错误描述 | String(256) | 错误描述;失败时返回的错误信息,可以为空。 |
signMsg | 签名信息 | String(2048) | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
errorCode={errorCode}&errorMsg={errorMsg}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&version={version}
错误代码
code(错误代码) | msg(错误描述) |
---|---|
110001 | 必须提交的请求参数 []未提交 |
110002 | 请求的数据项[]长度最大允许[],实际[] |
110003 | 请求的数据项[]格式错误,合法格式请参照接入文档 |
110005 | 请求的数据项[]不合法 |
110006 | 请求的交易币别[]暂不支持 |
113001 | 营业执照OCR识别不通过,缺失字段: |
113002 | 营业执照OCR识别不通过,[] |
113003 | [法人/联系人]身份证OCR识别不通过,缺失字段: |
113004 | [法人/联系人]身份证OCR识别不通过,[] |
113005 | 营业执照与提交的信息不符[] |
113006 | 企业身份验证不通过 |
113007 | 法人身份证与提交的信息不符[] |
113008 | 联系人身份证与提交的信息不符[] |
113009 | 工商网该企业状态异常:[] |
113010 | 营业执照与工商网信息不符[] |
113011 | 联系人证件有效期起与提交的信息不符[] |
120001 | 用户不存在 |
120002 | 非法操作 |
120003 | 开户失败 |
120004 | 身份信息或卡信息有误 |
120010 | 请求的商户号[]不存在,请检查后重试 |
120011 | 请求的商户号[]状态异常,不允许交易 |
120092 | 请求的机构[]不存在 |
120093 | 请求机构状态异常,不允许操作 |
120094 | 非法请求,商户不属于机构 |
120095 | [证件]到期日须在[{1}]天后 |
130001 | 报备失败 |
140001 | 第三方签约失败 |
140002 | 当前商户合同有效期未配置或必须大于当天日期,请联系管理员 |
140003 | 第三方签约失败,调用接口网络请求超时 |
150007 | 受益人身份鉴权失败 |
150008 | 受益人身份信息{0}不能为空 |
150009 | 受益人身份信息不能为空 |
150010 | 受益人身份信息格式错误 |
20001 | 订单信息的签名内容不正确 |
999999 | 系统异常或未知错误 |
用户开户修改
正式环境发送异步通知只支持443或80端口 其他端口暂时不支持
本文档定义CHINAPNR结汇入境业务开户接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
1 个人用户修改
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/individualUpd.htm |
正式环境 | https://global.chinapnr.com/mcs/individualUpd.htm |
1.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 商户自动生成,请求流水号系统唯一,如:GRKH202112120930001 |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
userId | 用户号 | String(8) | 不可空 | 开户成功返回的用户号 |
platformUserId | 用户平台ID | String(32) | 可空 | 用户在商户系统中的唯一编号 |
platformRegTime | 平台用户注册时间 | String(16) | 可空 | yyyyMMddHHmmss |
certExpDateStart | 证件有效期起始 | String(8) | 可空 | yyyyMMdd。 |
certExpDateEnd | 证件有效期结束 | String(8) | 可空 | yyyyMMdd。如无则填写20990101 |
mobileNumber | 手机号 | String(11) | 可空 | - |
address | 地址 | String(128) | 可空 | - |
电子邮箱 | String(40) | 可空 | ||
bankCode | 开户银行 | String(20) | 可空 | 附件代发银行编码 |
acctType | 账户类型 | String(1) | 可空 | 2-对私 |
bankAcct | 账号 | String(20) | 可空 | - |
acctName | 户名 | String(50) | 可空 | 用户同名 |
province | 省份 | String(8) | 可空 | 附录省份编码 |
area | 地区 | String(45) | 可空 | 附录地区编码 |
bankBranch | 支行名称 | String(50) | 可空 | - |
uniteBankCode | 联行号 | String(20) | 可空 | 见附录:汇付国际联行号清单 |
certPhotoCopyF | 证件影印件正面 | - | 可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
certPhotoCopyB | 证件影印件反面 | - | 可空 | 文件字节Base64建议压缩,一个请求中,影印件图片总大小不得超过10M |
asyncNoticeFlag | 是否接收异步通知 | String(1) | 不可空 | 1:有异步;0:无异步。为0时,只会有同步应答 |
noticeUrl | 后台通知地址 | String(256) | 条件必输 | 互联网可访问。用于接收异步结果。asyncNoticeFlag为1时必填。 |
ext1 | 扩展字段1 | String(2000) | 可空 | |
ext2 | 扩展字段2 | String(512) | 可空 | |
occupationCode | 职业 | String(10) | 不可空 | 请查看附录职业编码 |
nationalCode | 国籍 | String(10) | 不可空 | 请查看附录国家编码 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- - 仅对非空字段进行加签
acctName={acctName}&acctType={acctType}&address={address}&area={area}&bankAcct={bankAcct}&bankBranch={bankBranch}&bankCode={bankCode}&certId={certId}&certType={certType}&email={email}&merchantAcctId={merchantAcctId}&mobileNumber={mobileNumber}&name={name}&nationalCode={nationalCode}& noticeUrl={noticeUrl}&occupationCode={occupationCode}&platformRegTime={platformRegTime}&platformUserId={platformUserId}&province={province}&requestId={requestId}&requestTime={requestTime}&signType={signType}&uniteBankCode={uniteBankCode}&userId={userId}&version={version}
1.2 应答
同步/异步返回参数说明:
商户在接受到Chinapnr异步通知后,应返回成功接受内容,如"SUCCESS"。
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
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) | 验签串 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
errorCode={errorCode}&errorMsg={errorMsg}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&userId={userId}&version={version}
用户修改
正式环境发送异步通知只支持443或80端口 其他端口暂时不支持
本文档定义CHINAPNR结汇入境业务开户接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2
2 企业用户修改
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/mcs/enterpriseUpd.htm |
正式环境 | https://global.chinapnr.com/mcs/enterpriseUpd.htm |
2.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
version | 网关版本 | String(10) | 不可空 | 固定值:1 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 商户自动生成,请求流水号系统唯一,如:GRKH202112120930001 |
requestTime | 请求时间 | String(16) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户号 | String(32) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
userId | 用户号 | String(32) | 不可空 | |
platformUserId | 用户平台ID | String(32) | 可空 | 用户在商户系统中的唯一编号 |
platformRegTime | 平台用户注册时间 | String(16) | 可空 | yyyyMMddHHmmss |
name | 企业名称 | String(64)) | 可空 | - |
shortName | 企业简称 | String(20) | 可空 | - |
type | 企业类型 | String(2) | 可空 | 1-个体工商户 2-企业 |
legalPerson | 法人姓名 | String(32) | 可空 | - |
legalCertType | 法人证件类型 | String(2) | 可空 | 00-身份证 01-护照 02-军官证 03-士兵证 04-回乡证 06-警官证 08-台胞证 13-其他 |
legalCertId | 法人证件号 | SString(32) | 可空 | legalCertType=00时,证件号为固定18位身份证号码,如果身份证号包含X,请保持字母为大写 |
legalCertExpDateStart | 法人证件生效日期 | String(8) | 可空 | 格式yyyyMMdd。 |
legalCertExpDateEnd | 法人证件时效日期 | String(8) | 可空 | 格式yyyyMMdd。如无则填写20990101 |
legalMobile | 法人手机号 | String(11) | 可空 | - |
contactName | 联系人姓名 | String(32) | 可空 | - |
contactCertType | 联系人证件类型 | String(2) | 可空 | |
contactCertId | 联系人证件号 | String(32) | 可空 | 如果身份证号包含X,请保持字母为大写 |
contactCertExpDateStart | 联系人证件生效日期 | String(8) | 可空 | 格式yyyyMMdd。 |
contactCertExpDateEnd | 联系人证件失效日期 | String(8) | 可空 | 格式:yyyyMMdd 若证件上无有效期,则填写20990101 |
contactMobile | 联系人手机号 | String(11) | 可空 | - |
contactEmail | 联系人邮箱 | String(40) | 可空 | - |
address | 企业地址 | String(128) | 可空 | - |
phone | 企业电话 | String(15) | 可空 | - |
bizLicenseCode | 营业执照号 | String(45) | 可空 | 工商登记号或统一社会信用代码。开户后不可变更。 |
bizLicenseExpDateStart | 营业执照生效日期 | String(8) | 可空 | 日期格式:yyyyMMdd |
bizLicenseExpDateEnd | 营业执照失效日期 | String(8) | 可空 | 日期格式:yyyyMMdd。若证件上无有效期,则填写20990101 |
bankCode | 开户银行 | String(20) | 可空 | 附件代发银行编码 |
acctType | 账户类型 | String(1) | 可空 | 1-对公 2-对私 |
bankAcct | 账号 | String(20) | 可空 | - |
acctName | 户名 | String(50) | 可空 | 对公时须与企业名称一致; 对私时须与法人姓名一致 |
province | 省份 | String(8) | 可空 | 附录省份编码 |
area | 地区 | String(45) | 可空 | 附录地区编码 |
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) | 条件必输 | 互联网可访问。asyncNoticeFlag为1,必填 |
ext1 | 扩展字段1 | String(2000) | 可空 | |
ext2 | 扩展字段2 | String(512) | 可空 | |
industryCode | 行业 | String(10) | 不可空 | 请查看附录行业编码 |
nationalCode | 企业所在国家地区 | String(10) | 不可空 | 请查看附录国家编码 |
signMsg | 签名信息 | String(2048) | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 仅对非空字段进行加签
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}&industryCode={industryCode}&legalCertId={legalCertId}&legalCertType={legalCertType}&legalMobile={legalMobile}&legalPerson={legalPerson}&merchantAcctId={merchantAcctId}&name={name}&nationalCode={nationalCode}&orgCode={orgCode}&phone={phone}&platformRegTime={platformRegTime}&platformUserId={platformUserId}&province={province}&requestId={requestId}&requestTime={requestTime}&shortName={shortName}&signType={signType}&taxRegCode={taxRegCode}&type={type}&uniteBankCode={uniteBankCode}&userId={userId}&version={version}
2.2 应答
同步/异步返回参数说明:
商户在接受到Chinapnr异步通知后,应返回成功接受内容,如"SUCCESS"。
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
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) | 验签串 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下字段字母顺序进行加签
- 仅对非空字段进行加签
errorCode={errorCode}&errorMsg={errorMsg}&merchantAcctId={merchantAcctId}&platformUserId={platformUserId}&requestId={requestId}&requestTime={requestTime}&result={result}&signType={signType}&userId={userId}&version={version}
商户结汇接口
本文档定义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方式返回,如:
2.交易明细备案
2.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 | 需外网可访问的地址 |
RESULT_URL | 结汇结果通知地址 | X256 | M | 需外网可访问的地址 |
DETAILS | 交易明细 | - | M | 见如下2.1.1说明 |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
2.1.1 交易明细格式说明
各字段以|分隔,各行以回车换行符分隔
序号 | 字段名 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 明细流水号 | AN32 | M | 同一商户号下唯一 |
2 | 订单编号 | AN32 | M | 订单在电商/电商平台的订单号,如amazon的订单号 |
3 | 业务日期 | D | M | 格式:yyyyMMddHHmmss 例如:20161117020101 |
4 | 收款方类型 | X1 | M | 默认P – 个人 C-对公 |
5 | 收款人证件类别 | X2 | M | 默认00 00-身份证 01–护照 02–军官证 03–士兵证 04–回乡证 05–户口本 06–外国护照 07–其它个人证件类型 61–组织机构代码证 62–营业执照 63–税务登记证 66–统一社会信用代码 69–其它机构证件 |
6 | 收款人证件号 | X64 | M | 321281119300000000 |
7 | 收款人名称 | X128 | M | 张三 |
8 | 收款人帐号 | X32 | M | 6217000000000000000 |
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":"商品大类编号"} 字段解释: 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:商品大类编号 特别注意:商品信息容易出现set、print、get、post、files、globals、_construct字符,如有请特殊处理,如改成pri-nt,阿里云安全策略会对报文中完整print等一些特殊字符进行拦截 |
13 | 备注 | X256 | O |
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 | 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:处理失败 |
ERR_CODE | 错误码 | X6 | O | |
ERR_MSG | 错误描述 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
2.2.1示例报文
应答报文以xml方式返回,如:
2.3 明细备案审核结果通知
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
NOTIFY | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN15 | M | 会员账号,由我司提供的商户号+01,共13位数字 |
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 | 如果审核成功,则不返回该字段。 如果有交易明细审核拒绝则返回所有记录并给出错误说明。 格式参照审核结果通知的交易明细格式说明 |
STATUS | 处理结果 | N1 | M | 1:审核成功 2:审核拒绝 |
ERRERCODE | 错误码 | X6 | O | |
ERRERMSG | 错误描述 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
2.3.1交易明细格式说明
各字段以|分隔,各行以回车换行符分隔
序号 | 字段名 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 明细流水号 | AN32 | M | 原样返回 |
2 | 订单编号 | AN32 | M | 原样返回 |
3 | 业务日期 | D | M | 原样返回 |
4 | 收款方类型 | X1 | M | 原样返回 |
5 | 收款人证件类别 | X2 | M | 原样返回 |
6 | 收款人证件号 | X64 | M | 原样返回 |
7 | 收款人名称 | X128 | M | 原样返回 |
8 | 收款人帐号 | X32 | M | 原样返回 |
9 | 收款银行代码或名称 | X32 | M | 原样返回 |
10 | 付款币种 | X3 | M | 原样返回 |
11 | 付款金额 | N17 | M | 原样返回 |
12 | 商品描述 | X256 | M | 原样返回 |
13 | 备注 | X256 | O | 原样返回 |
14 | 处理说明 | X256 | O | 明细处理有误时会给出错误描述,明细处理成功则不会有此列 |
2.3.2示例报文
通知报文以xml方式返回,如:
2.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 | 结束标签 | - | - | - |
2.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 | 支付明细 | - | 不可空 | 见明细字段说明,批次支持明细笔数2000笔,例:1624938759507|1624938759507|163|M|10012159865|H|20000003|测试|ext1|ext2 |
dupChkFlag | 重复拦截校验标志 | 1 | 可空 | 重复拦截标志,默认值为1校验 0-不校验 1- 校验 校验规则: 批次明细按以下格式拼接,当日存在完全相同的交易则拦截不允许交易 付款人类型+付款人账号+收款人类型+收款人账号+币别+金额 |
signMsg | 签名信息 | - | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
1.支付明细字段说明:各字段以|分隔,各行以半角“;”分隔,批次支持明细笔数2000笔
序号 | 字段 | 长度 | 是否必输 | 说明 |
---|---|---|---|---|
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}& noticeUrl={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}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
序号 | 字段 | 长度 | 是否必输 | 说明 |
---|---|---|---|---|
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}& noticeUrl={noticeUrl}&details={details}&status={status}
2.2 应答
商户端接收到通知结果并处理完毕后需明确返回字符串:<result>000000</result>表示接收并处理成功。如果我司没有成功收到<result>000000</result>,系统会按照一定策略通知6次或收到<result>000000</result>后结束停止,以先到者为准。
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) | 不可空 | 会员账号,由我司提供的商户号+01,共13位数字 |
terminalId | 终端号 | String(32) | 不可空 | 由我司提供,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
origbatchNo | 原付款批次号 | String(32) | 不可空 | 商户系统中唯一标识该笔批次 |
origtransNo | 原付款明细流水号 | String(32) | 不可空 | 关联明细字段的唯一流水号 |
origApplyDate | 原批次申请日期 | String(8) | 不可空 | 为批次申请提交的日期 格式:yyyyMMdd例如:20180920 |
signMsg | 签名信息 | - | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 按以下固定字段顺序进行加签
- 仅对非空字段进行加签
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外,均返回空值
商户代发接口目录:
商户代发接口
正式环境发送异步通知只支持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 | 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倍提交。 如10000,表示100元 |
PURPOSE | 用途 | X256 | M | 请从如下值中选一种填入: 1.销售结算款 2.佣金/工资 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
RESULT_URL | 结果通知地址 | X256 | M | 需外网可访问的地址 |
REVIEW_URL | 校验结果通知地址 | X256 | M | 已废弃,可与RESULT_URL填写一致 |
DETAILS | 交易明细 | - | M | 见如下1.1.1说明,批次支持最大明细5000笔 |
ENDPARAMS | 结束标签 | - | - | - |
ENDNOTIFY | 结束标签 | - | - | - |
1.1.1 代发明细格式说明
各字段以|分隔,各行以回车换行符分隔,当前批次支持最大明细5000笔
序号 | 字段名 | 格式 | 是否必输 | 说明 |
---|---|---|---|---|
1 | 代发明细流水号 | X32 | M | 同一商户号下唯一,代发失败需重新生成明细流水 |
2 | 金额 | N15 | M | 格式为实际金额扩大100倍提交。 如1000,表示10元 |
3 | 收款银行代码或名称 | X256 | C | 详见附录:银行码表+省市代码 收款账户类型为H/M时,为空即可; 收款账户类型不为H/M时,请根据银行码表填写完整准确的银行名称。 |
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–税务登记证 66–统一社会信用代码 69–其它机构证件 |
8 | 证件号码 | X32 | M | 如果身份证号包含X,请保持字母为大写 |
9 | 省份 | X30 | C | 见附录:银行码表+省市代码 收款账户类型为C/G时,省市/联行号2选1; 收款账户类型为P/S/H/M时,省市为空即可。 |
10 | 地区 | X30 | C | 见附录:银行码表+省市代码 收款账户类型为C/G时,省市/联行号2选1; 收款账户类型为P/S/H/M时,省市为空即可。 此处为地级市或省辖县,若客户的提供的是县或县级市,请按其所属的地级市填写。 |
11 | 支行名 | X256 | O | 支行全称。 如:招行银行南京分行城东支行 |
12 | 用途 | X256 | M |
请从如下值中选一种填入: 销售结算款 佣金/工资 |
13 | 对应结汇明细 | X20000 | O | 对应交易明细备案接口中的“结汇申请批次号”或“明细流水号”,多个用逗号“,”分隔 |
14 | 扩展字段1 | X256 | O | 为避免商户同金额、卡号的不同出款申请被疑似重复拦截,不同的提现申请,建议传入全局唯一值 |
15 | 扩展字段2 | X256 | O | |
16 | 联行号 | X12 | C | 12位纯数字,收款账户类型为C/G时,省市/联行号2选1; 见附录:汇付国际联行号清单 测试数据:105554508399 |
17 | 备注 | X100 | O | 该字段会通过银网联送给收款银行,但收款人能否看到该字段的内容,还要看收款行的处理逻辑。 |
18 | 到账时效 | X1 | C | 取值: 1:T+0,2:T+1; 1.若终端下配置多个到账时效;且收款账户的类型为C和P,S和G时,必填,需指定到账时效; 2.若终端下配置单个到账时效;非必填,默认获取配置到账时效。 |
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 | 地区 | 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方式返回(只返回错误的明细信息,存在错误明细时,状态为2),如:
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 系统异常或未知错误
测试环境mock交易规则
代发,提现交易规则说明:
transAmt(0,10000) 交易成功
transAmt[10000,50000) 交易失败
银行卡:6257080018600105 姓名:张三
应答报文以xml方式返回,如:
商户余额查询接口
本文档定义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 | 商户号 | AN13 | M | 会员账号,由我司提供的商户号+01,共13位数字 |
TERMINALID | 虚拟终端号 | AN8 | M | 汇付给的虚拟终端号,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200010:余额查询 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
ACCT_TYPE | 账户类型 | X3 | M | 001:2010001001 主账户 004:2280001004 待结算账户 010:2010001010 头寸额度账户 011:1290001011 头寸占用账户 040:2280001040 待分账账户 042:2280001042 直连待结算账户 |
ACCT_CUR | 账户币种 | X3 | M | 默认值:CNY ,人民币 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDREQUEST | 结束标签 | - | - | - |
1.2应答
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN13 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200010:余额查询 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
ACCT_TYPE | 账户类型 | X3 | M | 原样返回 |
ACCT_CUR | 账户币种 | X3 | M | 原样返回 |
BALANCE | 余额 | N15 | M | 格式为实际金额扩大100倍。如1000,表示10元 |
BALANCE_TIME | 余额时间 | D | M | 格式:yyyyMMddHHmmss |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
STATUS | 处理结果 | X1 | M | 1:成功 2:失败 |
ERRORCODE | 错误码 | X6 | O | - |
ERRORMSG | 错误描述 | X256 | O | - |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
用户余额查询接口
本文档定义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 | 商户号 | AN13 | M | 会员账号,由我司提供的商户号+01,共13位数字 |
TERMINALID | 虚拟终端号 | AN8 | M | 汇付给的虚拟终端号,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200011:用户余额查询 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
ACCT_TYPE | 账户类型 | X3 | M | 001:2010001001 主账户 |
ACCT_NO | 用户账户号 | AN11 | M | 商户用户在汇付国际开立的用户账户号(开户接口时返回) |
ACCT_CUR | 账户币种 | X3 | M | 默认值: CNY ,人民币 |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
ENDPARAMS | 结束标签 | - | - | - |
ENDREQUEST | 结束标签 | - | - | - |
1.2应答
汇付->商户
关键字 | 定义 | 类型长度 | 必填 | 参数说明/示例 |
---|---|---|---|---|
RESPONSE | 开始标签 | - | - | |
GENERAL | 开始标签 | - | - | |
MERCHANTID | 商户号 | AN13 | M | 由汇付给出 |
TERMINALID | 虚拟终端号 | AN8 | M | 由汇付给出 |
PRODUCTTYPE | 产品类型 | AN32 | M | 固定为:JH |
VERSION | 接口版本 | AN10 | M | 当前版本:1.0 |
TRXTYPE | 交易类别 | AN6 | M | 200011:用户余额查询 |
ENDGENERAL | 结束标签 | - | - | - |
PARAMS | 开始标签 | - | - | - |
ACCT_TYPE | 账户类型 | X3 | M | 原样返回 |
ACCT_NO | 用户账户号 | AN11 | M | 原样返回 |
ACCT_CUR | 账户币种 | X3 | M | 原样返回 |
BALANCE | 余额 | N15 | M | 格式为实际金额扩大100倍。如1000,表示10元 |
BALANCE_TIME | 余额时间 | D | M | 格式:yyyyMMddHHmmss |
EXT1 | 扩展字段1 | X256 | O | |
EXT2 | 扩展字段2 | X256 | O | |
STATUS | 处理结果 | X1 | M | 1:成功 2:失败 |
ERRORCODE | 错误码 | X6 | O | - |
ERRORMSG | 错误描述 | X256 | O | - |
ENDPARAMS | 结束标签 | - | - | - |
ENDRESPONSE | 结束标签 | - | - | - |
账户明细流水查询
1 账户明细流水查询
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/balance/acctBalanceQuery.htm |
正式环境 | https://global.chinapnr.com/balance/acctBalanceQuery.htm |
1.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
inputCharset | 字符集 | String(1) | 不可空 | 固定值:1 |
productType | 网关版本 | String(2) | 不可空 | 固定值:ACC |
version | 网关版本 | String(10) | 不可空 | 固定值:1.0 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 请求流水号,系统唯一 |
requestTime | 请求时间 | String(14) | 不可空 | yyyyMMddHHmmss |
acctType | 账户类型 | String(3) | 不可空 | 001:2010001001 主账户 004:2280001004 待结算账户 010:2010001010 头寸额度账户 011:1290001011 头寸占用账户 040:2280001040 待分账账户 042:2280001042 直连待结算账户 |
acctCur | 账户币种 | String(3) | 不可空 | 例:CNY;详细见:币别代码 |
merchantAcctId | 商户会员号 | String(32) | 不可空 | 由我司提供(即11位商户号+01)例如商户号为10012021109,则此处填写1001202110901 |
terminalId | 终端号 | String(8) | 不可空 | 由我司提供,汇数分配的终端号,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
trxType | 交易类别 | String(6) | 不可空 | 固定:100000 |
queryType | 查询类型 | String(1) | 不可空 | 1 商户账户 2 用户账户 |
userId | 查询的用户ID列表 | String(120) | 条件 | queryType=2时必填。逗号分隔,最多不超过10个用户号 |
startDate | 查询时间起始 | String(14) | 不可空 | 格式:yyyyMMddHHmmss(大于等于) |
endDate | 查询时间结束 | String(14) | 不可空 | 格式:yyyyMMddHHmmss(小于) |
bgUrl | 商户提供的异步通知地址 | String(255) | 不可空 | 用于接收异步返回,异步返回包含查询结果的文件名。 |
signMsg | 签名信息 | - | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- - 仅对非空字段进行加签
acctCur={acctCur}&acctType={acctType}&bgUrl={bgUrl}&endDate={endDate}&inputCharset={inputCharset}&merchantAcctId={merchantAcctId}&productType={productType}&queryType={queryType}&requestId={requestId}&requestTime={requestTime}&signType={signType}&startDate={startDate}&terminalId={terminalId}&trxType={trxType}&userId={userId}&version={version}
1.2 应答
同步返回参数说明:
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
requestTime | 请求时间 | String(14) | 原样返回 |
productType | 产品类型 | String(2) | 原样返回 |
queryType | 查询类型 | String(1) | 原样返回 |
acctType | 账户类型 | String(3) | 原样返回 |
acctCur | 账户币种 | String(3) | 原样返回 |
merchantAcctId | 商户号 | String(32) | 原样返回 |
terminalId | 终端号 | String(8) | 原样返回 |
trxType | 交易类别 | String(6) | 原样返回 |
userId | 查询的用户ID列表 | String(120) | 原样返回 |
startDate | 查询时间起始 | String(14) | 原样返回 |
endDate | 查询时间结束 | String(14) | 原样返回 |
respCode | 返回码 | String(8) | 000000表示同步受理成功,其他为受理失败 |
respMsg | 返回描述 | String(256) | 可空 |
signMsg | 签名信息 | String(2048) | 不可空 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 仅对非空字段进行加签
acctCur={acctCur}&acctType={acctType}&merchantAcctId={merchantAcctId}&productType={productType}&requestTime={requestTime}&respCode={respCode}&respMsg={respMsg}&signType={signType}&startDate={startDate}&terminalId={terminalId}&trxType={trxType}&userId={userId}&version={version}
异步返回参数说明:
参数名称 | 参数含义 | 最大长度 | 参数说明 |
---|---|---|---|
version | 版本号 | String(10) | 原样返回 |
signType | 签名方式 | String(2) | 原样返回 |
requestId | 请求流水号 | String(32) | 原样返回 |
requestTime | 请求时间 | String(14) | 原样返回 |
productType | 产品类型 | String(2) | 原样返回 |
queryType | 查询类型 | String(1) | 原样返回 |
acctType | 账户类型 | String(3) | 原样返回 |
acctCur | 账户币种 | String(3) | 原样返回 |
merchantAcctId | 商户号 | String(32) | 原样返回 |
terminalId | 终端号 | String(8) | 原样返回 |
userId | 查询的用户ID列表 | String(120) | 原样返回 |
startDate | 查询时间起始 | String(14) | 原样返回 |
endDate | 查询时间结束 | String(14) | 原样返回 |
notifyCode | 返回码 | String(8) | 非空 |
notifyMsg | 返回描述 | String(256) | 可空 |
fileName | 查询结果文件名,用于下载请求 | 商户根据此处的文件名,利用流水查询结果文件下载接口下载文件 | 可空 |
signMsg | 签名信息 | String(2048) | 不可空 注:若通过sdk接入,则无需自己处理,代码已封装 |
- 仅对非空字段进行加签
acctCur={acctCur}&acctType={acctType}&endDate={endDate}&fileName={fileName}&merchantAcctId={merchantAcctId}& notifyCode={notifyCode}& notifyMsg={notifyMsg}&productType={productType}&requestId={requestId}&requestTime={requestTime}&signType={signType}&startDate={startDate}&terminalId={terminalId}&trxType={trxType}&userId={userId}&version={version}
账户明细流水查询文件下载
1 账户明细流水查询文件
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://hfgj.testpnr.com/balance/acctBalanceDownload.htm |
正式环境 | https://global.chinapnr.com/balance/acctBalanceDownload.htm |
1.1 请求
参数 | 参数含义 | 长度 | 是否必填 | 参数说明 |
---|---|---|---|---|
协议参数 | ||||
inputCharset | 字符集 | String(1) | 不可空 | 固定值:1 |
productType | 网关版本 | String(2) | 不可空 | 固定值:ACC |
version | 网关版本 | String(10) | 不可空 | 固定值:1.0 |
signType | 签名类型 | String(2) | 不可空 | 固定值:4。RSA加签 |
业务参数 | ||||
requestId | 请求流水号 | String(32) | 不可空 | 请求流水号,系统唯一 |
requestTime | 请求时间 | String(14) | 不可空 | yyyyMMddHHmmss |
merchantAcctId | 商户会员号 | String(32) | 不可空 | 由我司提供(即11位商户号+01)例如商户号为10012021109,则此处填写1001202110901 |
terminalId | 终端号 | String(8) | 不可空 | 由我司提供,汇数分配的终端号,不同的接口/功能可能会分配不同的终端号,故请考虑多终端情况下的兼容。 |
trxType | 交易类别 | String(6) | 不可空 | 固定:100000 |
fileName | 请求下载的文件名 | String(256) | 不可空 | 此处为账户流水查询接口中异步结果返回的文件名 |
signMsg | 签名信息 | - | 不可空 | 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签, 加签证书,请参照私钥公钥生成 注:若通过sdk接入,则无需自己处理,代码已封装 |
- - 仅对非空字段进行加签
fileName={fileName}&merchantAcctId={merchantAcctId}&productType={productType}&requestId={requestId}&requestTime={requestTime}&signType={signType}&terminalId={terminalId}&trxType={trxType}&version={version}
1.2 应答
同步返回文件流
1.3 结果文件格式
账户流水查询的返回为txt格式的文件,无需作验签处理。文件字段以“,”线分割,第一行为汇总信息。第二行起为明细信息。
文件名格式为“商户号(13位)_序号_查询时间起始_查询时间结束.txt”。其中查询时间起始/查询时间结束格式为YYYYMMDDHHMMSS。
文件内容示例格式如下:
账户类型,账户币种,起始时间,结束时间,行数
用户号,明细ID,交易参考号,商户订单号,记账时间,借方金额,贷方金额,期初余额,期末余额,备注,产品类型,交易类型,记账规则,,,
用户号,明细ID,交易参考号,商户订单号,记账时间,借方金额,贷方金额,期初余额,期末余额,备注,产品类型,交易类型,记账规则,,,
商户账户明细示例:
001,CNY,20211111093820,20211117093820,3
,105799586,1440632,20211116094245696,20211116094253,2,0,5855,5853,代发|1440632,,SFEX,30005131
,105799265,1440629,20211116093957811,20211116094006,3,0,5858,5855,代发|1440629,,SFEX,30005131
,105796087,8848640,163691691583369,20211116091000,0,1,5857,5858,代发退回|8848640,,SFEX_BACK,30005115
用户账户明细示例:
001,CNY,20211021003820,20211022003820,1
10000005,103542826,30077,20211021182754667,20211021182827,0,1,41,42,单次分账|原交易订单号88917,,TRANSDIV,10007111