Android Jetpack Compose WebView中Mollie支付重定向URL处理问题
解决WebView中Mollie重定向URL跳浏览器的问题
1. 强制WebView拦截目标重定向URL
WebView默认会将未拦截的URL交给系统浏览器处理,必须通过WebViewClient的shouldOverrideUrlLoading方法精准拦截Mollie的重定向URL,强制在当前WebView内加载。
代码示例(Compose中配置WebView):
AndroidView(factory = { context -> WebView(context).apply { settings.javaScriptEnabled = true settings.domStorageEnabled = true settings.allowRedirects = true // 显式开启自动重定向(默认已开启,可确保生效) webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading( view: WebView?, request: WebResourceRequest? ): Boolean { request?.url?.toString()?.let { url -> // 匹配Mollie重定向URL的前缀 if (url.startsWith("https://www.mollie.com/checkout/ideal/return/")) { view?.loadUrl(url) return true // 返回true表示拦截系统默认处理 } // 银行Deep Link允许系统跳转至对应App,非目标URL交给系统处理 return !url.startsWith("https://www.mollie.com/checkout/ideal/return/") } return super.shouldOverrideUrlLoading(view, request) } } loadUrl("你的Mollie支付初始URL") } })
2. 校验AndroidManifest.xml的Intent Filter配置
确保Intent Filter能精准匹配重定向URL,同时设置正确的属性:
<activity android:name=".你的WebView所属Activity" android:exported="true"> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 严格匹配Mollie重定向URL的Scheme、Host和路径前缀 --> <data android:scheme="https" android:host="www.mollie.com" android:pathPrefix="/checkout/ideal/return/" /> </intent-filter> </activity>
android:autoVerify="true"可确保App与域名的关联验证,避免系统优先选择其他浏览器;- 确认
pathPrefix与实际重定向URL的路径完全匹配。
3. 排查系统默认应用设置
若系统中某浏览器被设置为该域名的默认处理应用,会拦截跳转请求:
- 进入手机「设置」→「应用」→「默认应用」→「浏览器应用」,清除对应浏览器的默认打开关联。
4. 验证实际重定向URL格式
在shouldOverrideUrlLoading中添加日志,确认实际收到的URL是否与预期匹配:
Log.d("MollieDebug", "当前跳转URL: $url")
部分场景下Mollie返回的URL可能存在细微差异(如HTTP协议、路径参数变化),需根据实际日志调整拦截规则。
内容的提问来源于stack exchange,提问作者Nayab
相关产品推荐
相关产品推荐

