2016-02-26 70 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