本开发文档的阅读对象为:具有一定开发能力,了解PHP、JAVA、.NET等开发语言的开发、维护或管理人员。

本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。

版本号 更新说明 更新日期
V1.0 创建 2017.07.27
  1. 商户会员号

    Chinapnr网关支付时提交的为商户会员号,并非商户号,会员号=商户号+"01"(如商户号为abc时,会员号为abc01)

商户接入结汇业务,调用API须遵循以下规则:

传输方式 为保证交易安全性,采用 HTTPS 传输
提交方式 采用 POST 方法提交
数据格式

XML格式接口,详细可查看接口文档定义

字符编码 支持 UTF-8 字符编码
签名算法 商户生成签名字符串,现支持的签名算法类型为 RSA-SHA1
签名要求 请求和接收数据均需要校验签名

场景介绍

帮助商户将资金购结汇以及代发。

结汇代发流程

第一步:明细备案

图3.0 明细备案

第二步:汇款及结汇处理

图3.1 汇款及结汇处理

第三步:资金下发

图3.2 资金下发

概述

本文档展示了如何从零开始,与Chinapnr跨境系统结汇代发接口对接的流程。

第一步:获取账号信息

  1. 商户需与前端销售沟通开通测试账号或生产账号,并提供接受邮箱地址。

  2. 1-2个工作日内由开通组负责将开通的账号信息发送至商户邮箱。

第二步:配置密钥

  1. 开发者调用接口前需要先生成RSA密钥,RSA密钥包含私钥、公钥。生成密钥后在商户后台进行密钥配置,配置完成后可发起交易。详细步骤请参考《配置密钥》

第三步:搭建和配置开发环境

  1. 下载示例代码Demo
    为了帮助开发者调用开放接口,我们提供了示例代码下载,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的Demo并引入您的开发工程《Demo下载》

  2. 将Demo运行成功,并将代码集成到您的项目中,记得修改商户号,终端号,和私钥证书。如生产环境,还需更换Chinapnr生产公钥证书。

调用流程

接口调用时序图:

图4.1 结汇代发时序图

注意:为确保安全,商户在收到汇付通知后,务必先验证返回的签名字段。

概述

Chinapnr开放平台采用了 RSA 安全签名机制,开发者可以通过Chinapnr公钥验证消息来源,同时可使用自己的私钥对信息进行加密。RSA 算法及数字签名机制是Chinapnr平台与开发者网关安全通信的基础,若开发者不熟悉 RSA 及数字签名,请先查阅相关资料。

RSA 私钥及公钥生成

1. 生成 RSA 私钥及公钥,请详见“附录一:私钥公钥生成及范例”。 生成的文件格式如:客户私钥private-rsa.pfx,客户公钥public-rsa.cer。

商户上传公钥

注意:

  1. 上传商户公钥前需先联系前端获取商户后台账号和密码,并将客户公钥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)的形式作为参数传入。

注意:

  1. 没有值的参数无需传递,也无需包含到待签名数据中。

  2. 签名时将字符转化成字节流时指定的字符集UTF8。

  3. 根据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) 不可空 -
email 电子邮箱 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方式返回,如:
      
    

余额支付

本文档定义CHINAPNR账户余额支付接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
只支持同商户下的账户间交易,包括:
(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 姓名:正常名称