微信公众平台开发微信支付报关接口
本文介绍微信支付下的报关接口的开发过程。微信报关是用于商户提交海关需要的订单信息。 一、报关接口API接口地址
https://api.mch.weixin.qq.com/cgi-bin/mch/customs/customdeclareorder
是否需要证书
不需要。
请求方式:post 数据格式:xml 签名方式:MD5
注意:商户订单号金额以支付系统记录的为准,无需上传,如有子订单号则必须上传子订单应付金额、物流费、商品价格(应付金额=物流费+商品价格)。 字段名变量名必填类型示例值说明签名sign是String(32)C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法公众账号IDappid是String(32)wxd678efh567hg6787微信分配的公众账号ID商户号mch_id是String(32)1230000109微信支付分配的商户号商户订单号out_trade_no是String(32)20150806125346商户系统内部的订单号微信支付订单号transaction_id是String(28)1000320306201511078440737890微信支付返回的订单号海关customs是String(32)SHANGHAINO 无需上报海关
GUANGZHOU 广州
HANGZHOU 杭州
NINGBO 宁波
ZHENGZHOU_BS 郑州(保税物流中心)
CHONGQING 重庆
XIAN 西安
SHANGHAI 上海
ZHENGZHOU_ZH 郑州(综保区)
SHENZHEN 深圳商户海关备案号mch_customs_no否String(32)123456商户在海关登记的备案号,customs非NO,此参数必填关税duty否Int888关税,以分为单位以下字段在拆单或重新报关时必传
字段名变量名必填类型示例值描述商户子订单号sub_order_no否String(32)20150806125346商户子订单号,如有拆单则必传币种fee_type否String(3)CNY微信支付订单支付时使用的币种,暂只支持人民币CNY,如有拆单则必传。应付金额order_fee否Int888子订单金额,以分为单位,不能超过原订单金额,order_fee=transport_fee+product_fee(应付金额=物流费+商品价格),如有拆单则必传。物流费transport_fee否Int888物流费用,以分为单位,如有拆单则必传。商品价格product_fee否Int888商品费用,以分为单位,如有拆单则必传。
以下字段在微信缺少用户信息时必传,如果商户上传了用户信息,则以商户上传的信息为准。
字段名变量名必填类型示例值描述证件类型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)SUCCESSSUCCESS/FAIL
此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断返回信息return_msg否String(128)签名失败返回信息,如非空,为错误原因
签名失败
参数格式校验错误
以下字段在return_code为SUCCESS的时候有返回
字段名变量名必填类型示例值描述签名类型sign_type是String(32)MD5暂只支持MD5签名sign是String(32)C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法公众账号IDappid是String(32)wxd678efh567hg6787微信分配的公众账号ID商户号mch_id是String(32)1230000109微信支付分配的商户号业务结果result_code是String(16)SUCCESSSUCCESS/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_EXISTAppId未设置(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"}以上就是微信公众平台开发微信支付报关接口 的详细内容,更多请关注小潘博客其它相关文章!