如何解决Laravel 收银员订阅 noProrate 设置锚定日期时的第一笔费用
我正在使用 Laravel Cashier (Stripe) 创建订阅。我想设置它以便无论用户订阅的月份的哪一天,它都会立即向他们收取全额费用,然后将锚定日期设置为每三个月的第一天。
- 3 月 8 日 - 已充值
- 6 月 1 日 - 已充值
- 9 月 1 日 - 已充值
- 12 月 1 日 - 已充值
- 等等....
我已经试过了,但它仍然是按比例分配第一次充电:
$anchor = Carbon::Now()->addMonths(3);
$anchor = $anchor->startOfMonth();
$subscription = $request->user()
->newSubscription('default','price_id')
->anchorBillingCycleOn($anchor->startOfDay())
->noprorate()
->create($request->paymentMethod);
感谢任何帮助!
解决方法
您还需要在创建订阅的请求中将 backdate_start_date
(请参阅 api ref)设置为当月的 1 日。需要注意的一件事是,使用它意味着您订阅的 start_date
和 creation_date
将不再相同 - start_date
将与您指定的回溯开始日期相同.
参考您已经给出的示例 - 如果您要在 3 月 8 日创建订阅,您需要将 billing_cycle_anchor
设置为 6 月 1 日(您的代码已经在这样做)并将 backdate_start_date
设置为 3 月 1 日(您需要添加)。这将立即为 3 月 1 日和 6 月 1 日之间的时间量创建发票,下一张发票将在 6 月 1 日创建。 Stripe 的文档讨论了这个 here。
以上信息对于 Stripe 而非 Laravel 收银员更通用。为了使用 Laravel 收银员设置 billing_cycle_anchor
,您的请求应如下所示:
$subscription = $request->user()
->newSubscription('default','price_id')
->anchorBillingCycleOn($anchor->startOfDay())
->noProrate()
->create($request->paymentMethod,[],['backdate_start_date' => {{BACKDATED_START_DATE}},]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。