1. 程式人生 > >iOS實現微信外部H5支付完成後返回原APP(多APP也可實現)

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

更改 開發 技術分享 服務器端 嚴重 圖片 正常 接口 width

看到微信最近放開了微信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支付的限制個數。

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