为条带付款创建发票
Posted
技术标签:
【中文标题】为条带付款创建发票【英文标题】:Create an invoice for stripe payments 【发布时间】:2021-11-02 12:31:36 【问题描述】:我正在使用 Stripe 进行一次性付款和订阅。 为了创建付款,我使用 Stripe Checkout:
\Stripe\Checkout\Session::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 Stripe\StripeClient('xxx');
$stripe->invoiceItems->create([
'customer' => 'cus_XXXXX',
'amount' => '1000',
'currency' => 'eur',
'description' => 'Lorem ipsum...'
]);
$invoice = $stripe->invoices->create([
'customer' => 'cus_XXXXX',
]);
【问题讨论】:
在正常的订阅创建中,您可以使用add_invoice_items
stripe.com/docs/api/subscriptions/…;但是,我还没有 Stripe 在 Checkout 上支持这一点。
【参考方案1】:
我找到了一种为每个已付款标记创建发票的方法。 但是,这不会将它们与付款相关联。
在 webhook checkout.session.completed
上执行以下操作:
$stripe = new Stripe\StripeClient('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]);
【讨论】:
以上是关于为条带付款创建发票的主要内容,如果未能解决你的问题,请参考以下文章