#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]);