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 Charge 添加数量字段? JavaScript
Ruby - 即使抛出了 Stripe 异常,else 块中的代码也会执行
Facebook 电子邮件字段返回 null(即使设置并接受了“电子邮件”权限)