公共函数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。