看到微信最近放開了微信H5支付,公司決定把H5集成到多款APP上。下面記錄下了開發過程。
由於是微信新推出的支付方式,在網上搜索到的相關資料並不多,其中有一篇文章(點此跳轉)對我的整個開發過程起到了很大幫助,在此表示感謝。
首先去微信商戶后台去申請開通H5支付。
微信審核通過需要3至5個工作日。
我們假設支付域名填寫的 aaa.cn,注意是頂級域名,不是二級或三級的子域名。
服務器端通過統一下單接口從微信拿到支付跳轉鏈接(
https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20180115115052bedf091fba0369993002&package=2975002856),稱為mweb_url,有效期為5分鍾。
由於這里是APP調起支付,不是網頁H5發起支付,所以這里mweb_url值不需要再拼接上redirect_url參數。
然后移動端進行請求mweb_url,就會調起微信APP支付。
可能會出現以下問題:
“出現商家參數格式有誤,請聯系商家解決”

說明在請求mweb_url時referer為空導致,設置上就可以,這里我們設置最先在商戶后台注冊的aaa.cn的一個多級子域名,比如:b.aaa.cn。
如果不是設置商戶后台注冊的頂級域名的多級子域名,比如:b.ccc.cn。
就會出現“商家存在未配置的參數,請聯系商家解決”異常。

那就把ccc.cn注冊到商戶后台就可以解決了。
到目前為止,你就可能正常支付了,但支付成功后,並不能正常跳回原APP,嚴重影響了用戶體驗。
解決方案:把referer設置成:b.aaa.cn://,scheme設置成:b.aaa.cn就可以直接返回APP了。
如是你只有一款APP使用此支付方式,那就可以到此為止了。
如果你有兩款以上APP(比如X1,X2,X3),並都把referer設置成:b.aaa.cn://,scheme設置成:b.aaa.cn。
用戶只安裝了其中一款APP(X1),此時支付能夠成功,並能轉回原APP,一點問題沒有。如果同時安裝了(X1,X2),就會發現支付能夠成功,但成功后頁面靜止,不能跳回原APP了,也嚴重影響了用戶體驗。
想到的第一個解決方案就是更改referer與scheme。
APP | X1 | X2 | X3 |
referer | b.aaa.cn/x1:// | b.aaa.cn/x2:// | b.aaa.cn/x3:// |
scheme | b.aaa.cn/x1 | b.aaa.cn/x2 | b.aaa.cn/x3 |
突然靈光一閃,微信商戶后台即然讓我們注冊頂級域名,那是不是只要把referer與scheme設置成注冊的頂級域名的多級子域名就可以了呢,如下:
APP | X1 | X2 | X3 |
referer | b1.aaa.cn:// | b2.aaa.cn:// | b3.aaa.cn:// |
scheme | b1.aaa.cn | b2.aaa.cn | b3.aaa.cn |