1

我有一个独特的用例,我需要在 Stripe 订阅计划的基础上再增加 14 天,但立即向客户收费。所以如果计划是6个月的计划,我们真的想给用户6个月零14天。

我原本以为我可以为此利用 Stripe 的试用功能,但发现试用功能会导致在 14 天过去后发生计费,这不是我们想要的。

然后我尝试按天数创建计划(这不是很理想,但值得一试),但很快发现您无法按天创建超过 365 天的计划(我们模型为 365+14 的一年计划) .

我现在正在考虑创建一个 14 天temp计划,向用户订阅,向他们收费,然后在 14 天之后,将用户的计划切换到real6(或 12)个月的计划。这只是感觉过于复杂,因为想要简单地增加额外的天数会产生很多开销。我在文档中没有看到任何解决此问题的内容。

我应该提到我打算在这个项目中使用 Laravel Cashier,并且我还需要为每个订阅提供多个计划。

更新:

我刚刚发现,您可以在使用试用版对订阅进行计费后更改计费周期。这意味着我应该能够创建一个包含多个计划的客户订阅,比如 6 个月,然后立即在该订阅上创建 14 天试用。如果我走这条路,看起来我需要设置proratefalse,这可能会奏效。

我仍然需要知道这是否会达到预期的效果,以及与收银员和多个计划一起工作。

4

1 回答 1

2

我不确定为什么这被否决了,因为考虑到 Cashier 的局限性以及非常规的用例,这是一个有效的问题。

对于在使用 Stripe & Laravel Cashier 时可能有更多自定义需求并遇到此问题的任何人:

从那以后,我有时间对此进行探索,发现 Laravel Cashier无法在事后编辑订阅。那里没有更新功能。只有更改/取消计划的基本能力。这不符合我的需要。

我最终做的是使用 Cashier 创建发票以及创建订阅。在我能够直接使用 Stripe API 来编辑该订阅之后。通过在订阅trial_end14 天添加一个日期,我可以将下一张发票的开票日期强制到我需要的地方。current_period_end

例如,当用户订阅 1 年计划时,我的更新代码如下所示:

    $current = Carbon::now();
    $BillCycleDate = $current->addDays(379)->timestamp; 

    $edit_subscription = \Stripe\Subscription::retrieve($subscription->stripe_id);
    $edit_subscription->trial_end = $BillCycleDate; 
    $edit_subscription->prorate = false;
    $edit_subscription->save();

此外,我不确定它是否是 Stripe API 中的错误,但仅trial_end在订阅更新中指定 14 天后的日期会导致发票在试用结束日期后立即重新计费 - 尽管计划的间隔为一年。

于 2017-05-16T21:14:45.690 回答