2018-01-23
WapPay(微信h5支付)回调问题
项目中集成的微信支付一直都是APP支付的SDK,去年开始接触到了WapPay,WapPay就是微信h5支付。它不依靠APP端的SDK,在APP的web页面中,直接由h5直接向微信发起支付请求交互。然而这个WapPay,跳转到微信后,点击取消,或者后续完成支付都会跳转到Safari,不返回原APP,这就很尴尬了。最近又接了一些三方业务,购买类还是使用WapPay,所以需要解决这个返回问题。
基于schemes
先让我们设置APP的schemes:
设置APP的schemesh5向微信发起支付的时候有个redict_url_参数,在该参数中设置的是回调页面地址,如支付结果页地址。我们支付成功,和取消支付都是跳转订单列表地址,所以只要一种url。但是这个url设置需要以APP中设置的schemes打头。例如你设置APP的schemes是SugarFree,那么这个url则是SugarFree://…..。后续的…..拼接回调地址,这边我们没有把域名拼接进去。如跳转地址如果是百度:https://www.baidu.com/,我们并不是设置redict_url_为:SugarFree://https://www.baidu.com/,而是SugarFree://www.baidu.com。这个在后期的页面跳转中体验作用。
然后再位置支付后,跳转到Safari中,url为设置的redict_url,例如跳转的是:SugarFree://www.baidu.com,Safari会提示是否在你的APP中打开:
Safari中输入带有schemes的url点击确定后就会跳回APP。然后会走系统AppDelegate中的这个方法:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
里面能获取到url,即会跳地址。如下图:
跳回APP进入的方法然后在对应url进入对应方法处理后续的跳转,我这边采用通知的形式,回调到APP时发送通知,通知接收方是web基类或者具体web页面,对应跳转结果页面:
web基类中的接受通知跳转处理待完善
1.基于universal link处理
2.通知给基类做url跳转优化