请求参数是商户在与支付宝进行数据交互时,提供给支付宝的请求数据,以便支付宝根据这些数据进一步处理。
参数 |
参数名称 |
类型(字节长度) |
参数说明 |
是否可为空 |
样例 |
基本参数 |
|||||
service |
接口名称 |
String |
接口名称。 |
不可空 |
alipay.acquire.customs |
partner |
合作者身份ID |
String(16) |
签约的支付宝账号对应的支付宝唯一用户号。 以2088开头的16位纯数字组成。 |
不可空 |
2088101142878662 |
_input_charset |
参数编码字符集 |
String |
商户网站使用的编码格式,如utf-8、gbk、gb2312等。 |
不可空 |
utf-8 |
sign_type |
签名方式 |
String |
DSA、RSA、MD5三个值可选,必须大写。 |
不可空 |
MD5 |
sign |
签名 |
String |
请参见“9 签名机制”。 |
不可空 |
2118ac8fad6bc1d9e88a6cd017c18d37 |
业务参数 |
|||||
out_request_no |
报关流水号 |
String(32) |
商户生成的用于唯一标识一次报关操作的业务编号。 建议生成规则:yyyymmmdd型8位日期拼接4位序列号。 该参数长度为6~32位。 |
不可空 |
9193457120563834 |
trade_no |
支付宝交易号 |
String(64) |
该交易在支付宝系统中的交易流水号,最长64位。 |
不可空 |
2015051446800462000100020003 |
merchant_customs_code |
商户海关备案编号 |
String(20) |
商户在海关备案的编号。 |
不可空 |
hanguo |
amount |
报关金额 |
String(20) |
报关金额,单位为人民币“元”,精确到小数点后2位。 注意: 交易累计的报关金额不得大于交易总金额。 |
不可空 |
2 |
customs_place |
海关编号 |
String(20) |
海关编号,参见“10.4 海关编号”,大小写均支持。 |
不可空 |
HANGZHOU |
merchant_customs_name |
商户海关备案名称 |
String(256) |
商户海关备案名称。 |
不可空 |
jwyhanguo_card |
is_split |
是否拆单 |
String(1) |
商户控制本单是否拆单报关。 仅当该参数传值为T或者t时,才会触发拆单(报关海关必须支持拆单)。 |
可空 |
T |
sub_out_biz_no |
子订单号 |
String(32) |
商户子订单号。拆单时由商户传入,且拆单时必须传入,否则会报INVALID_PARAMETER错误码。 |
可空 |
2015080811223212345453 |
buyer_name |
订购人姓名 |
String(10) |
订购人姓名。即订购人留在商户处的姓名信息。 |
可空 |
王一 |
buyer_id_no |
订购人身份证号 |
String(18) |
订购人身份证号。即订购人留在商户处的身份证信息。 |
可空 |
230227198707201827 |
支付宝对商户提供的请求数据进行处理后,返回给商户结果数据,以便商户根据这些数据进一步处理。
返回结果分两种场景,一种为业务正常受理的结果,一种为系统级异常或者接入数据错误。对于业务正常受理,商户需要解析响应码以判断业务是否处理成功。
参数 |
参数名称 |
类型(长度范围) |
参数说明 |
是否可为空 |
样例 |
|
基本参数 |
||||||
is_success |
请求是否成功 |
String |
请求是否成功。请求成功不代表业务处理成功。 l T代表成功 l F代表失败 |
不可空 |
T |
|
sign_type |
签名方式 |
String |
DSA、RSA、MD5三个值可选,必须大写。 |
可空 |
MD5 |
|
sign |
签名 |
String |
请参见“9 签名机制”。 |
可空 |
3afc92ac4708425ab74ecb2c4e58ef56 |
|
error |
错误代码 |
String |
l 请求成功时,不存在本参数; l 请求失败时,本参数为错误代码,参见“10.2 接入错误码”和“10.3 系统错误码”。 |
可空 |
ILLEGAL_SIGN |
|
业务参数 |
||||||
result_code |
响应码 |
String(32) |
处理结果响应码。 l SUCCESS:成功 l FAIL:失败 |
不可空 |
SUCCESS |
|
trade_no |
支付单据号 |
String(64) |
支付宝推送到海关的支付单据号。 |
可空 |
2013111511001004390000105126 |
|
alipay_declare_no |
支付宝报关流水号 |
String(64) |
支付宝报关流水号。 |
可空 |
2013112611001004680073956707 |
|
detail_error_code |
详细错误码 |
String(48) |
对返回响应码进行原因说明,请参见“10.1 业务错误码”。 当result_code响应码为SUCCESS时,不返回该参数。 |
可空 |
SAME_CUSTOMS_DECLARE_ONCE |
|
detail_error_des |
详细错误描述 |
String(64) |
对详细错误码进行文字说明,请参见“10.1 业务错误码”中的“含义”。 当result_code响应码为SUCCESS时,不返回该参数。 |
可空 |
同一笔交易同一个海关只能报关一次 |
|
identity_check |
订购人身份信息和支付人身份信息的验证结果 |
String(1) |
l T表示商户传入的订购人姓名和身份证号和支付人的姓名和身份证号一致。 l F代表商户传入的订购人姓名和身份证号和支付人的姓名和身份证号不一致。 对于同一笔报关单支付宝只会校验一次,如果多次重推不会返回此参数。 |
可空 |
T |
|
ver_dept |
核验机构 |
String(1) |
核验机构标志 1-银联2-网联3-其他 |
|
2 |
|
pay_code |
支付企业的海关注册登记编号
|
String(18) |
支付企业的海关注册登记编号 |
|
31222699S7
|
|
pay_transaction_id |
交易唯一编号
|
String(32) |
交易唯一编号(可在央行认可的机构验证) |
|
20190408234700101010101010101 |
|
total_amount |
交易总金额(单位:分)
|
String(17) |
实际交易金额 |
|
30000 |
|
currency |
币种
|
String(13) |
实际交易币制(海关编码) |
|
142 |
说明:
同步返回的参数随支付宝服务端的演化,可能会返回更多的节点,需要程序使用方对文档说明以外的节点予以忽略。
<?xml version="1.0" encoding="utf-8"?> <alipay> <is_success>T</is_success> <request> <param name="trade_no">2015051446800462</param> <param name="merchant_customs_code">hanguo</param> <param name="sign_type">MD5</param> <param name="merchant_customs_name">jwyhanguo_card</param> <param name="sign">2118ac8fad6bc1d9e88a6cd017c18d37</param> <param name="amount">2</param> <param name="_input_charset">UTF-8</param> <param name="customs_place">HANGZHOU</param> <param name="service">alipay.acquire.customs</param> <param name="out_request_no">9193457120563834</param> <param name="partner">2088101142878662</param> </request> <response> <alipay> <result_code>SUCCESS</result_code> <trade_no>2013111511001004390000105126</trade_no> <alipay_declare_no>2013112611001004680073956707</alipay_declare_no> </alipay> </response> <sign>3afc92ac4708425ab74ecb2c4e58ef56</sign> <sign_type>MD5</sign_type> </alipay>
<?xml version="1.0" encoding="utf-8"?> <alipay> <is_success>T</is_success> <request> <param name="trade_no">2015051446800462</param> <param name="merchant_customs_code">hanguo</param> <param name="sign_type">MD5</param> <param name="merchant_customs_name">jwyhanguo_card</param> <param name="sign">2118ac8fad6bc1d9e88a6cd017c18d37</param> <param name="amount">2</param> <param name="_input_charset">UTF-8</param> <param name="customs_place">HANGZHOU</param> <param name="service">alipay.acquire.customs</param> <param name="out_request_no">9193457120563834</param> <param name="partner">2088101142878662</param> </request> <response> <alipay> <detail_error_code>SAME_CUSTOMS_DECLARE_ONCE</detail_error_code> <detail_error_des>同一笔交易同一个海关只能报关一次</detail_error_des> <result_code>FAIL</result_code> </alipay> </response> <sign>3afc92ac4708425ab74ecb2c4e58ef56</sign> <sign_type>MD5</sign_type> </alipay>
<?xml version="1.0" encoding="utf-8"?> <alipay> <is_success>F</is_success> <error>ILLEGAL_SIGN</error> </alipay>
当支付宝处理完成后,支付宝会以XML同步返回数据的形式,把数据反馈给商户网站。商户可以利用编程方法来模拟http请求远程解析XML获得处理的结果数据,增加商户的业务逻辑处理程序。此时,商户必须判断商户网站中是否已经对该次的结果数据做过同样处理。如果不判断,存在潜在的风险,商户自行承担因此而产生的所有损失。
报关接口支持重推、修改功能。如果某笔交易已请求报送海关,但电子口岸丢单;或如果某笔交易已请求报送海关,但商户备案号、备案名称、海关编码填错,都可以使用重推修改功能,重新向海关推送。重推时,需要保持报关流水号out_request_no和原始请求一致,否则认为是一条新请求。重推修改只能对商户备案号、备案名称、海关编码和金额做修改。重推金额不重复计入报关总金额。
2017年起,针对海关总署推行的统一版报文,目前大部分属地仅报送ZONGSHU或者仅报送属地即可,商户可在海关编号表中查看对应海关的统一版报送方案。当商户向天津、河南报送统一版支付单时请特别注意,需要同时报送支付单到总署系统和属地的国检系统。
天津、河南的统一版推送方法:天津、河南的支付单需要同时报往地方平台和总署。
当支付单不使用拆单功能,即is_split参数不为T或不传入is_split参数时:
当支付单使用拆单功能,即is_split=T时:
支付宝备案名称:支付宝(中国)网络技术有限公司
海关名称 |
统一版各属地报关方案 |
海关编码 |
支付宝备案号 |
总署 |
直连总署 |
zongshu |
31222699S7 |
河南保税物流中心 |
推送zhengzhou |
zhengzhou |
31222699S7 |
宁波海关 |
推送ningbo |
ningbo |
31222699S7 |
新郑综合保税区(空港) |
先推送henan,再推送zongshu |
henan |
P460400005 |
天津海关 |
先推送tianjin,再推送zongshu |
tianjin |
Q12150016000019 |
南沙国检 |
推送nanshagj |
nanshagj |
1500004292 |
上海海关 |
推送shanghai_cbt |
shanghai_cbt |
31222699S7 |
广州海关(机场) |
推送广州机场国检,备案信息需要传企业在广电的备案信息 |
guangzhou_airport |
C000010000416158 |
广州海关(南沙) |
推送广州南沙国检,备案信息需要传企业在广电的备案信息 |
guangzhou_nansha |
C000010000416158 |
广州海关(黄埔) |
推送广州黄埔国检,备案信息需要传企业在广电的备案信息 |
guangzhou_huangpu |
C000010000416158 |
广州海关(沙田) |
推送广州沙田国检,备案信息需要传企业在广电的备案信息 |
guangzhou_shatian |
C000010000416158 |
杭州海关 |
推送hangzhou_zongshu |
hangzhou_zongshu |
ZF14021901 |
详细错误代码(detail_error_code) |
含义(detail_error_des) |
场景描述 |
解决方案 |
TRADE_NOT_EXIST |
交易不存在 |
传入的trade_no错误,查询不到交易号 |
请检查trade_no参数是否正确 |
TRADE_STATUS_ERROR |
交易状态不合法,不允许报关 |
交易当前状态不允许报关,如交易尚未支付成功或交易已经全额退款 |
请确认交易状态 |
INVALID_PARAMETER |
参数不合法 |
参数格式不合法,如超长或者非空的参数未传等 |
请根据接口文档检查参数格式 |
CONTEXT_INCONSISTENT |
同一笔请求参数不一致 |
同一个请求号,多次请求,但参数不一致 |
请核实参数 |
SAME_CUSTOMS_DECLARE_ONCE |
同一笔交易同一个海关只能报关一次 |
同一笔交易在同一个海关只能报关一次,不能多次报关 |
请确认该笔交易在当前海关是否已经报关 |
REQUEST_AMOUNT_EXCEED |
金额超限 |
累计报关金额超过交易金额 |
请确认该笔交易累计的报关金额 |
PARTNER_ERROR |
交易partner跟报关请求partner不一致 |
交易的partner跟报关请求的partner不一致 |
请确认当前报关请求的partner是否跟交易的partner一致 |
PAYER_ENABLE_STATUS_FORBID |
报关交易支付人状态非法 |
报关时报关的交易中的支付人状态校验不通过 |
请确认交易中的支付人在支付宝中当前的账户状态 |