2.1 海关申报接口
- 请求地址:https://pay.bilibili.com/payplatform/pay/v2/declare/customDeclareOrder
- 使用必读
- 1.因为需要调用第三方,耗时未知,至少设置为3s
- 2.如果outDeclareNo已存在,返回8004030001错误码,并且返回已存在的数据,不会调用第三方申报接口
- 3.如果需要拆单,isSplit必须传T
- 4.有的海关既需要推动到地方平台,有需要推送到总署(必须先推送到地方平台,5分钟之后再推送到总署,除customsPlace、mchCustomsNo、mchCustomsName需保持一致)
- 5.申报总金额不得大于原支付订单金额(业务方自行判断)
- 6.已全额退款订单不能申报(业务方自行判断)
- 7.未支付成功不可申报
- 8.如果errno为0,但是返回状态不是SUCCESS 或者FAIL,请调2.4海关申报查询接口查询申报结果
- 9.微信只支持一个月内的支付订单进行报关申请
- 请求方式: http post application/json
入参列表
以下参数除sign外全部参与签名
请求参数 | 描述 | 类型 | 是否必须传入 |
---|---|---|---|
customerId | 支付平台分配给开发者的业务id | Int | 是 |
outDeclareNo | 业务方申报单号,业务方需要保证唯一 | string(32) | 是 |
oldOutDeclareNo | 如果是推送给总署的,需要传之前推送给地方平台的outDeclareNo | string(32) | 否 |
txId | 支付流水号 | string(32) | 是 |
customsPlace | 海关(参考下面的海关编码) | string(32) | 是 |
mchCustomsNo | 商户海关备案号 | string(32) | 是 |
mchCustomsName | 商户海关备案名称 | string(64) | 是 |
amount | 报关金额,单位分 如有拆单 amount = subTransportFee+subProductFee | Int | 是 |
duty | 关税,单位分(少数海关特殊要求上传该字段时需要) | Int | 是 |
isSplit | 否拆单,T 拆单, F 不拆单 | string(1) | 是 |
subTransportFee | 物流费用,以分为单位 | Int | 是 |
subProductFee | 商品费用,以分为单位 | Int | 是 |
certType | 证件类型,目前只支持身份证,IDCARD(身份证) | string(10) | 否 |
certId | 证件号码,如有证件类型则必传。 | string(20) | 否 |
certName | 订购人姓名,如有证件类型则必传。 | string(32) | 否 |
traceId | 请求标识id | string | 是 |
version | 接口版本,目前1.0 | string | 是 |
timestamp | 当前时间戳,毫秒 | long | 是 |
signType | 签名校验类型,默认MD5 | string | 是 |
sign | 校验签名 | string | 是 |
返回列表
【errno及msg映射】
errno | Msg |
---|---|
0 | Success |
8004010001 | outDeclareNo已存在 |
8004010002 | 不支持此海关 |
【data返回体】
返回字段 | 描述 |
---|---|
txId | 支付流水号 |
status | 申报状态 UNDECLARED -- 未申报(暂未提交到第三方) PROCESSING -- 申报中 SUCCESS -- 申报成功 FAIL-- 申报失败 |
outDeclareNo | 支付平台分配给开发者的业务id |
reqSubDeclareNo | 请求第三方的申报子订单号,拆单时返回 |
certCheckResult | 身份信息校验结果 UNCHECKED 商户未上传订购人身份信息 SAME 商户上传的订购人身份信息与支付人身份信息一致 DIFFERENT 商户上传的订购人身份信息与支付人身份信息不一致 |
initalRequest | 向第三方支付企业发送的支付信息 |
initalResponse | 第三方支付企业返回的结果 |
channelOrderNo | 第三方支付企业的支付流水号 |
channelDeclareNo | 第三方支付企业的报关单号,可能没有数据, 比如微信不拆单申报 比如状态是UNDECLARED ,如果没有返回 调查询接口 |
recpAccount | 收款账户 |
recpName | 收款企业名称 |
verDept | 验核机构 0-未知 1-银联 2-网联 3-其他 |
verDeptNo | 验核机构流水号 |
返回示例
{
"errno": 0,
"msg": "success",
"data": {
"txId": "3063660176692617216",
"outDeclareNo": "1212376692617216",
"reqSubDeclareNo": "20181225706993040247535",
"status": "UNDECLARED",
"certCheckResult": "UNCHECKED",
"initalRequest": "",
"initalResponse": "",
"channelOrderNo": "2017081721001004570217155618",
"channelDeclareNo": "201708172100100457021715561800",
"recpAccount": "2017081721001004570217155618",
"recpName": "2017081721001004570217155618",
"verDept": 1,
"verDeptNo": "201708172100100457021715561800"
}
}
以下是海关编码
【备注:1.支付宝支付渠道包括(支付宝、支付宝花呗、支付宝国际) 2.微信支付渠道包括(微信、微信跨境)】
海关名称 | 支付渠道 | 海关编号 | 备注 |
---|---|---|---|
宁波 | 支付宝、微信 | NINGBO | 只需要推送ZHENGZHOU_WX |
郑州(综保) | 支付宝 | ZHENGZHOU ZHENGZHOU_ZS |
先推送ZHENGZHOU(地方国检),再推送ZHENGZHOU_ZS(总署) |
微信 | ZHENGZHOU_WX | 只需要推送ZHENGZHOU_WX | |
郑州(保税物流中心) | 支付宝、微信 | ZHENGZHOU_BS | 只需要推送ZHENGZHOU_BS |
上海 | 支付宝、微信 | SHANGHAI | 只需要推送SHANGHAI |
广州(南沙) | 支付宝、微信 | GUANGZHOU_NS_GJ GUANGZHOU_ZS |
先推送GUANGZHOU_NS_GJ(地方国检),再推送GUANGZHOU_ZS(总署) 注:如果是支付宝订单,并且向GUANGZHOU_NS_GJ申报时,海关备案号需要传电子口岸的备案号,不是国检备案号,微信还是传国检备案号 |
广州总署 | 支付宝、微信 | GUANGZHOU | 此海关用于只需要推送海关总署,不需要推送地方平台时使用 |