海关申报接口

本文档定义CHINAPNR支付网关商户接入接口规范,提供接口报文参数说明、示例报文、信息安全解决方案,并给出相关问题说明等,以帮助商户技术人员接入,便于尽快投入使用。
根据PCI-DSS检查要求,正式环境禁止使用低版本的SSL3.0 TLS1.0 TLS1.1等协议,请使用高于TLSv1.2及以上发送请求,推荐使用TLSv1.2

提交参数

请求地址

环境 HTTPS请求地址
测试环境 https://hfgj.testpnr.com/custom/applyImptDec.do
正式环境 https://global.chinapnr.com/custom/applyImptDec.do

协议参数

参数 类型 是否必填 最大长度 描述 示例值
version String 10 网关版本,固定值:1.0
1.0-海关申报
1.0
bgUrl String 256 服务器接受支付结果的后台地址 https://www.merchant.com/pay/notifyReceiverBg.do
signType String 2 签名类型,固定值:4
4-RSA加签
4

业务参数

参数 类型 是否必填 最大长度 描述 示例值
merchantAcctId String 必选 32 会员账号,由我司提供的商户号+01,共13位数字 1001234001101
terminalId String 必选 8 终端号,由我司提供的终端号 999999
dealId String 条件必选 32 条件必输;对于分期支付,允许多个,英文逗号分隔 (数字,数字) P99999
customCode String 必选 32 海关编码,参照海关编码附录 NBHG
customVersion String 可选 8 海关版本。预留,为空即可
merCustomCode String 必选 32 商户海关备案号,商户在海关的备案号
(注:非汇付备案号)
TES******20000
merCustomName String 必选 64 电商平台的海关注册登记名称 XXXXX有限公司
payerIdType string 必选 2 证件类型,证件类型默认为身份证:1-身份证 1
payerName string 必选 64 购买人中文姓名 张三
payerIdNumber string 必选 32 购买人身份证号,字符串,18位身份证号。 320125198800001111
orderId String 必选 32 商户订单号,字符串,只允许使用字母、数字、_、-,并以_,字母或数字开头,每商户提交的订单号,必须在自身账户交易中唯一;合并支付时,填写商户子订单号 20170821125324
orderCurrency String 必选 3 默认CNY CNY
orderAmt Number 必选 15 订单金额,整型数字,单位为分。日韩元支持的最小单位为元。
需满足orderAmt=freightAmt+goodsAmt+taxAmt-offsetAmt
如100元,则填写10000
freightAmt Number 必选 15 物流费,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示 如100元,则填写10000
goodsAmt Number 必选 15 货款,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示 如100元,则填写10000
taxAmt Number 必选 15 税款,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示 如100元,则填写10000
offsetAmt Number 必选 15 抵扣金额,没值传0,整型数字,以分为单位。比方10元,提交时金额应为1000,商户页面显示金额可以转换成以元为单位显示 如100元,则填写10000
ecpShortName String 必选 16 填写电商平台在检验检疫的备案号,推送南沙时请准确填写,其他海关填写一固定值即可 SHHF
ecpDomainName String 必选 64 电商平台域名
competCustom String 必选 32 主管海关代码 固定在 1
iaqInstCode String 必选 32 检验检疫机构代码 固定值 1
bizType String 可空 16 拆单标识 Split表示拆单,其他值不拆单 Split
ext1 String 可选 512 扩展字段1,英文或中文字符串支付完成后,按照原样返回给商户 扩展字段1
ext2 String 可选 512 扩展字段2,英文或中文字符串支付完成后,按照原样返回给商户 扩展字段2
signMsg String 必选 2048 签名字符串请参考签名方法 参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行商户密钥进行加签
version={version}&bgUrl={bgUrl}&signType={signType}&merchantAcctId={merchantAcctId}&terminalId={terminalId}&dealId={dealId}&customCode={customCode}&customVersion={customVersion}&merCustomCode={merCustomCode}&merCustomName={merCustomName}&payerIdType={payerIdType}&payerName={payerName}&payerIdNumber={payerIdNumber}&orderId={orderId}&orderCurrency={orderCurrency}&orderAmt={orderAmt}&freightAmt={freightAmt}&goodsAmt={goodsAmt}&taxAmt={taxAmt}&offsetAmt={offsetAmt}
只对非空值的字段进行加签。

返回结果

申报结果更新申报成功或申报失败会通知提交时bgUrl对应的地址。

返回参数

参数 类型 是否必填 最大长度 描述 示例值
version String 必选 10 版本号;固定值:1.0 1.0
bgUrl String 必选 256 后台通知地址 http://192.168.1.111:8081/QAMOCK-Test/receiveCustomBg.do
signType String 必选 2 签名方式;固定值:4-RSA 4-RSA
merchantAcctId String 必选 32 商户号 1001215986001
terminalId String 必选 32 终端号 99999
dealId String 可选 32 支付流水号,在bizType传值为Split即标识拆单情况下,该值为新生成的支付单号,
即海关平台查单的支付单号为该值而非请求中上送的支付单号;若bizType不为Split,则该值同请求。
P99999
customCode String 必选 32 海关代码 NBHG
customVersion String 可选 8 海关版本
merCustomCode String 必选 32 商户海关备案号 310436T001
merCustomName String 必选 32 商户海关备案名称 上海汇付数据服务有限公司
ecpShortName String 必选 16 电商平台企业简写(四位) SHHF
ecpDomainName String 必选 64 电商平台互联网域名
competCustom String 必选 32 主管海关代码 10002000
iaqInstCode String 必选 32 检验检疫机构代码 60007000
payerIdType Number 必选 2 证件类型 1
payerName String 必选 64 姓名
payerIdNumber String 必选 32 身份证号
orderId String 必选 32 商户订单号 20170821091312
orderCurrency String 必选 3 订单币种 USD
orderAmt Number 必选 15 订单金额 如100元,则填写10000
freightAmt Number 必选 15 物流费 如100元,则填写10000
goodsAmt Number 必选 15 货款 如100元,则填写10000
taxAmt Number 必选 15 关税 如100元,则填写10000
offsetAmt Number 必选 15 抵扣金额 如100元,则填写10000
bizType String 可选 16 业务类型
ext1 String 可选 128 扩展字段1,与提交订单时一致
ext2 String 可选 128 扩展字段2,与提交订单时一致
declareId String 必选 32 申报ID
decResult String 必选 2 结果:10-接收成功、11-接收失败、21-申报失败、20-申报成功 20
errorCode String 必选 8 错误代码,详细请参考错误代码附录 000000
errorMsg String 必选 256 错误描述。失败时返回的错误信息,可以为空。 03:保存成功02:支付单报文处理失败,接收报文为旧报文数据,不做处理
signMsg String 必选 2048 签名字符串,商户需对该字段进行验签。详情请参考验签方法。对于所有值不为空的参数及对应值,按照字母顺序组成字符串 DSA:参数1={参数1}&参数2={参数2}&……&参数n={参数n}然后进行支付平台证书加密形成密文后进行2048位的Base64转码。
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}
根据字母排序(如a**字段放在b**字段前面)验签。

请求示例

请参考具体Demo。 下载地址

BG返回示例

BG以http Key-Value方式返回,如:
ecpDomainName=www.xxx.com
signType=4
merCustomCode=TEST1000020000
version=1.0
payerIdType=1
terminalId=hgpass
decResult=20
bgUrl=http://localhost:63611/receiveBg.aspx
taxAmt=0
merCustomName=TEST
customCode=NBHG
orderId=20170815171329
orderAmt=500
ecpShortName=Test
customVersion=
offsetAmt=0
declareId=467
merchantAcctId=1001215986001
competCustom=10002000
goodsAmt=0
orderCurrency=CNY
dealId=c94858
iaqInstCode=60007000
freightAmt=500
ext1=
ext2=
signMsg=JnsPMjJVveVbzQoRi16qk0Z5ITCNbl09qNSTRuljY1UJc3wmKTfJIqEWcfWn48S6DDhWds06L2qTmMoFWnhCKMgcA6TvfmLpXIJppdF7Qme1c9wOYbAWs2rgH3TvcF9Zd7vokc9ruw%2FE3LAVJKaRJazpIVyQLVfFH%2F0xHYx6f8k%3D
bizType=
payerIdNumber=321281000000003913
payerName=张三

海关接口参数填写说明

请参考具体文件。 下载地址