• 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去监听订单结果了

  • 相关阅读:
    解决js跨域问题
    JS中如何使用Cookie
    js 概念(构造函数)
    js中this的用法
    ORA-00932:类型类型不一致
    记录一次使用 Comparator排序
    Element-ui Message消息提示限制弹出一次
    IDEA启动Tomcat的时候8080端口被占用(MyEclipse类似)
    JAVA中JSONObject对象和Map对象之间的相互转换
    MySQL笔记 【狂神说】
  • 原文地址:https://www.cnblogs.com/yang-shuai/p/7457639.html
Copyright © 2020-2023  润新知