Android:3d安全重定向响应

Ram*_*ain 5 payment android 3d-secure android-webview bankid

我有一个Android应用程序,我在应用程序中处理付款.付款还需要3d-secure验证.因此,这需要将用户重定向到可以进行适当操作的网页:例如输入代码等.在我的情况下,该应用程序针对瑞典用户,并将其重定向到一个页面,他们必须bank ID在同一设备或另一个设备上打开另一个" "应用程序,以执行此验证.

在我们的iOS应用程序上,此功能按预期工作 一旦用户执行了验证,浏览器就会收到一个回调,然后可以用它来相应地更新应用程序,但是Android,WebView我正在使用的是不通知的.所以到目前为止,我无法处理用户验证事件.

有没有人有这个或任何类似的用例的经验?任何帮助表示赞赏.

小智 6

我们在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);
Run Code Online (Sandbox Code Playgroud)