laravel cashier的invoicePrice()方法無法正常運作
P粉269847997
2023-08-29 10:12:00
<p>我正在嘗試使用laravel cashier和stripe來立即生成發票並向用戶收費,但它不起作用。我正在參考laravel-8文檔中的範例程式碼片段來做這個。 </p>
<pre class="brush:php;toolbar:false;">$user->invoicePrice('price_tshirt', 5, [
'discounts' => [
['coupon' => 'SUMMER21SALE']
],
], [
'default_tax_rates' => ['txr_id'],
]);</pre>
<p>我在我的stripe儀表板中創建了一個產品,並用產品的價格ID取代了'price_tshirt'。最後的程式碼看起來像這樣</p>
<pre class="brush:php;toolbar:false;">if(!$user->hasPaymentMethod()){
$user->addPaymentMethod($paymentMethod); //$paymentMethod方法是自動產生的
}
$user->invoicePrice('price_xxxxxxx', 1, [], [
'description' => '這是一個虛擬描述',
'currency' => 'usd',
'receipt_email' => 'john@doe.com'
]);</pre>
<p>運行程式碼後什麼都沒有發生,我查看了我的stripe儀表板,什麼都沒看到。我的目標是向使用者收費並為他們產生發票,以便我以後可以透過像這樣的程式碼存取這些發票<code>$user->invoices()</code></p>
<p>注意:
我之前使用的是<code>$user->charge(100, $paymentMethod);</code>,它完美地工作,但沒有產生任何發票,然後我決定改用<code>$user ->invoiceFor()</code>方法,這個方法只產生了一個發票,但使用者沒有被收費。我決定再次更改並使用<code>$user->invoicePrice()</code>,但這個方法根本沒有起作用。我需要讓用戶在付款後管理他們的發票,但我找不到一個可以幫助我做到這一點的方法(產生發票和收費)。我不知道我做錯了什麼,請幫忙。 </p>
聽起來問題是laravel使用了一個被Stripe禁用的“pending_invoice_items_behavior”為“include_and_require”,所以預設情況下項目被排除在外。
https://mobile.twitter.com/cjav_dev/status/1554922729081516033
我嘗試新增了一個新的參數,像這樣。
然而,我也遇到了貨幣錯誤,因為我的用戶之前在CAD中收費,當我嘗試使用USD的產品時(非常感謝之前發布這個問題的人!!)。
但是當我創建一個具有預先存在的貨幣的新用戶而不是客戶時,它就起作用了。