Php 条带函数正在一次又一次地调用,令牌正在反复更改?

Php 条带函数正在一次又一次地调用,令牌正在反复更改?,php,jquery,laravel,stripe-payments,Php,Jquery,Laravel,Stripe Payments,请帮助我查找条带支付中的一个错误,其中inspect元素中的令牌在反复更改,函数似乎在一次又一次地调用?谁能告诉我哪里出了问题?请帮助我查找条带支付中的一个错误,其中inspect元素中的令牌在反复更改,函数似乎在一次又一次地调用?谁能告诉我哪里出了问题 **stripe.blade.php** @extends('layouts.user') @section('title', 'Stripe Payment') @section('content') <div class=&quo

请帮助我查找条带支付中的一个错误,其中inspect元素中的令牌在反复更改,函数似乎在一次又一次地调用?谁能告诉我哪里出了问题?请帮助我查找条带支付中的一个错误,其中inspect元素中的令牌在反复更改,函数似乎在一次又一次地调用?谁能告诉我哪里出了问题

**stripe.blade.php**

@extends('layouts.user')
@section('title', 'Stripe Payment')
@section('content')

<div class="container my-5">
  
  
    <div class="row my-5">
        <div class="col-md-6 col-md-offset-3 my-5">
            <div class="panel panel-default credit-card-box">
                <div class="panel-heading display-table" >
                    <div class="row display-tr" >
                        <h3 class="panel-title display-td" >Payment Details</h3>
                        <div class="display-td" >                            
                            <a href="{{url('user/stripe')}}"><img src="{{url('assets/user/img/payment.png')}}" alt=""></a>
                        </div>
                    </div>                    
                </div>
                <div class="panel-body">
  
                    @if (Session::has('success'))
                        <div class="alert alert-success text-center">
                            <a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
                            <p>{{ Session::get('success') }}</p>
                        </div>
                    @endif
  
                    <form role="form" action="{{url('user/stripe')}}" method="post" class="require-validation" data-cc-on-file="false"
                     data-stripe-publishable-key="{{ env('STRIPE_KEY') }}" id="payment-form">
                        @csrf
                        <input type="hidden" name="stripeToken" id="stripeToken" value="">
                        <input type="hidden" name="user_id" value="{{ Auth::user()->id }}">
                        <div class='form-row row'>
                            <div class='col-xs-12 form-group required'>
                                <label class='control-label'>Name on Card</label> <input
                                    class='form-control' name='card_name' size='4' type='text'>
                            </div>
                        </div>
  
                        <div class='form-row row'>
                            <div class='col-xs-12 form-group card required'>
                                <label class='control-label'>Card Number</label> <input
                                    autocomplete='off' name='card_number' class='form-control card-number' size='20'
                                    type='text'>
                            </div>
                        </div>
  
                        <div class='form-row row'>
                            <div class='col-xs-12 col-md-4 form-group cvc required'>
                                <label class='control-label'>CVC</label> <input autocomplete='off'
                                    class='form-control card-cvc' name='cvc' placeholder='ex. 311' size='4'
                                    type='text'>
                            </div>
                            <div class='col-xs-12 col-md-4 form-group expiration required'>
                                <label class='control-label'>Expiration Month</label> <input
                                    class='form-control card-expiry-month' name='exp_month' placeholder='MM' size='2'
                                    type='text'>
                            </div>
                            <div class='col-xs-12 col-md-4 form-group expiration required'>
                                <label class='control-label'>Expiration Year</label> <input
                                    class='form-control card-expiry-year' name='exp_year' placeholder='YYYY' size='4'
                                    type='text'>
                            </div>
                        </div>
  
                        <div class='form-row row'>
                            <div class='col-md-12 error form-group hide'>
                                <div class='alert-danger alert'>Please correct the errors and try
                                    again.</div>
                            </div>
                        </div>
  
                        <div class="row">
                            <div class="col-xs-12">
                                <button class="btn btn-success btn-lg btn-block" type="submit">Pay Now ($100)</button>
                            </div>
                        </div>    
                    </form>
                </div>
            </div>        
        </div>
    </div>   
</div>
  
</body>

@endsection

@section('user_specific_js')

<script type="text/javascript">
$(function() {
    var $form = $(".require-validation");
     $('form.require-validation').bind('submit', function(e) {
          var $form = $(".require-validation"),
               inputSelector = ['input[type=email]', 'input[type=password]',
                         'input[type=text]', 'input[type=file]',
                         'textarea'].join(', '),
          $inputs = $form.find('.required').find(inputSelector),
          $errorMessage = $form.find('div.error'),
          valid = true;
          $errorMessage.addClass('hide');
          $('.has-error').removeClass('has-error');
    
          $inputs.each(function(i, el) {
          var $input = $(el);
          if ($input.val() === '') {
              $input.parent().addClass('has-error');
              $errorMessage.removeClass('hide');
              e.preventDefault();
          }
    });
  
    if (!$form.data('cc-on-file')) {
      e.preventDefault();
      Stripe.setPublishableKey($form.data('stripe-publishable-key'));
      Stripe.createToken({
        number: $('.card-number').val(),
        cvc: $('.card-cvc').val(),
        exp_month: $('.card-expiry-month').val(),
        exp_year: $('.card-expiry-year').val()
      }, stripeResponseHandler);
    }
  
  });
  
  function stripeResponseHandler(status, response) {
        if (response.error) {
            $('.error')
                .removeClass('hide')
                .find('.alert')
                .text(response.error.message);
        } else {
            // token contains id, last4, and card type
            var token = response['id'];
            // insert the token into the form so it gets submitted to the server
            $form.find('input[type=text]').empty();
            $('#stripeToken').val(token);
            $('#payment-form').submit();
            
        }
    }
  
});
</script>

@endsection



**CheckoutController**


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Stripe;


class CheckoutController extends Controller
{
    /**
     * success response method.
     *
     * @return \Illuminate\Http\Response
     */
    public function stripe()
    {
        return view('user.stripe');
    }
  
    /**
     * success response method.
     *
     * @return \Illuminate\Http\Response
     */
    public function stripePost(Request $request)
    {
        Log::info(print_r($request->all, true));

        Stripe\Stripe::setApiKey(env('STRIPE_SECRET'));
        $customer = \Stripe\Customer::create([
            'email' => $request->user()->email,
            'payment_method' => $request->input('stripeToken'),
            'invoice_settings' => [
              'default_payment_method' => $request->input('stripeToken'),
            ],
        ]);


        Log::info("Create Customer Response");
        Log::info(print_r($customer, true));
        
        Session::flash('success', 'Payment successful!');

        return back();
    }
}
**stripe.blade.php**
@扩展('layouts.user')
@章节(‘标题’、‘分条付款’)
@节(“内容”)
付款详情
@if(会话::has('success'))
{{Session::get('success')}

@恩迪夫 @csrf 卡片上的名字 卡号 CVC 到期月份 到期年 请更正错误并重试 再一次。 立即付款(100美元) @端部 @节(“特定于用户的内容”) $(函数(){ var$form=$(“.require validation”); $('form.require validation').bind('submit',函数(e){ var$form=$(“.require validation”), inputSelector=['input[type=email],'input[type=password], '输入[类型=文本],'输入[类型=文件], 'textarea'].join(','), $inputs=$form.find('.required').find(inputSelector), $errorMessage=$form.find('div.error'), 有效=真; $errorMessage.addClass('hide'); $('.has-error').removeClass('has-error'); $inputs.每个(功能(i、el){ 变量$input=$(el); 如果($input.val()==''){ $input.parent().addClass('has-error'); $errorMessage.removeClass('hide'); e、 预防默认值(); } }); if(!$form.data('cc-on-file')){ e、 预防默认值(); Stripe.setPublishableKey($form.data('Stripe-publishable-key'); Stripe.createToken({ 编号:$('.card number').val(), cvc:$('.card cvc').val(), exp_month:$('.card expiration month').val(), exp_year:$('.card expiration year').val() },stripeResponseHandler); } }); 函数stripeResponseHandler(状态、响应){ if(response.error){ $(“.error”) .removeClass('hide')) .find(“.alert”) .text(响应.错误.消息); }否则{ //令牌包含id、last4和卡类型 变量标记=响应['id']; //将令牌插入表单,以便将其提交到服务器 $form.find('input[type=text]').empty(); $('#stripeToken').val(令牌); $(“#付款单”)。提交(); } } }); @端部 **签出控制器**
您需要通过禁用代码来缩小问题的范围,直到隔离错误

看起来您有一个由
$(“#付款单”)触发的循环。submit()因为您还绑定了
表单上的
提交
操作。需要验证

$('form.require-validation').bind('submit'...
然后在内部调用
stripeResponseHandler
,它再次激发
$(“#付款单”).submit()


你需要打破这个循环。

似乎是
如果(!$form.data('cc-on-file')){
可能是原因。还是同样的问题