如何在Stripe中延迟启动订阅?

11

我有很多用户目前正在订阅每月一次的付费服务。

出于业务原因,我希望能够:

1)当客户决定订阅我们的计划时收取费用

2)在购买后的若干天内使订阅生效

当前,当在Stripe中向客户添加订阅时,会立即尝试收取费用。

我想坚持使用Stripe订阅,因为a)我仍希望在未来日期由Stripe来管理订阅,b)我已经编写了大量与订阅模型相关的代码。

是否有可能区分收费/发票和订阅开始日期?

2个回答

22
你可以使用 trial_end 参数来控制订阅实际开始的时间(即 Stripe 开始向客户计费的时间),在 创建订阅请求 中设置该参数的值为您希望 Stripe 自动向客户计费的确切时间戳。
如果我正确理解了您所需的付款流程,当客户注册时,您可能想要执行以下操作:
  1. 收集并标记客户的付款信息(使用ElementsCheckout)。

  2. 使用生成的令牌,创建一个客户对象并将生成的客户ID保存在您的数据库中。

  3. 创建一次性费用,使用客户对象进行第一次支付。

  4. 创建订阅,使用客户对象和trial_end参数设置为您希望Stripe自动向客户开始计费的时间。

有关使用试用期的更多信息,请参见https://stripe.com/docs/subscriptions/trials


不够灵活。需要至少2天时间。 - neobie
@neobie 奇怪的是,你可以使用 trial_period_days 而不是 trial_end,它确实允许 1 天... 我不确定 Stripe 开发人员的理由。 - iamkeir

2
这现在可以通过Stripe的订阅计划实现。通过它,您可以创建一个将来开始的单阶段计划。默认情况下,它将在您想要的日期开始订阅,自动续订并在开始日期向客户收取费用。同时,默认情况下,它将立即执行交易以支付订阅费用。
我发现所需的迭代有点令人困惑。基本上,这是一个乘数,用于在移动到下一次之前重复多少次原始价格间隔。
如果您只想在未来开始订阅价格,请使用订阅计划API调用。创建一个1项的items数组。设置该价格的price_id、该项目上的iterationsstart_date为您想要开始订阅的Unix时间戳。
Stripe有不同的订阅计划用例。他们列出的第一个正是此目的,即在未来日期开始和收取订阅。如果您想进行更多调整,可以查看它们,例如将第一阶段设置为试用期。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接