Android WebView集成Easebuzz/Eazepay支付时OTP页面无法加载问题
解决WebView加载Easebuzz/Eazepay OTP页面空白的问题
检查并启用WebView弹窗支持
之前OTP页面以弹窗形式呈现,WebView默认可能拦截了新窗口请求,需通过WebChromeClient处理弹窗逻辑:
webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { WebView newWebView = new WebView(view.getContext()); WebSettings settings = newWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setDomStorageEnabled(true); settings.setSupportMultipleWindows(true); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; transport.setWebView(newWebView); resultMsg.sendToTarget(); return true; } });
确保WebView的JavaScript与DOM存储权限
支付页面依赖JavaScript渲染,必须开启核心配置:
WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); webSettings.setJavaScriptCanOpenWindowsAutomatically(true); webSettings.setAllowFileAccess(true);
处理第三方Cookie限制
Android 11+默认限制第三方Cookie,可通过两种方式解决:
方式1:配置CookieManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true); } else { CookieManager.getInstance().setAcceptCookie(true); }
方式2:添加网络安全配置
在AndroidManifest.xml的application标签内添加:
android:networkSecurityConfig="@xml/network_security_config"
然后在res/xml/network_security_config.xml中配置信任域名:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">你的自有网站域名</domain> <domain includeSubdomains="true">easebuzz.in</domain> <!-- 替换为Easebuzz实际域名 --> </domain-config> </network-security-config>
排查SSL证书兼容性
若支付页面更新了SSL证书,WebView可能因验证失败导致空白。开启调试模式排查:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); }
通过Chrome的chrome://inspect工具查看WebView控制台错误,确认是否存在证书相关报错,再针对性处理(如导入信任证书或联系支付方确认证书有效性)。
调整WebView的User-Agent设置
部分支付网关会根据User-Agent判断环境,WebView默认UA可能被识别为非浏览器环境。可设置为浏览器UA:
webSettings.setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
验证支付页面的更新逻辑
若近期支付方更新了页面逻辑(如弹窗改内嵌、新增JS特性),可对比浏览器与WebView的控制台日志,定位JS错误后针对性修复。
内容的提问来源于stack exchange,提问作者Ravi Kumar
相关产品推荐
相关产品推荐

