【问题标题】:I am using stripe in my laravel application, when I submit payment I get this error我在我的 laravel 应用程序中使用条纹,当我提交付款时出现此错误
【发布时间】:2022-06-17 04:45:10
【问题描述】:

Cartalyst\Stripe\Exception\MissingParameterException 您不能多次使用 Stripe 令牌:tok_1LBOP6HwG6zssijf0D93dHRk。

我不知道是否应该更改条带键,因为我从 Udemy 购买了课程,所以我认为讲师已经多次使用该键。我需要有关如何集成自己的密钥集成的指导以避免此错误。 这是我的 checkout.blade.php 代码

表格从这里开始。

<hr>
Total Price:${{$cart->totalPrice}}
</div>

    <div class="col-md-6">
        <div class="card">
            <div class="card-header">Checkout</div>
            <div class="card-body">

         <form action="/charge" method="post" id="payment-form">@csrf
                      <div class="form-group">
                        <label>Name</label>
                        <input type="text" name="name" id="name" class="form-control" required="" value="{{auth()->user()->name}}" readonly="">
                      </div>
                    
                      <div class="form-group">

                        <label>Adress</label>
                        <input type="text" name="address" id="address" class="form-control" required="">
                      </div>
                      <div class="form-group">

                        <label>City</label>
                        <input type="text" name="city" id="city" class="form-control" required="">
                      </div>
                      <div class="form-group">

                        <label>State</label>
                        <input type="text" name="state" id="state" class="form-control" required="">
                      </div>
                      <div class="form-group">

                        <label>Postal code</label>
                        <input type="text" name="postalcode" id="postalcode" class="form-control" required="">
                      </div>
                      <div class="">
              <input type="hidden" name="amount" value="{{$amount}}">


                <div class="">
                <label for="card-element">
                    Credit or debit card
                  </label>
                  <div id="card-element">
                    <!-- A Stripe Element will be inserted here. -->
                  </div>

                  <!-- Used to display form errors. -->
                  <div id="card-errors" role="alert"></div>
                </div>

                <button class="btn btn-primary mt-4" type="submit">Submit Payment</button>
   
            </form>
            </div>
        </div>
    </div>
</div>
</div>

我的脚本代码,不知道是API key还是java脚本的问题

<script src="https://js.stripe.com/v3/"></script>
<script type="text/javascript">

  // Create a Stripe client. 

window.onload=function(){
var stripe = Stripe('pk_test_no5YZwniXP4Qw4l5HKzJi3fS');

var elements = stripe.elements();

var style = {
  base: {
    color: '#32325d',
    fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
    fontSmoothing: 'antialiased',
    fontSize: '16px',
    '::placeholder': {
      color: '#aab7c4'
    }
  },
  invalid: {
    color: '#fa755a',
    iconColor: '#fa755a'
  }
};

// Create an instance of the card Element.
var card = elements.create('card', {style: style});

// Add an instance of the card Element into the `card-element` <div>.
card.mount('#card-element');

card.addEventListener('change', function(event) {
  var displayError = document.getElementById('card-errors');
  if (event.error) {
    displayError.textContent = event.error.message;
  } else {
    displayError.textContent = '';
  }
});

// Handle form submission.
var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
  event.preventDefault();

  var options={
    name:document.getElementById('name').value,
    address_line1:document.getElementById('address').value,
    address_city:document.getElementById('city').value,
    address_state:document.getElementById('state').value,
    address_zip:document.getElementById('postalcode').value
  }

  stripe.createToken(card,options).then(function(result) {
    if (result.error) {
      // Inform the user if there was an error.
      var errorElement = document.getElementById('card-errors');
      errorElement.textContent = result.error.message;
    } else {
      // Send the token to your server.
      stripeTokenHandler(result.token);
    }
  });
});

// Submit the form with the token ID.
function stripeTokenHandler(token) {
  // Insert the token ID into the form so it gets submitted to the server
  var form = document.getElementById('payment-form');
  var hiddenInput = document.createElement('input');
  hiddenInput.setAttribute('type', 'hidden');
  hiddenInput.setAttribute('name', 'stripeToken');
  hiddenInput.setAttribute('value', token.id);
  form.appendChild(hiddenInput);

  // Submit the form
  form.submit();
}
}
</script>

【问题讨论】:

  • 它是你不能多次使用的令牌,而不是密钥
  • 那么我该怎么做呢?这是我第一次尝试这个。

标签: php laravel stripe-payments


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
相关资源
最近更新 更多