Php 条带函数正在一次又一次地调用,令牌正在反复更改?
请帮助我查找条带支付中的一个错误,其中inspect元素中的令牌在反复更改,函数似乎在一次又一次地调用?谁能告诉我哪里出了问题?请帮助我查找条带支付中的一个错误,其中inspect元素中的令牌在反复更改,函数似乎在一次又一次地调用?谁能告诉我哪里出了问题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
**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')){
可能是原因。还是同样的问题