Android 微信H5支付,無法拉起微信支付頁面

最近我其中一個項目需要接入微信支付,實現(xiàn)方式是在WebView里利用Url拉起微信支付頁面,但是實際操作的時候卻發(fā)現(xiàn)始終無法拉起支付頁面,最后排查了一段時間,發(fā)現(xiàn)原來是因為一個很簡單的問題出錯了,于是解決問題以后特意想把這個問題記錄下來分享,也便于以后自己解決同類問題。

在這里插入圖片描述

代碼如上,每次微信支付走到https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=************,這個開頭的url時,就停住了,根本不會跳到weixin://wap/pay?開頭的url中,然后再調用startActivity打開微信客戶端支付。當時我百思不得其解,到底那里出錯了呢,為什么吊不起微信支付,后來我看了一下自己之前的項目,發(fā)現(xiàn)我原先的項目是這樣的:

在這里插入圖片描述

可以看到,這里return 返回的是false,問題出在這里。這時我又在想,為什么會這樣?

查閱資料以后我發(fā)現(xiàn)shouldOverrideUrlLoading的返回值的意義為:

  • 若設置 WebViewClient 且該方法返回 true ,則說明由應用的代碼處理該 url,WebView 不處理,也就是程序員自己做處理。
  • 若設置 WebViewClient 且該方法返回 false,則說明由 WebView 處理該 url,即用 WebView 加載該 url。
  • 若沒有設置 WebViewClient 則由系統(tǒng)(Activity Manager)處理該 url,通常是使用瀏覽器打開或彈出瀏覽器選擇對話框。

那么這種情況下,返回值應該改為 false或者super .shouldOverrideUrlLoading(view, url); ,因為微信支付調用https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb這個開頭的url后,會重定向到weixin://wap/pay開頭的url,然后調用微信客戶端支付,如果用true,則WebView不會自動重定向到weixin://wap/pay開頭的url,需要程序員自行處理,這種情況下自然是無法吊起支付的。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容