iOS微信,支付宝H5支付无法返回APP解决方案

问题场景:

最近公司和第三方对接一个业务,需要在App内嵌的WkWebView中加载第三方提供的H5商城,并且在通过微信,支付宝支付成功后能够像原生支付一样返回到我司的App,支付都非常顺利,但是支付宝无论支付成功还是失败后都会停留在支付宝页面,微信支付无论成功还是失败都会打开safire,均无法返回App。

解决方案:

经过自己的摸索经历如下方案

一 微信支付

本项目使用Swift语言开发,OC各位自行翻译一下就行,基本原理就是在WKWebView里面拦截微信支付的网络请求,修改RequestHeader的"referer",重点是个"xxx.com://" (注意后面的://),这个踩了个坑,以为是我们自己的H5支付的域名,添加后一直报"商户参数异常,请联系商家",后来一想我们是调第三方的H5微信支付,所以这个schemes比需有第三方平台添加到他们自己的H5支付白名单,然后我们才能成功掉起,注意⚠️最好让第三方平台给你们一个单独的schemes,只针对你们App否则第三方再和别的公司合作后还提供这个schemes给别的公司App用,就可能发生冲突,生成完毕后,把这个schemes添加到URL Types后就大功告成了。(注意这里后面不需要://)


二 支付宝支付

支付宝的原理也相似,主要就是把支付URL中的schems参数默认的“alipays”换成我们自己的"xxx.com"整体比较简单,主要是又个decoding和encoding操作,具体可以参考下图代码,有些做法比较复杂,把链接头和参数拆开后头不动参数做decoding和encoding操作,其实我验证了一下整体处理就可以了,代码如下。


你可能感兴趣的:(iOS微信,支付宝H5支付无法返回APP解决方案)