一、报关接口api
接口地址
https://api.mch.weixin.qq.com/cgi-bin/mch/customs/customdeclareorder
是否需要证书
不需要。
请求方式:post 数据格式:xml 签名方式:md5
注意:商户订单号金额以支付系统记录的为准,无需上传,如有子订单号则必须上传子订单应付金额、物流费、商品价格(应付金额=物流费+商品价格)。
字段名变量名必填类型示例值说明
签名 sign 是 string(32) c380bec2bfd727a4b6845133519f3ad6 签名,详见签名生成算法
公众账号id appid 是 string(32) wxd678efh567hg6787 微信分配的公众账号id
商户号 mch_id 是 string(32) 1230000109 微信支付分配的商户号
商户订单号 out_trade_no 是 string(32) 20150806125346 商户系统内部的订单号
微信支付订单号 transaction_id 是 string(28) 1000320306201511078440737890 微信支付返回的订单号
海关 customs 是 string(32) shanghai no 无需上报海关
guangzhou 广州
hangzhou 杭州
ningbo 宁波
zhengzhou_bs 郑州(保税物流中心)
chongqing 重庆
xian 西安
shanghai 上海
zhengzhou_zh 郑州(综保区)
shenzhen 深圳
商户海关备案号 mch_customs_no 否 string(32) 123456 商户在海关登记的备案号,customs非no,此参数必填
关税 duty 否 int 888 关税,以分为单位
以下字段在拆单或重新报关时必传
字段名变量名必填类型示例值描述
商户子订单号 sub_order_no 否 string(32) 20150806125346 商户子订单号,如有拆单则必传
币种 fee_type 否 string(3) cny 微信支付订单支付时使用的币种,暂只支持人民币cny,如有拆单则必传。
应付金额 order_fee 否 int 888 子订单金额,以分为单位,不能超过原订单金额,order_fee=transport_fee+product_fee(应付金额=物流费+商品价格),如有拆单则必传。
物流费 transport_fee 否 int 888 物流费用,以分为单位,如有拆单则必传。
商品价格 product_fee 否 int 888 商品费用,以分为单位,如有拆单则必传。
以下字段在微信缺少用户信息时必传,如果商户上传了用户信息,则以商户上传的信息为准。
字段名变量名必填类型示例值描述
证件类型 cert_type 否 string(32) idcard 暂只支持身份证,该参数是指用户信息,商户若有用户信息,可上送,系统将以商户上传的数据为准,进行海关通关报备;
证件号码 cert_id 否 string(64) 330821198809085211 身份证号,该参数是指用户信息,商户若有用户信息,可上送,系统将以商户上传的数据为准,进行海关通关报备;
姓名 name 否 string(64) 张三 用户姓名,该参数是指用户信息,商户若有用户信息,可上送,系统将以商户上传的数据为准,进行海关通关报备;
举例如下:
<xml> <appid>wx2421b1c4370ec43b</appid> <customs>zhengzhou_bs</customs> <mch_customs_no>d00411</mch_customs_no> <mch_id>1262544101</mch_id> <order_fee>13110</order_fee> <out_trade_no>15112496832609</out_trade_no> <product_fee>13110</product_fee> <sign>8ff6cef879fb9555cd580222e671e9d4</sign> <transaction_id>1006930610201511241751403478</transaction_id> <transport_fee>0</transport_fee> <fee_type>cny</fee_type> <sub_order_no>15112496832609001</sub_order_no> </xml>
注:参数值用xml转义即可,cdata标签用于说明数据不被xml解析器解析。
应答参数列表
字段名变量名必填类型示例值说明
返回状态码 return_code 是 string(16) success success/fail
此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
返回信息 return_msg 否 string(128) 签名失败 返回信息,如非空,为错误原因
签名失败
参数格式校验错误
以下字段在return_code为success的时候有返回
字段名变量名必填类型示例值描述
签名类型 sign_type 是 string(32) md5 暂只支持md5
签名 sign 是 string(32) c380bec2bfd727a4b6845133519f3ad6 签名,详见签名生成算法
公众账号id appid 是 string(32) wxd678efh567hg6787 微信分配的公众账号id
商户号 mch_id 是 string(32) 1230000109 微信支付分配的商户号
业务结果 result_code 是 string(16) success success/fail
错误代码 err_code 否 string(32) systemerror 详细参见错误列表
错误代码描述 err_code_des 否 string(128) 系统错误 错误返回的信息描述
以下字段在return_code 和result_code都为success的时候有返回
字段名变量名必填类型示例值描述
状态码 state 是 string(2) undeclared 状态码
undeclared -- 未申报
submitted -- 申报已提交(订单已经送海关,商户重新申报,并且海关还有修改接口,那么记录的状态会是这个)
processing -- 申报中
success -- 申报成功
fail-- 申报失败
except --海关接口异常
微信支付订单号 transaction_id 是 string(28) 1000320306201511078440737890 微信支付返回的订单号
商户订单号 out_trade_no 是 string(32) 20150806125346 商户系统内部的订单号
商户子订单号 sub_order_no 否 string(32) 20150806125346 商户子订单号,如有拆单则必传
微信子订单号 sub_order_id 否 string(32) 20150806125346 微信子订单号
最后更新时间 modify_time 是 string(14) 20091227091010 最后更新时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为gmt+8 beijing。该时间取自微信服务器
错误码
名称描述原因解决方案
132011004 参数错误 报关时仅传入订单号,不传入子订单号(sub_order_no)时,不能填费用信息,须以支付系统中的值为准 请检查参数是否都正确
132021028 交易币种与商户结算币种不一致】 报关时传入子订单号(sub_order_no)时,币种参数(fee_type)必填 请检查所传币种参数(fee_type)是否为空
mchid_not_set 商户号未设置 商户号为必传参数,请求时必传 请检查商户号是否为空
mchid_invalid_length 无效的商户号长度 报关接口只支持12开头10位数字的商户号 请检查商户号长度是否为10位
customsconfig_not_set 海关配置未设置 报关接口需要商户已配置过海关信息才可以访问 请参照上文中的海关备案指引,进行海关信息报备
feetype_not_set 币种类型未设置 拆单情况下,币种为必填参数 请检查fee_type是否为空
outtradeno_not_set 商户订单号(out_trade_no)未设置 商户订单号为必传参数 请检查商户订单号(out_trade_no)是否为空
transaction_id_not_set 微信订单号(transaction_id)未设置 微信订单号(transaction_id)为必传参数 请检查微信订单号(transaction_id)是否为空
invalid_transaction_id 无效的微信订单号长度 微信订单号为28位数字,请确保长度一致 请检查微信订单号(transaction_id)是否正确
customs_not_set 海关信息未设置 海关信息为必传字段 请检查海关信息是否为空
chcustomsno_not_set 海关备案号未设置 海关备案号为必传字段 请检查备案号是否为空
invalid_mchcustomsno 无效的海关备案号长度 海关备案号一般为6位字符串 请检查海关备案号是否正确
payfee_not_match 金额不匹配 报关的订单金额必须和支付的金额一致 请检查报关订单的金额是否正确
invalid_suborder_no 无效的子订单号长度(sub_order_no) 子订单号要求是32位以内的字符串 请检查子订单号长度是否正确
appid_not_exist appid未设置(sub_order_no) appid为必传字段 请检查appid是否正确
mchid_not_exist 商户号(mch_id)未设置 mch_id为必传字段 请检查mch_id是否正确
authority_not_found 未开通自助清关功能 须先开通自助清关功能才可成功调用接口 请检查是否已开通自助清关功能,开通路径:微信支付商户平台-产品中心-自助清关中申请开通。
no_auth 无权限 未获得此接口的调用权限 请检查当前商户号是否已获得此接口的调用权限
二、sdk实现sdk定义
三、调用方式
三、返回结果发送数据如下
array(6) { ["appid"]=> string(18) "wxa8092dd025e45123" ["mch_id"]=> string(10) "1238298123" ["out_trade_no"]=> string(22) "sh20160824095750086988" ["transaction_id"]=> string(28) "4006742001201608242098415582" ["customs"]=> string(6) "ningbo" ["mch_customs_no"]=> string(10) "3302461123" }
接收到的数据如下
array(12) { ["return_code"]=> string(7) "success" ["return_msg"]=> string(6) "成功" ["sign"]=> string(32) "91efceeaad4322f331f3f63c4d8f1279" ["appid"]=> string(18) "wxa8092dd025e45123" ["mch_id"]=> string(10) "1238298123" ["result_code"]=> string(7) "success" ["err_code"]=> string(1) "0" ["err_code_des"]=> string(2) "ok" ["state"]=> string(9) "submitted" ["transaction_id"]=> string(28) "4006742001201608242098415582" ["out_trade_no"]=> string(22) "sh20160824095750086988" ["modify_time"]=> string(14) "20160825111049" }
以上就是微信公众平台开发微信支付报关接口 的详细内容。