Stripe:即使设置了 CancelAt 字段,也会向客户收取全额费用

Posted

技术标签:

【中文标题】Stripe:即使设置了 CancelAt 字段,也会向客户收取全额费用【英文标题】:Stripe: charge full amount to Customer even if CancelAt field is set 【发布时间】:2020-09-07 14:45:05 【问题描述】:

这是我要解决的用例:

创建从 5 月 20 日开始的 1000 美元的新月订阅,并将 CancelAt 字段设置为 6 月 29 日。

预期行为:

    5 月 20 日,Stripe 向客户收取 1000 美元 6 月 20 日,Stripe 向客户收取 1000 美元 Stripe 会在 6 月 29 日自动取消订阅,无需其他发票 收取的总金额:2000 美元

我尝试了什么:

    使用 6 月 20 日的 CancelAt 和 ProrateBehavior=None 创建订阅

实际条纹行为:

    5 月 20 日,Stripe 向客户收取了 1000 美元(正确) 我在 Stripe 仪表板中看到一张即将在 6 月 21 日至 6 月 29 日期间 317.97 美元的发票(不正确) 我在 Stripe 仪表板中看到订阅设置为在​​ 6 月 29 日取消(正确) 将收取的总金额:1317.97 美元(不正确)

我似乎无法弄清楚什么样的字段组合会使 stripe 像我描述的那样表现。将 Prorate 行为设置为 None 是否应该告诉 Stripe 永远不要低于全额收费?除非我遗漏了什么,否则这似乎是一个常见的用例?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

Stripe 订阅是预付费的,因此您 5 月 20 日的发票实际上涵盖了 5 月 20 日至 6 月 20 日,所以这实际上是有道理的。

cancel_at specifically says:

订阅应取消的时间戳。如果设置为日期 在当前期间结束之前,这将导致按比例分配,如果 已使用 proration_behavior 启用了按比例分配。 如果在 未来时期,这将始终导致该时期的按比例分配。(强调我的)

您要么只想在 6 月通过 API 和 proration_behavior:none 取消订阅 - 可能使用元数据来记录“何时取消日期”和 webhook 来检查订阅是否需要取消期间 - 或可能使用订阅时间表:https://stripe.com/docs/billing/subscriptions/subscription-schedules

【讨论】:

感谢您的回答。你是对的,文档说明了我所看到的行为。我想避免在 webhook 中取消订阅,使用订阅计划有什么帮助? 您将建立一个具有正确迭代次数的计划,然后将end_behavior 设置为cancel:stripe.com/docs/billing/subscriptions/…

以上是关于Stripe:即使设置了 CancelAt 字段,也会向客户收取全额费用的主要内容,如果未能解决你的问题,请参考以下文章

Stripe:如何在没有计划的情况下设置定期付款?

如何向 Stripe Charge 添加数量字段? JavaScript

Ruby - 即使抛出了 Stripe 异常,else 块中的代码也会执行

Facebook 电子邮件字段返回 null(即使设置并接受了“电子邮件”权限)

php 从Stripe信用卡字段中删除type =“tel”

如何在 Stripe Checkout 中添加增值税?