我正在使用帶 PHP 的 Stripe,我想在使用 Stripe Checkout Session 付款后創建對客戶的訂閱。
但是,問題是當我們使用 Stripe Checkout Session 進行一次性付款時,Stripe 不會將來源(信用卡)附加到客戶,當我嘗試為該客戶訂閱計劃時,Stripe 會回傳錯誤:
This customer has no attached payment source or default payment method.
我不明白為什么 Stripe 不通過一次性付款將卡附加到客戶身上,因為當我們使用帶有訂閱的結帳會話時,Stripe 會這樣做。
我如何創建結帳會話:
$checkout_session = Session::create([
'payment_method_types' => ['card'],
'mode' => 'payment',
'customer' => 'cus_xxxxxxxx',
'line_items' => [[
'price' => 'price_xxxxx', // Oneshot payment
'quantity' => 1,
]]
]);
我如何嘗試訂閱客戶(成功付款后):
$subscription = Subscription::create([
'customer' => 'cus_xxxxxxxx',
'items' => [
['price' => 'price_XXXXXXX'] // Recurrent payment
],
'trial_from_plan' => true,
]);
謝謝您的幫助
uj5u.com熱心網友回復:
使用 Checkout 接受一次性付款時,默認情況下不會創建客戶或保存卡詳細資訊。您需要做的是配置 Checkout 在付款期間為您執行此操作。這在他們的檔案中有所介紹。
您需要做的是像這樣設定payment_intent_data[setup_future_usage] 引數:
$checkout_session = Session::create([
'payment_method_types' => ['card'],
'mode' => 'payment',
'customer' => 'cus_xxxxxxxx',
'line_items' => [[
'price' => 'price_xxxxx', // Oneshot payment
'quantity' => 1,
]],
'payment_intent_data' => [
'setup_future_usage' => 'off_session',
]
]);
之后,您將擁有可以重復使用的 Customercus_123和 PaymentMethod 。pm_123雖然該 PaymentMethod 不會是默認方法,但您需要確保在創建 Subscription 時在default_payment_method 引數中傳遞其 id,如下所示:
$subscription = Subscription::create([
'customer' => 'cus_xxxxxxxx',
'items' => [
['price' => 'price_XXXXXXX'] // Recurrent payment
],
'trial_from_plan' => true,
'default_payment_method' => 'pm_12345',
]);
另請注意,您可以直接從 Checkout 開始訂閱,如此處所述。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/527197.html
標籤:php条纹支付
上一篇:如何使用GoogleApps腳本在一系列單元格上生成多個SUMIF值?
下一篇:向登錄用戶顯示資料-PHP
