關于iOS微信支付返回原程序按鈕點擊處理事件
1:點擊右上角的返回App按鈕
點擊此按鈕,走的是正常微信結果回調方法,在onResp中,對于成功或者失敗結果進行處理。小生愚笨,采取的是發送通知的方法,在訂單支付控制器中接受通知,分別對成功失敗的事件進行處理。
2:左上角返回App按鈕
如果用戶點擊此按鈕,程序回到支付訂單頁面,但此時不走微信的結果回調方法,那么此時如何拿到微信支付結果的通知呢?
推薦方法:點擊返回App按鈕,此時程序走的是在AppDelegate的applicationWillEnterForeground方法,只需要在這個方法里面驗證付款的訂單號是否已經支付完成。需要自己的后臺給出一個接口,來驗證此訂單的支付結果。
步驟一:在提交訂單或者確認訂單的頁面,將訂單號或者訂單id存起來(可使用NSUserDefaults),作為驗證訂單是否支付接口的參數。
步驟二:成功調起微信支付后,添加標識,區分是支付頁面的返回事件。
步驟三:在AppDelegate的applicationWillEnterForeground方法里寫判斷訂單是否已經支付,如果此訂單已經支付,發送通知給訂單支付的頁面控制器,在訂單支付頁面進行相應的頁面跳轉。PS:最后記得清空NSUserDefaults中的數據。
注釋:點擊右上角返回App按鈕,程序會先走applicationWillEnterForeground,中間會跳回到微信自己的onResp(結果回調方法)。為了避免在WillEnterForeground重復驗證訂單,可以在處理微信結果的方法中將NSUserDefaults存的訂單信息和支付返回的數據清空,或者設置BOOL值來區分。(本文參考了作者paradisery的”iOS-9.0后跳支付左上角返回鍵解決辦法“一文)。本文只是個人愚見,如果有任何問題,歡迎大家指正。