步驟1 請(qǐng)求支付中簽約接口(參數(shù)見請(qǐng)求參數(shù)),獲取預(yù)支付id(對(duì)應(yīng)參數(shù):prepay_id)此步驟需要根據(jù)不同支付方式選擇不同的trade_type(trade_type詳細(xì)介紹請(qǐng)參見交易類型規(guī)則)。
步驟2 按照不同支付方式的不同規(guī)則,按要求喚起微信支付收銀臺(tái),不同的支付方式,對(duì)于喚起微信支付收銀臺(tái)的方法要求不同,具體可以參見以下表格:
掃碼支付(NATIVE)詳見: | 掃碼支付(NATIVE)在線文檔 |
---|---|
公眾號(hào)支付(JSAPI)詳見: | 公眾號(hào)支付(JSAPI)在線文檔 |
App支付(APP)詳見: | App支付(APP)在線文檔 |
H5(MWEB)支付詳見: | H5(MWEB)在線文檔 |
小程序(JSAPI)支付詳見: | 小程序支付在線文檔 |
步驟3 用戶完成支付,微信通過支付中簽約接口中商戶上傳的通知回調(diào)地址(對(duì)應(yīng)參數(shù):notify_url),將支付結(jié)果返回給商戶,同時(shí)將簽約結(jié)果通過contract_notify_url通知給商戶,兩次通知皆為異步通知。
適用對(duì)象:直連商戶
請(qǐng)求URL: https://api.mch.weixin.qq.com/pay/contractorder
請(qǐng)求方式: POST
是否需要證書: 否
參數(shù)名 | 變量 | 類型[長(zhǎng)度限制] | 必填 | 描述 |
---|---|---|---|---|
應(yīng)用ID | appid | string[1,32] | 是 | 由微信生成的應(yīng)用ID,全局唯一。 請(qǐng)求查單接口時(shí)請(qǐng)注意APPID的應(yīng)用屬性,例如公眾號(hào)場(chǎng)景下,需使用應(yīng)用屬性為公眾號(hào)的APPID 示例值:wxcbda96de0b165486 |
商戶號(hào) | mch_id | string[1,32] | 是 | 商戶號(hào)是商戶在微信申請(qǐng)微信支付成功后分配的賬號(hào)ID,登錄平臺(tái)為www.tg885.com 示例值:1200009811 |
簽約商戶號(hào) | contract_mchid | string[1,32] | 是 | 簽約商戶號(hào),必須與mch_id一致 示例值:1200009811 |
簽約appid | contract_appid | string[1,32] | 是 | 簽約公眾號(hào),必須與appid一致 示例值:wxcbda96de0b165486 |
商戶訂單號(hào) | out_trade_no | string[1,32] | 是 | 商戶系統(tǒng)內(nèi)部的訂單號(hào),32個(gè)字符內(nèi)、可包含字母,其他說明見商戶訂單號(hào) 示例值:123456 |
設(shè)備號(hào) | device_info | string[1,32] | 否 | 終端設(shè)備號(hào)(門店號(hào)或收銀設(shè)備ID),注意:PC網(wǎng)頁或公眾號(hào)內(nèi)支付請(qǐng)傳"WEB" 示例值:013467007045764 |
隨機(jī)字符串 | nonce_str | string[1,32] | 是 | 隨機(jī)字符串,不長(zhǎng)于32位. 示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
商品描述 | body | string[1,127] | 是 | 商品或支付單簡(jiǎn)要描述 示例值:Ipad mini 16G 白色 |
商品詳情 | detail | string[1,8192] | 否 | 商品名稱明細(xì)列表 示例值:Ipad mini 16G 白色 |
附加數(shù)據(jù) | attach | string[1,127] | 否 | 附加數(shù)據(jù),在查詢API和支付通知中原樣返回,該字段主要用于商戶攜帶訂單的自定義數(shù)據(jù) 示例值:深圳分店 |
回調(diào)通知url | notify_url | string[1,256] | 是 | 回調(diào)通知地址,以http或https開頭,通知url必須為外網(wǎng)可訪問的url,不能攜帶參數(shù)。 示例值:https://weixin.qq.com |
總金額 | total_fee | int | 是 | 訂單總金額,單位為分 示例值:888 |
終端IP | spbill_create_ip | string[1,16] | 是 | 用戶的客戶端IP ,支持IPV4,目前不支持ipv6 示例值:123.12.12.123 |
交易起始時(shí)間 | time_start | string[1,14] | 否 | 訂單生成時(shí)間,格式為yyyyMMddHHmmss,如2009年12月25日9點(diǎn)10分10秒表示為20091225091010. 其他詳見時(shí)間規(guī)則 示例值:20091225091010 |
交易結(jié)束時(shí)間 | time_expire | string[1,14] | 否 | 訂單失效時(shí)間,格式為yyyyMMddHHmmss,如2009年12月27日9點(diǎn)10分10秒表示為20091227091010. 其他詳見時(shí)間規(guī)則 示例值:20091227091010 |
商品標(biāo)記 | goods_tag | string[1,32] | 否 | 商品標(biāo)記,代金券或立減優(yōu)惠功能的參數(shù) 示例值:WXG |
交易類型 | trade_type | string[1,16] | 是 | 取值如下:JSAPI,NATIVE,APP,MWEB 示例值:JSAPI |
商品ID | product_id | string[1,32] | 否 | trade_type=NATIVE,此參數(shù)必傳. 此id為二維碼中包含的商品ID,商戶自行定義. 示例值:12235413214070356458058 |
指定支付方式 | limit_pay | string[1,32] | 否 | no_credit:指定不能使用信用卡支付 示例值:no_credit |
用戶標(biāo)識(shí) | openid | string[1,128] | 否 | trade_type=JSAPI,此參數(shù)必傳,用戶在商戶appid下的唯一標(biāo)識(shí). 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o |
模板id | plan_id | int | 是 | 協(xié)議模板id 示例值:123 |
簽約協(xié)議號(hào) | contract_code | string[1,64] | 是 | 商戶側(cè)的簽約協(xié)議號(hào),由商戶生成,只能是數(shù)字、大小寫字母的描述。 示例值:100001256 |
請(qǐng)求序列號(hào) | request_serial | int 64 | 是 | 商戶請(qǐng)求簽約時(shí)的序列號(hào),要求唯一性。禁止使用0開頭,序列號(hào)主要用于排序,不作為查詢條件,純數(shù)字,范圍不能超過int 64的范圍(9223372036854775807)。 示例值:1695 |
用戶賬戶展示名稱 | contract_display_account | string[1,64] | 是 | 簽約用戶的名稱,用于頁面展示,參數(shù)值不支持UTF8非3字節(jié)編碼的字符,例如表情符號(hào),所以請(qǐng)勿傳微信昵稱到該字段 示例值:123 |
簽約信息通知url | contract_notify_url | string[1,256] | 是 | 簽約信息回調(diào)通知的url,以http或https開頭,通知url必須為外網(wǎng)可訪問的url,不能攜帶參數(shù)。 示例值:https://yoursite.com |
簽名 | sign | string[1,32] | 是 | 簽名規(guī)則詳見簽名生成算法 注:所有參數(shù)都是encode前做簽名 示例值:E1EE61A91C8E90F299DE6AE075D60A2D |
<xml>?
<appid>wxcbda96de0b165486</appid> ?
<mch_id>1200009811</mch_id>
<contract_mchid>1200009811</contract_mchid> ?
<contract_appid>wxcbda96de0b165486</contract_appid>
<out_trade_no>123456</out_trade_no>
<device_info>013467007045764</device_info>
<nonce_str>5K8264ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str>
<body>Ipad mini 16G 白色</body>
<detail>Ipad mini 16G 白色</detail>
<notify_url>https://weixin.qq.com</notify_url>
<total_fee>888</total_fee>
<spbill_create_ip>123.12.12.123</spbill_create_ip>
<trade_type>JSAPI</trade_type>
<plan_id>123</plan_id>
<contract_code>100001256</contract_code>
<request_serial>1000</request_serial>
<contract_display_account>微信代扣</contract_display_account>
<contract_notify_url>https://yoursite.com</contract_notify_url>
<sign>C380BEC2BFD727A4B6845133519F3AD6</sign>
</xml>
參數(shù)名 | 變量 | 類型[長(zhǎng)度限制] | 必填 | 描述 |
---|---|---|---|---|
返回狀態(tài)碼 | return_code | string[1,16] | 是 | SUCCESS/FAIL 示例值:SUCCESS |
返回信息 | return_msg | string[1,128] | 否 | 返回信息,如非空,為錯(cuò)誤原因 如:簽名失敗 等。 示例值:簽名失敗 |
以下字段在return_code為SUCCESS的時(shí)候有返回
參數(shù)名 | 變量 | 類型[長(zhǎng)度限制] | 必填 | 描述 |
---|---|---|---|---|
業(yè)務(wù)結(jié)果 | result_code | string[1,16] | 是 | SUCCESS/FAIL 示例值:SUCCESS |
應(yīng)用ID | appid | string[1,32] | 是 | 直連商戶申請(qǐng)的公眾號(hào)或移動(dòng)應(yīng)用appid。 示例值:wxcbda96de0b165486 |
商戶號(hào) | mch_id | string[1,32] | 是 | 商戶號(hào)是商戶在微信申請(qǐng)微信支付成功后分配的賬號(hào)ID,登錄平臺(tái)為www.tg885.com 示例值:1200009811 |
隨機(jī)字符串 | nonce_str | string[1,32] | 是 | 隨機(jī)字符串,不長(zhǎng)于32位. 示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
簽名 | sign | string[1,32] | 是 | 簽名規(guī)則詳見簽名生成算法 注:所有參數(shù)都是encode前做簽名. 示例值:E1EE61A91C8E90F299DE6AE075D60A2D |
錯(cuò)誤代碼 | err_code | string[1,32] | 否 | 錯(cuò)誤返回的錯(cuò)誤代碼 示例值:SYSTEMERROR |
錯(cuò)誤代碼描述 | err_code_des | string[1,128] | 否 | 錯(cuò)誤返回的信息描述 示例值:系統(tǒng)錯(cuò)誤 |
預(yù)簽約結(jié)果 | contract_result_code | string[1,16] | 是 | 預(yù)簽約結(jié)果 示例值:SUCCESS |
預(yù)簽約錯(cuò)誤代碼 | contract_err_code | string[1,32] | 否 | 預(yù)簽約錯(cuò)誤代碼 示例值:Fail |
預(yù)簽約錯(cuò)誤描述 | contract_err_code_des | string[1,32] | 否 | 預(yù)簽約錯(cuò)誤描述 示例值:已簽約 |
以下字段在return_code 和result_code都為SUCCESS的時(shí)候有返回
參數(shù)名 | 變量 | 類型[長(zhǎng)度限制] | 必填 | 描述 |
---|---|---|---|---|
簽名 | sign | string[1,32] | 是 | 詳見簽名生成算法 示例值:C380BEC2BFD727A4B6845133519F3AD6 |
公眾賬號(hào)id | appid | string[1,32] | 是 | 微信支付分配的公眾賬號(hào)id 示例值:wxcbda96de0b165486 |
商戶號(hào) | mch_id | string[1,32] | 是 | 微信支付分配的商戶號(hào) 示例值:10000098 |
預(yù)支付交易會(huì)話標(biāo)識(shí) | prepay_id | string[1,64] | 是 | 微信生成的預(yù)支付回話標(biāo)識(shí),用于后續(xù)接口調(diào)用中使用,該值有效期為2小時(shí). 示例值:wx201410272009395522657a690389285100 |
交易類型 | trade_type | string[1,16] | 是 | 調(diào)用接口提交的交易類型,取值如下:JSAPI,NATIVE,APP,MWEB 示例值:JSAPI |
二維碼鏈接 | code_url | string[1,64] | 否 | trade_type為NATIVE是有返回,可將該參數(shù)值生成二維碼展示出來進(jìn)行掃碼支付 示例值:weixin://wxpay/s/An4baqw |
模板id | plan_id | int | 否 | 商戶在微信商戶平臺(tái)設(shè)置的代扣協(xié)議模板id 示例值:123 |
請(qǐng)求序列號(hào) | request_serial | int 64 | 否 | 商戶請(qǐng)求簽約時(shí)的序列號(hào),商戶側(cè)須唯一,禁止使用0開頭 示例值:1695 |
簽約協(xié)議號(hào) | contract_code | string[1,64] | 否 | 商戶請(qǐng)求簽約時(shí)傳入的簽約協(xié)議號(hào),商戶側(cè)須唯一 示例值:1023658866 |
用戶賬戶展示名稱 | contract_display_account | string[1,64] | 否 | 簽約用戶的名稱,用于頁面展示 示例值:張三 |
支付跳轉(zhuǎn)鏈接 | mweb_url | string[1,64] | 否 | mweb_url為拉起微信支付收銀臺(tái)的中間頁面,可通過訪問該url來拉起微信客戶端,完成支付,mweb_url的有效期為5分鐘。 示例值:https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241 |
商戶訂單號(hào) | out_trade_no | string[1,32] | 是 | 商戶訂單號(hào) 示例值:123456 |
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<result_code><![CDATA[SUCCESS]]></result_code>
<appid><![CDATA[wxcbda96de0b165486]]></appid>
<mch_id><![CDATA[1200009811]]></mch_id>
<prepay_id><![CDATA[wx201410272009395522657a690389285100]]></prepay_id>
<sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>
<trade_type><![CDATA[JSAPI]]></trade_type>
<code_url><![CDATA[weixin://wxpay/s/An4baqw]]></code_url>
<plan_id><![CDATA[123]]></plan_id>
<out_trade_no><![CDATA[123456]]></out_trade_no>
</xml>
錯(cuò)誤碼 | 描述 | 解決方案 |
---|---|---|
SIGN_ERROR | 簽名錯(cuò)誤 | 驗(yàn)證簽名算法 |
PARAMETER FAIL | 參數(shù)錯(cuò)誤 | 驗(yàn)證參數(shù) |
XML FAIL | XML格式錯(cuò)誤 | 檢查XML格式 |
RESULT NULL | 查詢?yōu)榭? | 傳入正確查詢參數(shù) |
MERCHANT PERMISSION ERROR | 受理商戶沒有權(quán)限 | 確認(rèn)商戶權(quán)限 |
INVALID PLAN_ID | 簽約模板無效 | 檢查正確模板id |
CONTRACT_CODE DUPLICATION | 該簽約號(hào)已存在 | contract_code已經(jīng)被簽約,請(qǐng)傳入不重復(fù)的簽約號(hào) |
MERCHANT AUTHORITY ERROR | 商戶權(quán)限校驗(yàn)失敗 | 聯(lián)系相關(guān)接口人確認(rèn)委托代扣權(quán)限 |