微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 收银员订阅 noProrate 设置锚定日期时的第一笔费用

如何解决Laravel 收银员订阅 noProrate 设置锚定日期时的第一笔费用

我正在使用 Laravel Cashier (Stripe) 创建订阅。我想设置它以便无论用户订阅的月份的哪一天,它都会立即向他们收取全额费用,然后将锚定日期设置为每三个月的第一天。

例如,在 3 月 8 日订阅用户将遵循以下付款间隔:

  • 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_datecreation_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 举报,一经查实,本站将立刻删除。