6 公眾帳號支付接口

6.1 初始化請求接口

6.1.1 業務功能

初始化 JSAPI 請求,通過生成 token_id 來進行交互驗證。

6.1.2 交互模式

請求:後臺請求交互模式

返回結果+通知:後臺請求交互模式+後臺通知交互模式

6.1.3 請求參數列表


請求 url:https://gateway.wepayez.com/pay/gateway


POST XML 內容體進行請求

字段名變數名必填類型說明
接口類型serviceString(32)接口類型:pay.weixin.native.intl
版本號versionString(8)版本號,version 默認值是 2.0
字元集charsetString(8)字元集,取值:UTF-8
簽名方式sign_typeString(8)簽名類型,取值:MD5
商戶號mch_idString(32)商戶號,由平臺分配
是否原生態is_rawString(1)值為 1:是;值為 0:否;不傳默認是 0 注:如對接小程序,固定值:1
商戶訂單號out_trade_noString(32)商戶系統內部的訂單號 ,32 個字元內、可包含字母、數字、下劃線,確保在商戶系統唯一
設備號device_infoString(32)終端設備號
商品描述bodyString(127)商品描述
用戶openidsub_openidString(128)微信用戶關注商家公眾號的openid(注:使用測試號時此參數置空,即不要傳這個參數,使用正式商戶號時才傳入,參數名是 sub_openid,具體請看文檔最後注意事項第 7 點)
公眾帳號sub_appidString(32)當發起公眾號支付時,值是微信公眾平臺基本配置中的 AppID(應用 ID)
附加資訊attachString(127)商戶附加資訊,可做擴展參數
總金額total_feeInt金額,以支付貨幣為准,以分為單位。如支付貨幣為港幣,1000表示HKD10.00。測試商戶號最大限額100分/筆(即 1 元/筆)
終端 IPmch_create_ipString(16)訂單生成的機器 IP
通知地址notify_urlString(255)接收平臺通知的URL,需給絕對路徑,255字元內格式如:http://wap.tenpay.com/tenpay.asp,確保平臺能通過互聯網訪問該地址
前臺地址callback_urlString(255)交易完成後跳轉的 URL,需給絕對路徑,255 字元內格式如:http://wap.tenpay.com/callback.asp,注:該地址只作為前端頁面的一個跳轉,需使用notify_url通知結果作為支付最終結果。此參數只在非原生態形式下才有效。
訂單生成時間time_startString(14)訂單生成時間,格式為 yyyyMMddHHmmss,如2009年12月25日9點10分10碼錶示為20091225091010。時區為 GMT+8 beijing。
訂單超時時間time_expireString(14)訂單失效時間,格式為yyyyMMddHHmmss,如2009年12月27日9點10分10碼錶示為20091227091010。時區為 GMT+8 beijing。
商品標記goods_tagString(32)商品標記,微信平臺配置的商品標記,用於優惠券或者滿減使用
隨機字串nonce_strString(32)隨機字串,不長於 32 位
是否限制信用卡limit_credit_payString(32)限定用戶使用微信支付時能否使用信用卡,值為1,禁用信用卡;值為0或者不傳此參數則不禁用
簽名signString(32)MD5 簽名結果,詳見“第 4 章 MD5 簽名規則”

6.1.4 返回結果

數據按 XML 的格式即時返回

字段名變數名必填類型說明
公眾帳號 IDappidString(32)服務商公眾號 APPID
版本號versionString(8)版本號,version 默認值是 2.0。
字元集charsetString(8)字元集,取值:UTF-8
簽名方式sign_typeString(8)簽名類型,取值:MD5
返回狀態碼statusString(16)0表示成功非0表示失敗。此字段是通信標識,非交易標識 ,交易是否成功需要查看result_code來判斷
返回資訊messageString(128)返回資訊,如非空,為錯誤原因簽名失敗參數格式校驗錯誤

以下字段在 status 為 0 的時候有返回

字段名變數名必填類型說明
業務結果result_codeString(16)0 表示成功非 0 表示失敗
商戶號mch_idString(32)商戶號,由平臺分配
設備號device_infoString(32)終端設備號
隨機字串nonce_strString(32)隨機字串,不長於 32 位
錯誤代碼err_codeString(32)參考錯誤碼
錯誤代碼描述err_msgString(128)結果資訊描述
簽名signString(32)MD5 簽名結果,詳見“第 4 章 MD5 簽名規則”

以下字段在 status 和 result_code 都為 0 的時候有返回

字段名變數名必填類型說明
動態口令token_idString(64)平臺生成的預支付 ID,用於後續接口調用中使用原生態 js
支付資訊pay_infoString原生態 js 支付:is_raw 為 1 時返回,json 格式的字串,作用於原生態 js 支付時的參數

6.2 原生態 js 支付接口

6.2.1 使用示例

接口需要注意:**所有傳入參數都是字串類型!**使用 JavaScript、PHP 等弱類型語言需 要關注一下。

示例代碼如下:

WeixinJSBridge.invoke('getBrandWCPayRequest',{
"appId" : "wx2421b1c4370ec43b", //公眾號名稱,由商戶傳入
"timeStamp":" 1395712654", //時間戳,自 1970 年以來的秒數
"nonceStr" : "e61463f8efa94090b1f366cccfbbb444", //隨機串
"package" : "prepay_id=u802345jgfjsdfgsdg888",
"signType" : "MD5", //微信簽名方式:
"paySign" : "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名
},function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {}
// 使用以上方式判斷前端返回,微信團隊鄭重提示:res.err_msg 將在用戶支付成功後返回 ok,但並
不保證它絕對可靠。
});

getBrandWCPayRequest 參數以及返回值定義

6.2.2 交互模式

請求:後臺請求交互模式

返回結果+通知:後臺請求交互模式+後臺通知交互模式

6.2.3 請求參數列表

字段名變數名必填類型說明
公眾號 idappIdString對應初始化請求中返回的 pay_info 中的資訊
時間戳timeStampString對應初始化請求中返回的 pay_info 中的資訊
隨機字串nonceStrString對應初始化請求中返回的 pay_info 中的資訊
訂單詳情擴展字串packageString對應初始化請求中返回的 pay_info中的資訊
簽名方式signTypeString對應初始化請求中返回的 pay_info 中的資訊
簽名paySignString 對應初始化請求中返回的 pay_info 中的資訊

返回結果

返回值说明
err_msgget_brand_wcpay_request:ok 支付成功
get_brand_wcpay_request:cancel 支付過程中用戶取消
get_brand_wcpay_request:fail 支付失敗

注:JS API 的返回結果 get_brand_wcpay_request:ok 僅在用戶成功完成支付時返回。由 於前端交互複雜,get_brand_wcpay_request:cancel 或者 get_brand_wcpay_request:fail 可以統 一處理為用戶遇到錯誤或者主動放棄,不必細化區分。

注:商戶實現原生態頁面的請求地址必須提供支付授權目錄由服務商配置好,在微信提供的測試公眾帳號上無 法調起支付(測試時可以在手機微信端檔傳輸助手中進行)。

6.3 公眾帳號 JS 支付接口

6.3.1 業務功能

初始化 JSAPI 請求,通過生成 token_id 來進行交互驗證。 如調用時是用的原生態 js 支付,此接口可以忽略

6.3.2 交互模式

請求:後臺請求交互模式

返回結果+通知:後臺請求交互模式+後臺通知交互模式

6.3.3 請求參數列表


請求 url:https://gateway.wepayez.com/pay/jsIntl


該請求參數為 http queryString,即: https://gateway.wepayez.com/pay/jsIntl?token_id=xxx,如https://gateway.wepayez.com/pay/jsIntl?token_id=9a0610bc519e782e6275e8c7dd94a445

在服務號中點擊這個鏈接就可調起支付(用戶點擊頁面中的微信支付按鈕時實際上就是點擊的這 個鏈接,此種方式需配置固定的支付授權目錄:https://gateway.wepayez.com/pay/, 但不用像原生態 jsapi 支付那樣獲取那些參數後續的操作,測試時可以將組裝好的這個鏈接放到 手機微信端檔傳輸助手點擊調起支付接口

字段名變數名必填類型說明
動態口令token_idString(64)平臺生成的預支付 ID,用於後續接口調用中使用

注:組裝的請求鏈接在微信提供的測試公眾帳號上無法調起支付。

6.4 JS 支付通知接口

6.4.1 通知結果參數列表

通知 URL 是 6.1 節中提交的參數 notify_url, 支付完成後,平臺會把相關支付和用戶資訊發送到該 URL,商戶需要接收處理資訊。對後臺通知交互時,如果平臺收到商戶的應答不是純字串success或超過5秒後返回時,平臺認為通知失敗。平臺會通過一定的策略(通知頻率為0/15/15/30/180/1800/1800/1800/1800/3600,單位:秒)間接性重新發起通知,盡可能提高通知的成功率,但不保證通知最終能成功。

由於存在重新發送後臺通知的情況, 因此同樣的通知可能會多次發送給商戶系統。 商戶系統必須能夠正確處理重複的通知。

推薦的做法是,當收到通知進行處理時,首先檢查對應業務數據的狀態,判斷該通知是否已經處理過,如果沒有處理過再進行處理,如果處理過直接返回結果成功。 在對業務數據進行狀態檢查和處理之前, 要採用數據鎖進行併發控制, 以避免函數重入造成的數據混亂。

特別注意:商戶後臺接收到通知參數後,要對接收到通知參數裏的訂單號out_trade_no和訂單金額total_fee和自身業務系統的訂單和金額做校驗,校驗一致後才更新資料庫訂單狀態

後臺通知通過請求中的 notify_url 進行, post

字段名變數名必填類型說明
版本號versionString(8)版本號,version 默認值是 2.0。
字元集charsetString(8)字元集,取值:UTF-8
簽名方式sign_typeString(8)簽名類型,取值:MD5
返回狀態碼statusString(16)0表示成功非0表示失敗。此字段是通信標識,非交易標識 ,交易是否成功需要查看result_code來判斷
返回資訊messageString(128)返回資訊,如非空,為錯誤原因簽名失敗參數格式校驗錯誤

以下字段在 status 為 0 的時候有返回

字段名變數名必填類型說明
業務結果result_codeString(16)0 表示成功非 0 表示失敗
商戶號mch_idString(32)商戶號,由平臺分配
設備號device_infoString(32)終端設備號
隨機字串nonce_strString(32)隨機字串,不長於 32 位
錯誤代碼err_codeString(32)參考錯誤碼
錯誤代碼描述err_msgString(128)結果資訊描述
簽名signString(32)MD5 簽名結果,詳見“第 4 章 MD5 簽名規則”

以下字段在 status 和 result_code 都為 0 的時候有返回

字段名變數名必填類型說明
用戶標識openidString(128)用戶在服務商 appid 下的唯一標識
交易類型trade_typeString(32)pay.weixin.native.intl
是否關注公眾帳號is_subscribeString(1)用戶是否關注服務商公眾帳號,Y-關注,N未關注
支付結果pay_resultInt支付結果:0—成功;其他—失敗
支付結果資訊pay_infoString(64)支付結果資訊,支付成功時為空
平臺訂單號transaction_idString(32)平臺交易單號
第三方訂單號out_transaction_idString(32)第三方訂單號
是否關注商戶公眾號sub_is_subscribeString(1)用戶是否關注子公眾帳號,Y-關注,N-未關注,
商戶appidsub_appidString商戶公眾號appid
用戶 openidsub_openidString(128)用戶在商戶公眾號 appid 下的唯一標識
商戶訂單號out_trade_noString(32)商戶系統內部的定單號,32 個字元內、可包含字母、數字、下劃線
總金額total_feeInt總金額,以分為單位,不允許包含任何字、符號
現金券金額coupon_feeInt現金券支付金額<=訂單總金額, 訂單總金額-現金券金額為現金支付金額
貨幣種類fee_typeString(8)貨幣類型,符合 ISO 4217 標準的三位字母代碼
附加資訊attachString(127)商家數據包,原樣返回
付款銀行bank_typeString(16)銀行類型
銀行訂單號bank_billnoString(32)銀行訂單號,若為微信支付則為空
支付完成時間time_endString(14)支付完成時間,格式為yyyyMMddHHmmss,如2009年12月27日9點10分10碼錶示為20091227091010。時區為GMT+8 beijing。
現金支付金額cash_feeInt現金支付金額訂單現金支付金額,单位:分
現金支付貨幣類型cash_fee_typeString(16)貨幣類型,符合 ISO 4217 標準的三位字母代碼,CNY
匯率ratestring(16)用戶支付幣種與商戶結算幣種的兌換比例關係

6.4.2 後臺通知結果回饋

平臺伺服器發送通知,post發送XML數據流,商戶notify_Url地址接收通知結果,接收方法 demo 有寫(如php中的callback方法,c#中的notify.aspx檔,java中的TestPayResultSerlet方法),商戶做業務處理後,需要以純字串的形式回饋處理結果,內容如下:

返回值说明
success處理成功,平臺收到此結果後不再進行後續通知
fail 或其他字元處理不成功,平臺收到此結果或者沒有收到任何結果,系統通過補單機制(詳見第 5 節)再次通知

6.5 訂單查詢接口

6.5.1 業務功能

根據商戶訂單號或者平臺訂單號查詢平臺的具體訂單資訊

6.5.2 交互模式

後臺系統調用交互模式

6.5.3 請求參數列表


請求 url:https://gateway.wepayez.com/pay/gateway


通過 POST XML 內容體進行請求

字段名變數名必填類型說明
版本號versionString(8)版本號,version 默認值是 2.0。
字元集charsetString(8)字元集,取值:UTF-8
簽名方式sign_typeString(8)簽名類型,取值:MD5
返回狀態碼statusString(16)0表示成功非0表示失敗。此字段是通信標識,非交易標識 ,交易是否成功需要查看result_code來判斷
返回資訊messageString(128)返回資訊,如非空,為錯誤原因簽名失敗參數格式校驗錯誤

以下字段在 status 為 0 的時候有返回

字段名變數名必填類型說明
業務結果result_codeString(16)0 表示成功非 0 表示失敗
商戶號mch_idString(32)商戶號,由平臺分配
設備號device_infoString(32)終端設備號
隨機字串nonce_strString(32)隨機字串,不長於 32 位
錯誤代碼err_codeString(32)參考錯誤碼
錯誤代碼描述err_msgString(128)結果資訊描述
簽名signString(32)MD5 簽名結果,詳見“第 4 章 MD5 簽名規則”

以下字段在 status 和 result_code 都為 0 的時候有返回

字段名變數名必填類型說明
交易狀態trade_stateString(32)SUCCESS—支付成功 REFUND—轉入退款 NOTPAY—未支付 CLOSED—已關閉 REVERSE—已沖正 REVOK—已撤銷

以下字段在 trade_state 為 SUCCESS 的時候有返回

字段名變數名必填類型說明
用戶標識openidString(128)用戶在服務商 appid 下的唯一標識
交易類型trade_typeString(32)pay.weixin.native.intl
是否關注公眾帳號is_subscribeString(1)用戶是否關注服務商公眾帳號,Y-關注,N未關注
平臺訂單號transaction_idString(32)平臺交易單號
第三方訂單號out_transaction_idString(32)第三方訂單號
是否關注商戶公眾號sub_is_subscribeString(1)用戶是否關注子公眾帳號,Y-關注,N-未關注,
商戶訂單號out_trade_noString(32)商戶系統內部的定單號,32 個字元內、可包含字母、數字、下劃線
總金額total_feeInt總金額,以分為單位,不允許包含任何字、符號
現金券金額coupon_feeInt現金券支付金額<=訂單總金額, 訂單總金額-現金券金額為現金支付金額
貨幣種類fee_typeString(8)貨幣類型,符合 ISO 4217 標準的三位字母代碼
附加資訊attachString(127)商家數據包,原樣返回
付款銀行bank_typeString(16)銀行類型
銀行訂單號bank_billnoString(32)銀行訂單號,若為微信支付則為空
支付完成時間time_endString(14)支付完成時間,格式為yyyyMMddHHmmss,如2009年12月27日9點10分10碼錶示為20091227091010。時區為GMT+8 beijing。
現金支付金額cash_feeInt現金支付金額訂單現金支付金額,单位:分
現金支付貨幣類型cash_fee_typeString(16)貨幣類型,符合 ISO 4217 標準的三位字母代碼,CNY
匯率ratestring(16)用戶支付幣種與商戶結算幣種的兌換比例關係