本文只討論已成功調(diào)起微信支付后,無(wú)法返回自己的APP的問(wèn)題,iOS微信H5支付不在討論范圍內(nèi)。提供下列參考:
微信H5支付官方文檔
微信H5支付官方Demo
知道你們都喜歡看結(jié)論,先放結(jié)論吧!此方案支付多APP
解決方案:
- 在微信支付管理后臺(tái)注冊(cè)一級(jí)域名,比如 company.com
- 在APP工程配置中設(shè)置URL Scheme,比如 A.company.com(A你可以隨便寫,后面的域名得和1.中一致)
- webView攔截微信下單請(qǐng)求,前綴https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb,追加或修改參數(shù) redirect_url=URLEncode(A.company.com://)
- (可選)微信支付結(jié)束(可能不是真正結(jié)束后面會(huì)細(xì)說(shuō))會(huì)發(fā)起redirect_url的重定向,webView攔截 request.URL.scheme 包含 company.com:// 的請(qǐng)求,在這里可以做一些后續(xù)操作,比如 刷新頁(yè)面,通知前端支付完成等。
需要注意的問(wèn)題:
- 微信H5下單接口(https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb)請(qǐng)求header中有個(gè)Referer字段,如果這個(gè)請(qǐng)求中沒有redirect_url參數(shù),微信支付結(jié)束后默認(rèn)回調(diào)Referer字段中地址
- Referer頭和redirect_url中的域名,都必須在微信后臺(tái)注冊(cè)過(guò)
- redirect_url回調(diào)并不可靠,可能微信支付還沒結(jié)束就回調(diào)了。
微信官方文檔對(duì)redirect_url的描述:
由于設(shè)置redirect_url后,回跳指定頁(yè)面的操作可能發(fā)生在:1,微信支付中間頁(yè)調(diào)起微信收銀臺(tái)后超過(guò)5秒 2,用戶點(diǎn)擊“取消支付“或支付完成后點(diǎn)“完成”按鈕。因此無(wú)法保證頁(yè)面回跳時(shí),支付流程已結(jié)束,所以商戶設(shè)置的redirect_url地址不能自動(dòng)執(zhí)行查單操作,應(yīng)讓用戶去點(diǎn)擊按鈕觸發(fā)查單操作
作者:CocoaKier
鏈接:http://www.itdecent.cn/p/c1973aacc774
來(lái)源:簡(jiǎn)書
簡(jiǎn)書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。