2016-02-26 49 views
2

我有一個Android應用程序,我正在處理應用程序內的付款。付款還需要3d-secure驗證有時。因此,這需要將用戶重定向到網頁,以便他們能夠採取適當的措施:例如輸入代碼等。在我的情況下,該應用程序針對的是瑞典用戶,並將其重定向到一個頁面,他們必須在另一個「bank ID」應用程序中打開另一個「bank ID」應用程序才能執行此驗證。Android:3d安全重定向響應

在我們的iOS應用程序中,此功能按預期工作。一旦用戶執行了驗證,瀏覽器會收到一個回調,然後可以用來相應地更新應用程序,但在Android上,我使用的WebView未收到通知。所以到目前爲止,我無法處理用戶驗證事件。

有沒有人有這個或任何類似用例的經驗?任何幫助表示讚賞。

回答

3

我們在Android WebView中遇到了Nordea的3D Secure頁面的類似問題。 它涉及到試圖訪問本地存儲的頁面。我們將下面的代碼添加到應用程序中以使其起作用:

mWebView.getSettings().setDomStorageEnabled(true); 
mWebView.getSettings().setDatabaseEnabled(true); 

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { 
    mWebView.getSettings().setDatabasePath("/data/data/" + 
    mWebView.getContext().getPackageName() + "/databases/"); 
} 

mWebView.setWebViewClient(new WebViewClient(){ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if(url.startsWith("intent:")){ 
     Intent intent = new Intent(); 
     intent.setPackage("com.bankid.bus"); 
     intent.setAction(Intent.ACTION_VIEW); 
     intent.addCategory(Intent.CATEGORY_BROWSABLE); 
     intent.addCategory(Intent.CATEGORY_DEFAULT); 
     intent.setType("bankid"); 
     intent.setData(Uri.parse("bankid://www.bankid.com?redirect=null")) ; 
     startActivityForResult(intent, 0); 
     return true; 
    } 

    // your existing override code goes here probably "return false" 
    // to stop webview redirects to browser. 
    } 
}); 
mWebView.loadUrl(url); 
+0

感謝您的評論和解決方案。我實際上已經明白了這一點,但忘記了在這裏發佈解決方案。 –

+0

這也爲我們解決了它。點擊「打開應用程序」按鈕時,它仍然不會「查找」BankID應用程序 - 但授權會通過。 – Mattis