2018-01-23

WapPay(微信h5支付)回调问题

        项目中集成的微信支付一直都是APP支付的SDK,去年开始接触到了WapPay,WapPay就是微信h5支付。它不依靠APP端的SDK,在APP的web页面中,直接由h5直接向微信发起支付请求交互。然而这个WapPay,跳转到微信后,点击取消,或者后续完成支付都会跳转到Safari,不返回原APP,这就很尴尬了。最近又接了一些三方业务,购买类还是使用WapPay,所以需要解决这个返回问题。

基于schemes

        先让我们设置APP的schemes:

设置APP的schemes

        h5向微信发起支付的时候有个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跳转优化

你可能感兴趣的:(2018-01-23)