Laravel Cashier упрощает обмен планами:
$user->subscription('premium')
->swapAndInvoice();
Эта функция также хороша, потому что она выставляет счет пользователю сразу же, ОДНАКО, она также заставляет пользователя платить сразу, а не ждать час, как обычно. Это мешает моему invoice.created
потому что когда-то swapAndInvoice
случается, я не могу внести дальнейшие изменения в счет-фактуру.
Если я просто использую ->swap()
Похоже, он вообще не создает счет-фактуру, а просто создает позиции, ожидающие добавления в следующий счет-фактуру. Мысли ценятся.
После публикации этого вопроса я фактически отправил запрос на извлечение в репозиторий Laravel Cashier, чтобы добавить метод в StripeGateway.php
файл, который может выполнять такие функции.
/**
* Invoice the billable entity outside of regular billing cycle without charging the user immediately.
*
* @return bool
*/
public function invoiceWithoutImmediateCharge()
{
try
{
$customer = $this->getStripeCustomer();
// Removed this because it immediately charges the user which doesn't allow the invoice to be modified by webhooks
//Stripe_Invoice::create(['customer' => $customer->id], $this->getStripeKey())->pay();
Stripe_Invoice::create(['customer' => $customer->id], $this->getStripeKey());
return true;
}
catch (\Stripe_InvalidRequestError $e)
{
return false;
}
}
Других решений пока нет …