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

如何通过Stripe实现按席位订阅及自动升级功能?

按席位订阅模型搭建方案(Stripe + Firebase)

一、通过Checkout Session实现按席位订阅及自动更新

完全可以用Checkout Session创建按席位订阅,并在用户加入时自动调整价格,步骤如下:

  • 创建按席位定价的Price:调用Stripe API创建Price对象,指定recurring.usage_type=licensed,设置单席位单价(如unit_amount=1000代表10美元),同时配置currency等参数。
  • 生成Checkout Session:创建Session时关联上述Price,在subscription_data.metadata中记录初始席位数量(如{seat_count: "1"})。如需限制订阅取消,可在subscription_data中设置cancelation_policy: "at_period_end"和cancel_at_period_end=false。
  • 触发席位更新:监听「User joined」事件(比如Firebase Auth用户新增、业务数据库用户加入记录),在Firebase云函数中调用Stripe的SubscriptionItem.update接口,传入订阅对应的subscription_item_id和新的quantity(原数量+1),Stripe会自动按新席位数量计算后续账单。

二、代码实现方案(当Checkout Session无法满足需求时)

1. 安全收集银行卡信息

出于PCI合规要求,禁止直接获取客户端银行卡明文数据,必须通过Stripe Elements/Payment Element处理:

  • 客户端:集成Stripe Elements,渲染Payment Element组件,用户输入银行卡信息后,调用stripe.createPaymentMethod()获取payment_method_id,将该ID传给Firebase云函数。
  • 云函数:使用Stripe SDK创建Customer,将获取到的payment_method_id设为默认支付方式,再创建关联按席位Price的Subscription,初始quantity设为1(或其他初始值)。

2. 订阅升级(用户加入时调整席位)

  • 监听业务侧的「User joined」事件(比如Firestore中团队用户集合的新增文档事件)。
  • 在云函数中,根据团队对应的Stripe订阅ID,调用stripe.subscriptionItems.update(),更新quantity字段为当前席位数量+1。可通过proration_behavior参数配置 prorate规则(如proration_behavior="always_invoice"立即生成补收账单,或"none"在下次周期统一调整)。

结合Firebase Stripe扩展的优化

使用Firebase的Stripe订阅扩展可简化流程:

  • 扩展会自动将Stripe的Customer、Subscription数据同步到Firestore,无需手动维护关联关系。
  • 可在Firestore的subscriptions集合触发云函数,当seat_count字段更新时,自动调用Stripe API调整订阅的席位数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:01:13