微信H5支付流程


1、用戶在商戶側(cè)完成下單,使用微信支付進行支付

2、由商戶后臺向微信支付發(fā)起下單請求(調(diào)用統(tǒng)一下單接口)注:交易類型trade_type=MWEB

3、統(tǒng)一下單接口返回支付相關(guān)參數(shù)給商戶后臺,如支付跳轉(zhuǎn)url(參數(shù)名“mweb_url”),商戶通過mweb_url調(diào)起微信支付中間頁

4、中間頁進行H5權(quán)限的校驗,安全性檢查(此處常見錯誤請見下文)

5、如支付成功,商戶后臺會接收到微信側(cè)的異步通知

6、用戶在微信支付收銀臺完成支付或取消支付,返回商戶頁面(默認(rèn)為返回支付發(fā)起頁面)

7、商戶在展示頁面,引導(dǎo)用戶主動發(fā)起支付結(jié)果的查詢

8,9、商戶后臺判斷是否接收到微信側(cè)的支付結(jié)果通知,如沒有,后臺調(diào)用我們的訂單查詢接口確認(rèn)訂單狀態(tài)(查單實現(xiàn)可參考:支付回調(diào)和查單實現(xiàn)指引

10、展示最終的訂單支付結(jié)果給用戶
常見問題
一、回調(diào)頁面

正常流程用戶支付完成后會返回至發(fā)起支付的頁面,如需返回至指定頁面,則可以在MWEB_URL后拼接上redirect_url參數(shù),來指定回調(diào)頁面。

如,您希望用戶支付完成后跳轉(zhuǎn)至https://www.wechatpay.com.cn,則可以做如下處理:

假設(shè)您通過統(tǒng)一下單接口獲到的MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096

則拼接后的地址為MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096&redirect_url=https%3A%2F%2Fwww.wechatpay.com.cn

注意:
1.需對redirect_url進行urlencode處理

2.由于設(shè)置redirect_url后,回跳指定頁面的操作可能發(fā)生在:
a、微信支付中間頁調(diào)起微信收銀臺后超過5秒
b、用戶點擊“取消支付”或支付完成后點擊“完成”按鈕。因此無法保證頁面回跳時,支付流程已結(jié)束,所以商戶設(shè)置的redirect_url地址不能自動執(zhí)行查單操作,應(yīng)讓用戶去點擊按鈕觸發(fā)查單操作?;靥撁嬲故拘Ч蓞⒖枷聢D


二、其它常見錯誤

序號 問題 錯誤描述 解決方法
1
image

| 網(wǎng)絡(luò)環(huán)境未能通過安全驗證,請稍后再試 | 1. 商戶側(cè)統(tǒng)一下單傳的終端IP(spbill_create_ip)與用戶實際調(diào)起支付時微信側(cè)檢測到的終端IP不一致導(dǎo)致的,這個問題一般是商戶在統(tǒng)一下單時沒有傳遞正確的終端IP到spbill_create_ip導(dǎo)致,詳細(xì)可參見客戶端ip獲取指引

2. 統(tǒng)一下單與調(diào)起支付時的網(wǎng)絡(luò)有變動,如統(tǒng)一下單時是WIFI網(wǎng)絡(luò),下單成功后切換成4G網(wǎng)絡(luò)再調(diào)起支付,這樣可能會引發(fā)我們的正常攔截,請保持網(wǎng)絡(luò)環(huán)境一致的情況下重新發(fā)起支付流程

|
| 2 |

image

| 商家參數(shù)格式有誤,請聯(lián)系商家解決 |

1. 當(dāng)前調(diào)起H5支付的referer為空導(dǎo)致,一般是因為直接訪問頁面調(diào)起H5支付,請按正常流程進行頁面跳轉(zhuǎn)后發(fā)起支付,或自行抓包確認(rèn)referer值是否為空

2. 如果是APP里調(diào)起H5支付,需要在webview中手動設(shè)置referer,如(
Map<string> extraHeaders = new HashMap<string>();
extraHeaders.put("Referer", "商戶申請H5時提交的授權(quán)域名");//例如 http://www.baidu.com )</string></string>

|
| 3 |

image

| 商家存在未配置的參數(shù),請聯(lián)系商家解決 | 1,當(dāng)前調(diào)起H5支付的域名(微信側(cè)從referer中獲?。┡c申請H5支付時提交的授權(quán)域名不一致,如需添加或修改授權(quán)域名,請登錄商戶號對應(yīng)的【商戶平臺->產(chǎn)品中心->開發(fā)配置】自行配置

2,如果設(shè)置了回跳地址redirect_url,請確認(rèn)設(shè)置的回跳地址的域名與申請H5支付時提交的授權(quán)域名是否一致 |
| 4 |

image

| 支付請求已失效,請重新發(fā)起支付 | 統(tǒng)一下單返回的MWEB_URL生成后,有效期為5分鐘,如超時請重新生成MWEB_URL后再發(fā)起支付 |
| 5 |

image

| 請在微信外打開訂單,進行支付 | H5支付不能直接在微信客戶端內(nèi)調(diào)起,請在外部瀏覽器調(diào)起 |
| 6 |

image

| IOS:簽名驗證失敗
安卓:系統(tǒng)繁忙,請稍后再試 | 1,請確認(rèn)同一個MWEB_URL只被一個微信號調(diào)起,如果不同微信號調(diào)起請重新下單生成新的MWEB_URL

2,如MWEB_URL有添加redirect_url,請確認(rèn)參數(shù)拼接格式是否有誤,是否有對redirect_url的值做urlencode,可對比以下例子格式:

https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096&redirect_url=https%3A%2F%2Fwww.wechatpay.com.cn |
|

image

|
| 7 |

image

| 由于商家傳入的H5交易參數(shù)有誤,該筆交易暫時無法完成,請聯(lián)系商家解決 | 統(tǒng)一下單中 spbill_create_ip 字段必須為客戶端IP地址 |

三、QA

Q1:
1、傳遞redirect_url safari瀏覽器時支付完成后會新開一個頁面;
2、還有就是有些ios手機使用其他瀏覽器支付完成后默認(rèn)會回到safari瀏覽器。

A1:
1、目前邏輯就是這樣設(shè)計的,防止商戶無限循環(huán)調(diào)用微信客戶端
2、對的,返回需要瀏覽器的schema信息,部分瀏覽器隱藏了這個信息,在無法拿到schema信息的情況下,就會回到safari瀏覽器

微信H5支付文檔

微信其他支付文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容