首页  >  问答  >  正文

显示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粉237125700469 天前542

全部回复(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
  • 取消回复