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

如何在Flutter应用中实现Stripe订阅功能?

Flutter 实现 Stripe 定期订阅(3种套餐)

核心思路

用Stripe Checkout Session实现是最快捷的方案,无需自行搭建卡片收集UI,只需配合后端完成Session创建与Webhook验证,前端负责唤起支付流程并同步订阅状态。

步骤1:准备工作

  • 在Stripe Dashboard创建3个订阅产品(如基础/进阶/高级),每个产品配置定期支付价格(月付/年付等,价格ID格式为price_xxxx)
  • 给Flutter项目安装Stripe插件:
    flutter pub add flutter_stripe
    

步骤2:后端实现(关键)

所有Stripe敏感操作必须在后端完成,前端仅做交互:

  1. 编写接口接收前端传来的价格ID
  2. 调用Stripe API创建Checkout Session,核心参数:
    • mode: 'subscription'(指定为订阅模式)
    • line_items: 传入对应价格ID和固定数量1
    • success_url/cancel_url: 用户支付完成/取消后跳转的地址(可设为App Deeplink或网页)
  3. 将生成的sessionId返回给前端

步骤3:前端唤起支付流程

拿到后端返回的sessionId后,调用Stripe的Checkout跳转:

import 'package:flutter_stripe/flutter_stripe.dart';

// 从后端获取对应套餐的sessionId
final sessionId = await _yourApiClient.getSubscriptionSession(priceId: 'price_xxxx');

// 唤起Stripe Checkout WebView
final result = await Stripe.instance.redirectToCheckout(
  sessionId: sessionId,
);

// 处理跳转结果
if (result.success) {
  // 支付成功,调用后端接口同步用户订阅状态
  await _yourApiClient.fetchUserSubscriptionStatus();
} else {
  // 支付失败或取消,提示用户
  print(result.error?.message);
}

步骤4:处理订阅后续逻辑

  • Webhook验证:后端监听Stripe的checkout.session.completed事件,验证签名后将用户订阅信息(如订阅ID、到期时间、套餐类型)存入数据库
  • 订阅状态同步:前端每次启动或进入订阅页面时,调用后端接口获取当前用户的订阅状态,更新UI
  • 取消订阅:若支持用户取消,后端调用Stripe的subscriptions.cancel接口,传入订阅ID即可

测试注意事项

用Stripe测试卡片完成支付验证:

  • 卡号:4242 4242 4242 4242
  • 过期日期:任意未来月份/年份(如12/30)
  • CVC:任意3位数字(如123)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:52:07