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

Flutter中如何通过Stripe实现月付/季付等定期自动续费功能?

问题解答

是否必须接入后端

是,无法仅靠前端实现订阅自动扣费,原因如下:

  • Stripe自动扣费的核心逻辑依赖服务端交互:订阅管理、自动扣费触发、支付状态同步都需要调用Stripe的保密接口,这类接口需要使用你的Stripe账户密钥(sk_开头),该密钥绝对不能暴露在前端,否则会导致账户资金风险。
  • 你当前用的payment_intents接口本身就是为单次支付设计的,不支持自动续期扣费逻辑,订阅场景需要使用Stripe的Products、Prices、Subscriptions体系相关接口,这类接口不允许前端直接调用。

是否需要更换依赖包

不需要,flutter_stripe已经完整支持订阅场景的前端支付流程,无需引入其他第三方包。

具体实现建议

第一步:Stripe后台预配置

先登录你的Stripe账户后台,创建3个对应套餐的产品和价格:

  • 月度、季度套餐:价格类型设置为recurring(周期性),分别设置对应扣费周期
  • 终身套餐:价格类型设置为one_time(一次性),沿用你之前的单次支付逻辑即可

第二步:后端核心逻辑开发

你需要搭建一个简易后端实现以下能力:

  1. 提供接口接收前端传递的用户选择的套餐ID,对应创建Stripe Customer对象,如果是周期性套餐则创建Stripe Subscription对象,如果是终身套餐则创建Payment Intent对象,将生成的client_secret返回给前端
  2. 配置Stripe Webhook,监听以下核心事件更新你的用户权益数据:
    • invoice.paid:扣费成功,延长用户订阅有效期
    • invoice.payment_failed:扣费失败,触发用户通知、暂停订阅权益等逻辑
  3. 自动扣费无需你手动写定时任务,Stripe会按照你设置的套餐周期自动发起扣费,你只需要通过webhook同步状态即可

第三步:前端流程调整

原有flutter_stripe的支付流程基本不需要大改,只需要将原来请求payment_intents获取client_secret的步骤,替换为请求你自己的后端接口获取client_secret,之后依然调用presentPaymentSheet方法完成支付即可。

注意:所有涉及Stripe密钥的操作必须全部放在后端执行,禁止在Flutter端硬编码、存储任何Stripe密钥信息,即使是Release版本也存在被反编译泄露的风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:54:07