首頁  >  問答  >  主體

顯示0.00金額給Stripe。

<p>我正在使用Stripe,在這裡用戶透過一次付款訂閱不同的付費方案。付款成功進行,但主要問題是在3D Secure付款過程中(我們在歐洲運營,3D Secure付款檢查是強制性的),顯示給用戶的金額是0,00。這不僅是錯誤的,更重要的是,對即將進行付款的人來說是令人困惑的。</p>
公用函數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">
</表格>
當我調試時 #_originalValues:陣列:39 [▼ “id” => “pi_3NZqdIC6ZwDjQHNX1R7KJLoO” “對象”=> “付款意圖” “金額”=> 100 “amount_capturable” =>; 0 “金額_詳細資料” =>數組:1 [▼ “提示”=> [] ] “收到的金額”=> 100</預> <p><br />></p>
P粉237125700P粉237125700420 天前496

全部回覆(1)我來回復

  • P粉403549616

    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。

    #

    回覆
    0
  • 取消回覆