iOS實現微信外部H5支付完成后返回原APP(多APP也可實現)


看到微信最近放開了微信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
通過測試發現不起作用。在網上搜索了很久也沒有找到解決方案,感覺只能妥協了,犧牲點用戶體驗,讓用戶點擊左上角返回原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支付的限制個數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM