【问题标题】:Swapping a subscription to different billing period with Laravel Cashier causes immediate charge使用 Laravel Cashier 将订阅切换到不同的计费周期会导致立即收费
【发布时间】:2016-03-16 14:04:20
【问题描述】:

有一种情况,用户可以从包月切换到包年。

这可以使用以下代码完成:

$company->subscription('annual')
        ->withCoupon($couponCode)
        ->swapAndInvoice(1); // 1 is the quantity

这可行,但我注意到它会立即向用户开具发票并同时向用户收费,这会立即关闭发票。这意味着 webhook 无法修改发票以添加税款等行项目。

我什至修改了swapAndInvoice 以使其不会立即付款,以允许发票具有 Stripe 允许发票的通常约 1 小时修改期。但是,它仍然会立即向用户收费。我认为这是因为从按月计费到按年计费的变化。但不确定。

//Stripe_Invoice::create(['customer' => $customer->id], $this->getStripeKey())->pay();
Stripe_Invoice::create(['customer' => $customer->id], $this->getStripeKey());

感谢任何想法。

Stripe 自己的文档说明如下:

当客户在计费周期中间切换订阅计划时,会发生以下情况:

如果新方案的计费频率与旧方案不同(例如,按月到按年、从有效到试用、从免费到有效等等)

新计划的第一个完整期间立即开始(或根据需要在试用期之后),并且客户在第一期间的费用减去帐户余额。

【问题讨论】:

    标签: laravel laravel-4 laravel-5 stripe-payments laravel-cashier


    【解决方案1】:

    您可以做的是在updating the subscription 之前需要create the invoice items 以切换到新计划(自动创建的发票将包括所有待处理的发票项目)。

    或者,您可以使用非常短的试用期更新订阅(即将trial_end 设置为未来几秒钟)。试用期结束后,将创建一个新发票,但不会立即关闭 - 它将被视为定期付款,并且发票将在尝试付款前保持开放约一小时。 invoice.created 事件将发送到您的 webhook 端点,然后您可以添加所需的发票项目。

    由于我对 Laravel Cashier 不熟悉,所以没有提供示例代码,抱歉!

    【讨论】:

    • 您的第一个想法当然是好的,但我应该提一下,用户在切换时也有可能输入优惠券,这增加了计算总数的另一个复杂因素。至于替代方案,我也尝试过,但随后它将按比例分配的行项目与新计划的账单分开在两张不同的发票中。就像每个方向都是路障一样!
    猜你喜欢
    • 2016-03-10
    • 2017-11-09
    • 2021-10-21
    • 2020-04-18
    • 2016-03-04
    • 2018-07-09
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多