關於安卓webview中的H5微信支付返回白屏的問題解決方案

 


廢話不多說,也不繞彎子,直接將重點。

 

白屏爲啥會白屏,Activity中的我不知道會不會白屏,我的webview是在fragment中的。我運行微信官方的demo,他的都沒有白屏,我的就白屏了。

直到後來我無意間打上了fragment的部分生命週期的方法,發現了其中的端倪。每次要微信支付的時候他會走onPause這個方法,等微信支付,測試1分錢,返回回來的時候

他走了onResum這個方法(現在暫時講能正常支付成功流程的,中途取消支付的情況先不考慮)。很好這是重點。

如何你發現你現在的webview項目微信支付會白屏,那麼相信你應該是用過

onPageFinished

這個方法來檢測webview加載的最終地址,那麼實際上會發現,進到微信支付的時候,地址其實還走了一次(這個地址就是你微信支付回調的地址),這個是關鍵二,反正我的情況是這樣的,進入到微信支付的時候,會再走一次微信支付回調的地址,我還沒支付完成它就先走了!!坑爹就在這。很好,既然是支付,那麼你的url地址裏面肯定會有訂單號之類的,對就是你們服務端設定的規則,不管是支付寶還是微信支付,這個訂單號都不會變。而webview的h5微信支付會白屏,就是提前走了回調的地址,這個地址你可以用上面的方法看到,裏面包含訂單號。

 

重點來了,我們在調微信支付的時候截取訂單號在onPause方法中,之前微信支付白屏時候獲取到微信支付時候會多走一次時候的url地址拿出來放在onResume方法裏面,然後拼接上在走onPause方法時候獲取到的訂單號之類的東西(我們服務端只有訂單號,觀察你們的支付地址,把會變的參數全部保存下來),然後在onresume方法裏面拼上去。onresume裏面加載的地址是原來微信支付時候,webview會多走一次的那個地址!!!解決問題!!

這裏說明一點,當微信支付的時候點取消的時候,這個我還沒找到解決的辦法,上面的方法是正常支付,並且支付成功時候解決白屏的方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章