[踩坑] 某些信用卡在 WebView 開啟付款頁面,點選傳送驗證碼會出現失敗

Joseph Cheng
KKday Tech Blog
Published in
2 min readNov 27, 2018

最近解決了一個在 Android app 在 WebView上面開啟某些銀行的付款頁面,並且點選傳送驗證碼會出現 交易已逾時取消,請重新交易 的問題

從公司後台瀏覽過付款失敗的信用卡,最大宗會出現的這個問題是中信卡

具體原因是因為某些銀行的付款頁面會使用 Cookie,但是 WebView 在 android 5.0 以後預設是關閉第三方網頁使用 Cookie,所以說把他打開就沒有問題了

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(webview, true)
} else {
CookieManager.getInstance().setAcceptCookie(true)
}

打開之後,app 內接的各種支付系統,都不會出現上述問題了

另外順便記錄一下我是怎麼發現這個問題的,我試了兩個方式,一個是用 pc web 開付款的頁面,另一個是 app 的 web view 開付款的頁面,發現 pc 上面是沒有問題的,但是 app 的 web view 會有問題,所以說我就比較兩邊的 request,發現 web 開付款的頁面多了 Cookie 這個資訊,接著就想說是不是 web view 預設是沒有開 Cookie,把他打開之後,就成功了

--

--