微信公眾平台開發微信支付報關接口

高洛峰
發布: 2017-03-08 16:49:05
原創
3977 人瀏覽過

本文介紹微信支付下的報關介面的開發流程。微信報關是用於商家提交海關所需的訂單資訊。

一、報關介面API


#介面位址

https://api.mch.weixin.qq.com/cgi-bin/mch/customs/customdeclareorder
登入後複製

是否需要憑證

不需要。


要求方式:post 資料格式:xml 簽章方式:MD5

注意:商家訂單號碼金額以支付系統記錄的為準,無需上傳,如有子訂單號碼則必須上傳子訂單應付金額、物流費、商品價格(應付金額=物流費+商品價格)。

##類型範例值說明簽章sign是簽名,詳見簽名產生演算法」公用帳號ID ##是String(32)wxd678efh567hg6787微信分配的公用帳號ID#商家號碼mch_id是String(32)1230000109微信支付分配的商家號碼 #商家訂單號碼out_trade_no是String(32)20150806125346商家系統內部的訂單號碼微信支付訂單號碼transaction_id是String(28)1000320306201511078440737890#微信支付回傳的訂單號碼海關customsSHANGHAI 上海ZHENGZHOU_ZH 鄭州(綜保區)SHENZHEN 深圳##String(32)123456 #商家在海關登記的備案號,customs非NO,此參數必備#關稅#duty# Int888關稅,以分為單位
欄位名稱 變數名稱 必填
String(32) C380BEC2BFD727A4B6845133519F3AD6
#「公用帳號ID appid

##String(32)

SHANGHAI

NO 無需上報海關

GUANGZHOU 廣州

HANGZHOU 杭州

NINGBO 寧波

ZHENGZHOU_BS 鄭州(保稅物流中心)

CHONGQING 重慶

XIAN 西安

#商家海關備案編號 mch_customs_no

#以下欄位在拆單或重新報關時必傳欄位名稱變數名稱#必填類型範例值描述商家子訂單號sub_order_no商戶子訂單號,如有拆單則必傳微信支付訂單支付時使用的幣種,暫只支持人民幣CNY,如有拆單則必傳。 子訂單金額,以分為單位,不能超過原訂單金額,order_fee=transport_fee+product_fee(應付金額=物流費+商品價格),如有拆單則必傳。 物流費用,以分為單位,如有拆單則必傳。 商品費用,以分為單位,如有拆單則必傳。
##否 String (32) 20150806125346
幣種 fee_type String(3) CNY
應付金額 order_fee #Int 888
物流費 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_codeString(16)SUCCESS

SUCCESS/FAIL

此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断

返回信息return_msgString(128)签名失败

返回信息,如非空,为错误原因

签名失败

参数格式校验错误

以下字段在return_code为SUCCESS的时候有返回

字段名变量名必填类型示例值描述
签名类型sign_typeString(32)MD5暂只支持MD5
签名signString(32)C380BEC2BFD727A4B6845133519F3AD6签名,详见签名生成算法
公众账号IDappidString(32)wxd678efh567hg6787微信分配的公众账号ID
商户号mch_idString(32)1230000109微信支付分配的商户号
业务结果result_codeString(16)SUCCESSSUCCESS/FAIL
错误代码err_codeString(32)SYSTEMERROR详细参见错误列表
错误代码描述err_code_desString(128)系统错误错误返回的信息描述

以下字段在return_code 和result_code都为SUCCESS的时候有返回

字段名变量名必填类型示例值描述
状态码stateString(2)UNDECLARED

状态码

UNDECLARED -- 未申报

SUBMITTED -- 申报已提交(订单已经送海关,商户重新申报,并且海关还有修改接口,那么记录的状态会是这个)

PROCESSING -- 申报中

SUCCESS -- 申报成功

FAIL-- 申报失败

EXCEPT --海关接口异常

微信支付订单号transaction_idString(28)1000320306201511078440737890微信支付返回的订单号
商户订单号out_trade_noString(32)20150806125346商户系统内部的订单号
商户子订单号sub_order_noString(32)20150806125346商户子订单号,如有拆单则必传
微信子订单号sub_order_idString(32)20150806125346微信子订单号
最后更新时间modify_timeString(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"
}
登入後複製

 

以上是微信公眾平台開發微信支付報關接口的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板