有一种情况是用户可以从月订阅转换为年度订阅。
可以使用以下代码完成:
$company->subscription('annual')
->withCoupon($couponCode)
->swapAndInvoice(1); // 1 is the quantity
这是有效的,但我注意到它会立即开票并在同一时刻向用户收费,这会立即关闭发票。这意味着webhooks无法修改发票以添加税项等行项目。
我甚至修改了swapAndInvoice
以使其不会立即付款以允许发票具有Stripe允许发票的通常~1小时修改期。但是,它仍会立即向用户收费。我认为这是因为从月度计费到年度计费的变化。但不确定。
//Stripe_Invoice::create(['customer' => $customer->id], $this->getStripeKey())->pay();
Stripe_Invoice::create(['customer' => $customer->id], $this->getStripeKey());
任何想法都表示赞赏。
Stripe自己的文档说明如下:
当客户在结算周期中间切换订阅计划时,会发生以下情况:
如果新计划的计费频率与旧计划不同(例如,每月到每年,从有效到试用,从免费到有效等)
新计划的第一个完整期间立即开始(或根据需要在试用期后开始),并且客户在第一期间减去帐户余额。
答案 0 :(得分:1)
在create the invoice items之前,您需要updating the subscription切换到新计划(自动创建的发票将包含所有待处理的发票项目)。
或者,您可以在非常短的试用期内更新订阅(即将trial_end
设置为将来的几秒钟)。审判结束后,将创建一个新发票,但不会立即关闭 - 它将被视为定期付款,并且发票将在尝试付款之前保持开放约一小时。 invoice.created
事件将发送到您的webhook端点,您可以添加所需的发票项目。
没有提供示例代码,因为我不熟悉Laravel Cashier,对不起!