Создайте счет-фактуру для платежей в полоску

#php #stripe-payments #payment

Вопрос:

Я использую полосу для одноразовых платежей и подписок.
Чтобы создать платеж, я использую выписку в полоску:

 StripeCheckoutSession::create([
    'customer' => 'cus_XXXXX',
    'success_url' => '',
    'cancel_url' => '',
    'payment_method_types' => ['card'],
    'mode' => ($isSubscription ? 'subscription' : 'payment'),
    'line_items' => [...]
]);

header('Location: '.$checkout_session->url);
exit;
 

Этот код автоматически создает счет для режима подписки, но не для разовых платежей.
Я пробовал это сделать, чтобы создать новый счет, но как я могу сделать так, чтобы он был связан с предыдущим платежом, закрыт и оплачен?

 $stripe = new StripeStripeClient('xxx');
$stripe->invoiceItems->create([
    'customer' => 'cus_XXXXX',
    'amount' => '1000',
    'currency' => 'eur',
    'description' => 'Lorem ipsum...'
]);
$invoice = $stripe->invoices->create([
    'customer' => 'cus_XXXXX',
]);
 

Комментарии:

1.При обычном создании подписки вы можете использовать add_invoice_items stripe.com/docs/api/subscriptions/…; однако я пока не вижу поддержки Stripe при оформлении заказа.

Ответ №1:

Я нашел способ создать счет-фактуру для каждой оплаченной отметки платежа.
Это, однако, не связывает их с оплатой.

На веб-крючке checkout.session.completed выполните следующие действия:

 $stripe = new StripeStripeClient('xxx');

// Create invoice lines
$stripe->invoiceItems->create([
    'customer' => 'cus_XXXXX',
    'amount' => '1000',
    'currency' => 'eur',
    'description' => 'Lorem ipsum...'
]);

// Create invoice
$invoice = $stripe->invoices->create([
    'customer' => 'cus_XXXXX',
]);

// Finalize and mark invoice paid outside of Stripe
$invoice->finalizeInvoice();
$invoice->pay(['paid_out_of_band' => true]);