Android:3d 安全重定向响应
Android: 3d-secure redirect response
我有一个 Android
应用程序,我在该应用程序内处理付款。付款有时还需要 3d-secure
验证。因此,这需要将用户重定向到一个网页,他们将能够在该网页上执行一些适当的操作:例如输入代码等。就我而言,该应用程序是针对瑞典用户的,它将他们重定向到一个页面,他们必须在该页面上打开另一个“bank ID
”应用程序(在同一设备或其他设备上)才能执行此验证。
在我们的 iOS
应用程序中,此功能按预期工作。一旦用户执行了验证,浏览器就会收到一个回调,然后可以使用该回调相应地更新应用程序,但是在 Android
上,我正在使用的 WebView
没有收到通知。所以到目前为止,我无法处理用户验证事件。
是否有人对此或任何类似用例有经验?感谢任何帮助。
我们在 Android WebView 中遇到了与 Nordea 的 3D 安全页面类似的问题。
它归结为试图访问本地存储的页面。我们将以下代码添加到应用中以使其正常工作:
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);
我有一个 Android
应用程序,我在该应用程序内处理付款。付款有时还需要 3d-secure
验证。因此,这需要将用户重定向到一个网页,他们将能够在该网页上执行一些适当的操作:例如输入代码等。就我而言,该应用程序是针对瑞典用户的,它将他们重定向到一个页面,他们必须在该页面上打开另一个“bank ID
”应用程序(在同一设备或其他设备上)才能执行此验证。
在我们的 iOS
应用程序中,此功能按预期工作。一旦用户执行了验证,浏览器就会收到一个回调,然后可以使用该回调相应地更新应用程序,但是在 Android
上,我正在使用的 WebView
没有收到通知。所以到目前为止,我无法处理用户验证事件。
是否有人对此或任何类似用例有经验?感谢任何帮助。
我们在 Android WebView 中遇到了与 Nordea 的 3D 安全页面类似的问题。 它归结为试图访问本地存储的页面。我们将以下代码添加到应用中以使其正常工作:
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);