• iOS 微信支付点击左上角返回解决方案


    在网了搜了一些解决方案,感觉并不是那么严谨,于是自己动手搞了一下,直接说思路

    iOS调起第三方支付和安卓还不一样,安卓是把第三方的支付SDK直接镶嵌在自己的App中,而iOS由于沙盒机制,各个应用之间相互独立,应用之间的调用只有通过系统留下的唯一入口scheme, 所以iOS调起第三方支付是在两个App之间相互切换的。以下从两个角度解析iOS吊起第三方支付

    1、支付之前点击取消或者左上返回

    (1)点击支付是App显示进入非活跃状态,再进入后台

      -[AppDelegate applicationWillResignActive:]

      -[AppDelegate applicationDidEnterBackground:]

    (2)点击取消时会

      -[AppDelegate applicationWillEnterForeground:]

      然后回调支付成功失败方法

      -[AppDelegate applicationDidBecomeActive:]

    (3)由(2可以看出)我们需要做的操作

      重点思路

      1)定义一个单例类,并定义支付类型属性

        typedef enum{

            Pay_Type_none   = 0,

            Pay_Type_wxpay  = 1,

            Pay_Type_alipay = 2

        } Pay_Type;

        在点击支付是把Type设置为对应的类型

      2)在支付成功失败的回调里把type设置为Pay_Type_none(没有任何类型),这样在其他操作的时候调用-[AppDelegate applicationDidBecomeActive:]不会有任何影响

      3)在-[AppDelegate applicationDidBecomeActive:]方法里判断type类型发送相对应的通知

      4)在支付控制器接收通知,并结合后台的查询接口查询订单是否支付结果,如果订单支付成功type设置为Pay_Type_none并做成功的操作,如果失败ype设置为Pay_Type_none,做失败的操作

    2、支付完成后点击左上返回

      一般第三方API是尽量避免这种操作的,但是不排除特殊情况,这种方案按照第一种方案解决就没问题了,但是支付成功后,你把App进程杀死,单例对象随着进程也被释放,那肯定是监听不到了。只有等下次打开App去监听订单结果了

  • 相关阅读:
    小峰视频十三:二维数组
    小峰视频十二:java数组
    小峰视频十一:循环结构的跳出
    小峰视频十:循环while、for
    小峰视频九:选择语句if、switch
    小峰视频八:逻辑运算符、关系运算符、三门运算符
    小峰视频七:数据类型转换、数据运算
    eggjs+vue实现下载图片 js下载网络图片
    报错/Warning: You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored
    React/事件系统
  • 原文地址:https://www.cnblogs.com/yang-shuai/p/7457639.html
Copyright © 2020-2023  润新知