Как поменять планы и создать счет без немедленной оплаты с помощью Laravel Cashier

Laravel Cashier упрощает обмен планами:

$user->subscription('premium')
->swapAndInvoice();

Эта функция также хороша, потому что она выставляет счет пользователю сразу же, ОДНАКО, она также заставляет пользователя платить сразу, а не ждать час, как обычно. Это мешает моему invoice.created потому что когда-то swapAndInvoice случается, я не могу внести дальнейшие изменения в счет-фактуру.

Если я просто использую ->swap()Похоже, он вообще не создает счет-фактуру, а просто создает позиции, ожидающие добавления в следующий счет-фактуру. Мысли ценятся.

1

Решение

После публикации этого вопроса я фактически отправил запрос на извлечение в репозиторий 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;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]