問(wèn)題場(chǎng)景:
最近公司和第三方對(duì)接一個(gè)業(yè)務(wù),需要在App內(nèi)嵌的WkWebView中加載第三方提供的H5商城留夜,并且在通過(guò)微信匙铡,支付寶支付成功后能夠像原生支付一樣返回到我司的App,支付都非常順利,但是支付寶無(wú)論支付成功還是失敗后都會(huì)停留在支付寶頁(yè)面碍粥,微信支付無(wú)論成功還是失敗都會(huì)打開safire,均無(wú)法返回App鳖眼。
解決方案:
經(jīng)過(guò)自己的摸索經(jīng)歷如下方案
一 微信支付
本項(xiàng)目使用Swift語(yǔ)言開發(fā),OC各位自行翻譯一下就行即纲,基本原理就是在WKWebView里面攔截微信支付的網(wǎng)絡(luò)請(qǐng)求具帮,修改RequestHeader的"referer",重點(diǎn)是個(gè)"xxx.com://" (注意后面的://),這個(gè)踩了個(gè)坑低斋,以為是我們自己的H5支付的域名蜂厅,添加后一直報(bào)"商戶參數(shù)異常,請(qǐng)聯(lián)系商家"膊畴,后來(lái)一想我們是調(diào)第三方的H5微信支付掘猿,所以這個(gè)schemes比需有第三方平臺(tái)添加到他們自己的H5支付白名單,然后我們才能成功掉起唇跨,注意??最好讓第三方平臺(tái)給你們一個(gè)單獨(dú)的schemes稠通,只針對(duì)你們App否則第三方再和別的公司合作后還提供這個(gè)schemes給別的公司App用,就可能發(fā)生沖突买猖,生成完畢后改橘,把這個(gè)schemes添加到URL Types后就大功告成了。(注意這里后面不需要://)
二 支付寶支付
支付寶的原理也相似玉控,主要就是把支付URL中的schems參數(shù)默認(rèn)的“alipays”換成我們自己的"xxx.com"整體比較簡(jiǎn)單飞主,主要是又個(gè)decoding和encoding操作,具體可以參考下圖代碼高诺,有些做法比較復(fù)雜碌识,把鏈接頭和參數(shù)拆開后頭不動(dòng)參數(shù)做decoding和encoding操作,其實(shí)我驗(yàn)證了一下整體處理就可以了虱而,代碼如下筏餐。