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

flutter_stripe presentPaymentSheet parameters弃用问题如何修复

报错根因

flutter_stripe ^3.3.0 版本重构了Payment Sheet的调用流程:

  • 原presentPaymentSheet方法的parameters入参、PresentPaymentSheetParameters类全部标记为弃用
  • 所有支付页配置参数统一前移到initPaymentSheet方法中初始化,presentPaymentSheet仅负责唤起已经初始化完成的支付页,不再接收任何配置参数
  • 旧版中手动传入的confirmPayment: true为新版默认行为,无需额外配置
修复步骤
  • 移除presentPaymentSheet方法的所有入参,删除PresentPaymentSheetParameters相关代码
  • 在调用presentPaymentSheet前新增initPaymentSheet调用,将原PresentPaymentSheetParameters中的配置迁移到SetupPaymentSheetParameters中
  • 原有支付成功、失败的回调逻辑不需要改动,直接保留即可
修复后可直接运行的代码
displayPaymentSheet(OrderProvider orderProvider) async {
    try {
      // 初始化支付Sheet,所有配置统一在这里传入
      await Stripe.instance.initPaymentSheet(
        paymentSheetParameters: SetupPaymentSheetParameters(
          paymentIntentClientSecret: paymentIntentData!['client_secret'],
          merchantDisplayName: '你的电商店铺名称', // 替换为实际商户名
          // 可按需扩展配置:支付页主题、默认支付方式、苹果/谷歌支付参数等
        ),
      );

      // 直接唤起支付页,无需传参
      await Stripe.instance
          .presentPaymentSheet()
          .then((newValue) {
        print('payment intent ${paymentIntentData!['id']}');
        print('payment intent ${paymentIntentData!['client_secret']}');
        print('payment intent ${paymentIntentData!['amount']}');
        print('payment intent $paymentIntentData');
        //orderPlaceApi(paymentIntentData!['id'].toString());
        ScaffoldMessenger.of(context)
            .showSnackBar(const SnackBar(content: Text("支付成功")));
        orderProvider.success = true;
        Navigator.pop(context);
        setState(() {
          paymentIntentData = null;
        });
      }).onError((error, stackTrace) {
        print('支付页唤起异常==> $error $stackTrace');
      });
    } on StripeException catch (e) {
      print('Stripe支付异常==> $e');
      showDialog(
          context: context,
          builder: (_) => const AlertDialog(
                content: Text("支付已取消"),
              ));
    } catch (e) {
      print('通用异常: $e');
    }
  }
补充说明
  • 迁移完成后所有弃用警告会直接消失,不影响原有支付流程
  • SetupPaymentSheetParameters支持更多自定义配置,可根据业务需求自行添加,比如设置支付页主色、是否允许默认保存支付方式、开启Apple Pay/Google Pay等
  • 必须保证initPaymentSheet在presentPaymentSheet之前调用,否则会抛出未初始化的运行时错误

内容的提问来源于stack exchange,提问作者Rudransh Singh Mahra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:36:22