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去監聽訂單結果了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM