可能标题不是明确我在这里解一下,解决的办法有很多 我只记录一下我使用的方法:
问题是 :
1)当用户支付完成以后 没有通过点击支付平台的 “ 返回商家 ” 按钮 返回到自己开发的APP。
2)或者是说 通过后台直接打开APP 。
3)或者点击左上角的箭头返回到自己的APP。
以上的情况 是无法监听到第三方平台的支付回调的!所以得想个办法监听!这个时候需要后台来忙了!
1:让后台写一个查询支付状态的接口!是通过订单号查询的,订单号 是通过后台生成并且返回的!
2:通过APP提供系统方法进行监听!具体如下:
1)在发起支付的时候要先生成订单号,把这个订单号保存在本地 (NSUserDefaults)调用 synchronize 保存在本地!
2)在 AppDelegate 文件里面监听 applicationWillEnterForeground (即将进入前台)这个方法 发送一个通知,然后到支付页面接受这个通知!
3)一般来说 都是按可以接受到支付回调的思路来判断的,这个时候就需要在 支付回调的方法里面做支付成功的 后续操作,有一点就是 在收到支付回调之后一定要把保存在本的订单号置为空!
4)以上都完成之后 ,就到接受到回到前台的通知了 我延迟了3秒 调用后台的查询订单号的接口,并且是 当本地的订单号不为空的情况下去查询的!这就是为什么上面要把订单号置为空的原因了!如果是按正常逻辑走的!就不会去查询订单号的!
5)还有一点就是 当退出当前控制器的时候,记得把通知移除掉,避免多次支付的时候,有多个通知!