创建带有额外天数的Stripe订阅但立即收费?

时间:2017-04-30 01:14:24

标签: stripe-payments laravel-cashier

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

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

然后我尝试按天数创建计划(这不是很理想但值得一试)但很快就发现你无法按照超过365天(一年的计划)制定计划我们的模型是365 + 14)。

我现在正考虑创建一个14天的temp计划,订阅用户,收费,然后在14天后,将用户的计划转换为{{ 1}} 6(或12)月计划。这只是感觉过于复杂,需要额外添加额外的天数。我没有在文档中的任何地方看到任何解决此问题的内容。

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

更新

我刚发现您可以在使用试用版结算订阅后更改结算周期。这意味着我能够创建具有多个计划的客户订阅,例如6个月,然后立即创建该订阅的14天试用版。如果我走这条路线,看起来我需要将real设置为 false ,这可能会成功。

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

1 个答案:

答案 0 :(得分:1)

我不确定为什么这会被投票,因为这是一个有效的问题,因为收银员的限制以及非常规用例。

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

我有时间去探索这个,发现Laravel Cashier 无法 处理完订阅后的订阅。那里没有更新功能。只有改变/取消计划的基本能力。这对我的需求没有用。

我最终做的是使用Cashier创建发票以及创建订阅。在我能够直接使用Stripe API编辑该订阅之后。通过在此订阅trial_end之后添加日期设置为14天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中的错误,但只是在订阅更新后14天指定trial_end日期会导致发票在该试用结束日期之后立即重新生成 - 尽管计划的间隔是一年。