前一阵子,项目需要开发支付功能,需要接入封装好的SDK(包含微信、支付宝以及银行的).
功能实现一如既往(添加sdk,依赖库,调用支付方法),没什么难度.
然而在自测的时候,跳转到微信或者支付宝的页面,当支付成功(银行的sdk不会自动返回自己的app)或者取消支付的时候,如果点击左上角系统自带的返回键(statusbar上的)的时候,回到自己的app则会出现问题.
什么问题呐?在自己的app收不到支付结果的回调信息.
开始测试,发现点击系统的返回键回到app,下面的方法不会掉用,所以里边关于支付功能的回调方法也不会被掉用,自然也就不会往下面进行了.
- (BOOL)application:(UIApplication*)applicationopenURL:(NSURL*)urloptions:(NSDictionaryid> *)options.
解决方案:
发现虽然上面的方法不会调用,但是会调用application里进入前台的方法:
- (void)applicationWillEnterForeground:(UIApplication *)application
1.网上搜索,有人说在上面的方法里调用支付完成的回调方法,但是上面的方法是得不到支付返回的url的,支付的回调方法是需要传url的,没有url不知道他们是怎么实现的??????
2.在上面的方法里进行逻辑判断是哪一种支付方式,进一步调用支付订单查询接口,获得订单支付结果
3.没有支付订单查询接口,上面方法里url直接传空,在支付返回结果方法里进行判断,如果为空则进行进一步操作(返回上一级之类的),属于一种折中处理方案
4.如有新的方案可评论留言,非常感谢