公用函數purchase(Request $request, Plan $plan) { $user = $request->user(); $ paymentMethod = $ request - > input(' payment_method'); $encryptedSystemId = $request->input('system_id'); $encryptedBoxId = $request->input('box_id'); // 解密加密的ID $systemId = Crypt::decrypt($encryptedSystemId); $boxId = Crypt::decrypt($encryptedBoxId); // 驗證ID和使用者授權 $system = System::findOrFail($systemId); $box = Box::findOrFail($boxId); $總計 = $計劃->價格; 嘗試 { $user->createOrGetStripeCustomer(); $user->updateDefaultPaymentMethod($ paymentMethod); $user->charge($total * 100, $ paymentMethod, [ '元資料' => ['系統ID' => $系統ID, 'box_id'=> $boxId, '租戶id'=> $用戶->租戶->id, ] ]); // * 100 因為 Stripe 處理的是美分 } catch (異常$異常) { return back()->with('error', '處理付款時發生錯誤:' . $exception->getMessage()); } <腳本 src="https://js.stripe.com/v3/"></script> <腳本> 令 stripe = Stripe("{{ env('STRIPE_KEY') }}") 讓元素 = stripe.elements() 讓樣式= { 根據: { 顏色: '#32325d', fontFamily: '"Helvetica Neue", Helvetica, sans-serif', fontSmoothing: '抗鋸齒', 字體大小:'16px', '::佔位符': { 顏色:'#aab7c4' } }, 無效的: { 顏色: '#fa755a', 圖示顏色:'#fa755a' } } 讓卡 = elements.create('卡', { 風格: 風格 }) 卡.mount('#card-element') 讓 paymentMethod = null $('.card-form').on('提交', function(e) { $('#pay-btn').attr('已停用', true) if (付款方式) { 回傳真 } stripe.confirmCardSetup( "{{ $intent->client_secret }}", { 付款方式: { 卡: 卡, 結算明細: { 名稱:$('.card_holder_name').val() } } } ).then(函數(結果) { if (結果.錯誤) { toastr.錯誤( '__("出租。您輸入的資料有錯誤!請審核 然後再試一次")') $('#pay-btn').removeAttr('已停用') }別的 { paymentMethod = result.setupIntent. payment_method $('.支付方法').val(支付方法) $('.card-form').submit() $('span.icon').removeAttr('隱藏'); $('#pay-btn').attr('已停用', true) } }) 回傳錯誤 });<div id="card-errors" role="alert"></div> <div class="mt-3 text-center">
P粉4035496162023-08-01 11:45:55
根據您提供的程式碼,您正在使用SetupIntents來收集付款方式的詳細資訊。 SetupIntents用於收集用於將來使用的付款方式詳細資訊:https://stripe.com/docs/payments/save-and-reuse。預計如果需要3DS,則金額為0.00,因為您在收集付款方式時不會對卡片收取任何金額。
如果您正在使用訂閱功能,您應該按照此指南進行操作:https://stripe.com/docs/billing/subscriptions/build-subscriptions?ui=elements,在付款時收集和保存付款方式。
如果您正在使用一次性付款,則可以在付款同時收集和保存付款方式的詳細資訊:https://stripe.com/docs/payments/save-during-payment。