You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter WebView集成Stripe Checkout时遇权限及Cookie错误求助

解决Flutter WebView集成Stripe Checkout的加载卡顿问题

你的三个错误都是WebView的安全配置和加载方式不符合Stripe的运行要求,以下是针对性的修复方案:

错误对应问题&修复步骤

1. Unrecognized feature: 'payment'

WebView的特性配置里加了它不支持的payment字段,直接移除这个特性即可。不管是Android还是iOS端的WebView配置,都把requiredFeatures或additionalFeatures设为空数组,不要包含payment。

2. Stripe.js requires 'allow-same-origin' if sandboxed.

如果WebView启用了沙箱模式,必须开启allow-same-origin权限,否则Stripe的脚本无法读取必要的同源资源。在WebView的平台配置里,设置sandboxAllowSameOrigin: true和sandboxAllowScripts: true。

3. Cookies are disabled inside 'data:' URLs

你当前是用data:协议加载的页面,这种环境下Cookie默认被禁用,而Stripe需要Cookie维持会话状态。直接改成加载Stripe官方的Checkout HTTPS URL:https://checkout.stripe.com/pay/你的SessionID,不要转成data URL。

完整配置示例(webview_flutter 4.x+)

WebView(
  initialUrl: 'https://checkout.stripe.com/pay/cs_test_你的会话ID',
  javascriptMode: JavascriptMode.unrestricted,
  domStorageEnabled: true,
  thirdPartyCookiesEnabled: true,
  // Android端配置
  androidInitialSettings: AndroidInitialSettings(
    allowContentAccess: true,
    javascriptEnabled: true,
    domStorageEnabled: true,
    thirdPartyCookiesEnabled: true,
    sandboxEnabled: true,
    sandboxAllowSameOrigin: true,
    sandboxAllowScripts: true,
    requiredFeatures: const <String>[], // 移除payment特性
  ),
  // iOS端配置
  webKitInitialSettings: WebKitInitialSettings(
    javascriptEnabled: true,
    domStorageEnabled: true,
    sandboxEnabled: true,
    sandboxAllowSameOrigin: true,
    sandboxAllowScripts: true,
    additionalFeatures: const <String>[], // 移除payment特性
  ),
  navigationDelegate: (NavigationRequest request) {
    // 允许跳转Stripe相关域名
    if (request.url.startsWith('https://checkout.stripe.com') ||
        request.url.startsWith('https://api.stripe.com')) {
      return NavigationDecision.navigate;
    }
    return NavigationDecision.prevent;
  },
)

额外配置(iOS)

在Info.plist里添加Stripe域名的信任配置,确保Cookie正常工作:

<key>WKAppBoundDomains</key>
<array>
  <string>checkout.stripe.com</string>
  <string>api.stripe.com</string>
</array>

注意点

  • 确认Stripe Session的success_url和cancel_url是有效的HTTPS地址,真机测试时不能用localhost
  • 优先用真机测试,部分模拟器的WebView权限限制会导致问题
  • 保持webview_flutter插件为最新稳定版

内容的提问来源于stack exchange,提问作者Abin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:55:15