0

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

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

$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 自己的文档说明如下:

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

如果新计划的计费频率与旧计划不同(例如,按月到按年、从激活到试用、从免费到激活等等)

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

4

1 回答 1

2

您可以做的是在更新订阅以切换到新计划之前创建所需的发票项目(自动创建的发票将包括所有待处理的发票项目)。

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

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

于 2015-12-10T22:36:16.687 回答