看到微信最近放開了微信H5支付,公司決定把H5集成到多款APP上。下面記錄下了開發過程。web
因爲是微信新推出的支付方式,在網上搜索到的相關資料並很少,其中有一篇文章(點此跳轉)對個人整個開發過程起到了很大幫助,在此表示感謝。服務器
首先去微信商戶後臺去申請開通H5支付。微信

微信審覈經過須要3至5個工做日。測試
咱們假設支付域名填寫的 aaa.cn,注意是頂級域名,不是二級或三級的子域名。url
因爲這裏是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 |
經過測試發現不起做用。在網上搜索了好久也沒有找到解決方案,感受只能妥協了,犧牲點用戶體驗,讓用戶點擊左上角返回原APP。
忽然靈光一閃,微信商戶後臺即然讓咱們註冊頂級域名,那是否是隻要把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 |
經過測試,完美運行。理論上這個解決方案能夠支持無數個APP,也同時解決了微信開放平臺APP支付的限制個數。