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

如何解决Flutter中Stripe创建银行账户Token时空指针异常的问题

解决方案
  • 检查Stripe SDK初始化配置
    该报错由安卓端SDK内部空指针触发,90%的场景是未正确执行StripePayment.setOptions初始化配置,需确保在调用创建Token方法前,已经完成初始化并传入正确的Stripe公钥(测试环境用pk_test开头的测试公钥,生产环境用pk_live开头的公钥),初始化示例代码如下:
    StripePayment.setOptions(
      StripeOptions(
        publishableKey: "替换为你的Stripe公钥",
        androidPayMode: 'test', // 测试环境填test,生产填production
      )
    );
    
  • 锁定依赖版本
    stripe_payment为第三方非官方维护包,已停止更新多年,浮动版本号拉取的最新版本可能和你的项目Flutter、安卓编译环境不兼容。可在pubspec.yaml中锁定该包为之前正常运行的历史版本,避免版本自动升级带来的兼容问题,示例:
    dependencies:
      stripe_payment: 1.0.9 # 替换为你之前功能正常时使用的版本号
    
    修改后执行flutter clean清理缓存,再执行flutter pub get重新拉取依赖即可。
  • 检查安卓端配置
    确认安卓项目的minSdkVersion不低于21,同时AndroidManifest.xml中已经配置网络权限:
    <uses-permission android:name="android.permission.INTERNET" />
    
    若近期修改过安卓编译配置、升级过compileSdkVersion,可回退到之前正常的配置版本测试。
  • 校验运行环境与参数匹配性
    若你近期切换了Stripe的运行模式(从测试切到生产),需要对应更换公钥,同时不能再使用测试环境的银行账号、路由号参数,否则Stripe服务会返回空结果触发SDK空指针异常。
  • 兼容优化
    可在调用创建Token的逻辑外层加try-catch捕获异常,避免未处理异常直接导致应用崩溃:
    try {
      var newBank = await StripePayment.createTokenWithBankAccount(
        BankAccount(
          accountHolderName: 'Jenney Rogers',
          routingNumber: '110000000',
          accountNumber: '000123456789',
          countryCode: "US",
          currency: "usd",
        ),
      );
      print(newBank.tokenId);
    } catch (e) {
      print("创建银行账户Token失败:$e");
    }
    

如果以上方案都无法解决,建议替换为Stripe官方维护的flutter_stripe包,该包适配最新的Flutter版本与Stripe接口规则,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:36:03