如何在结账时传递 stripe 上的现有订阅详细信息

Raj*_*jan 3 javascript node.js stripe-payments

我\xe2\x80\x99在从零开始的条带上有不同的订阅计划。当客户注册时,我\xe2\x80\x99m 默认创建免费计划的订阅。

\n

将来,客户希望通过结账会话升级计划,我如何将现有的订阅详细信息传递到结帐会话以更新标记到订阅 ID 的计划,而不是创建多个订阅。

\n

我浏览了 stripe create checkout session Doc,但我无法\xe2\x80\x99找到在结帐会话中传递订阅 ID 的方法。

\n

任何帮助将非常感激

\n

hmu*_*noz 10

您正在尝试通过CheckoutSession更新现有订阅,但不受支持。

如果客户使用 Checkout 注册新价格,则会创建一个全新的 Subscription 对象。您无法传递现有的订阅 ID,因为 Checkout 无法修改它。

您应该使用 Checkout inmode: setup来收集客户的银行卡详细信息。此setup模式仅收集卡详细信息,但不会对该客户收费或创建订阅。

然后,在收到checkout.session.completedwebhook 事件后,在服务器端代码中更新现有订阅,从“免费”价格切换到“付费”价格:https://stripe.com/docs/api/subscriptions/update

  • 订阅更新将导致按比例分配,并将在下一个循环周期中收取额外费用,但您可以设置“proration_behavior:always_invoice”以立即对价格切换收取费用 (2认同)