在开发Stripe Elements中无法获得stripeToken

时间:2018-09-16 04:01:34

标签: php laravel stripe-payments

我是robal,Inc.的首席执行官兼开发人员。这是日本创业公司。

我正在开发C到C(从消费者到消费者)的Web应用程序服务,并将添加Stripe Elements作为在线支付系统。

我的开发环境如下: PHP 7.1 Laravel 5.5

我正在使用Stripe Elements文档进行开发。 Stripe Elements

我想问一个问题。

我已经完成了本文档的所有步骤。

在付款表格中输入信用卡信息并提交表格后,应该发出stripeToken,但是在我的实现中,不会发出stripeToken。

调试从Stripe文档复制和粘贴的JavaScript似乎似乎无法正确运行以下几点。

JavaScript

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

    stripe.createToken(card).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);
        }
    });
});
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();
}

我认为上面的代码在提交付款表单时会被点燃,并且发出stripeToken,但这似乎并不能很好地点燃。

但是,即使提交,我也不知道为什么未将其点燃。 如果有人知道解决方案或什么都不知道,我想请你告诉我。

我将在下面粘贴实际上有问题的代码。

reserve.blade.php

<script src="https://js.stripe.com/v3/"></script>
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <form action="{{ route('experiences.complete', $model) }}" method="post" id="payment-form">
                {{ csrf_field() }}
                <div class="form-row">

                    <label for="card-element">お支払い</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">支払う</button>

            </form>
        </div>
    </div>
</div>

<script>
(function(){
    // Create a Stripe client.
    var stripe = Stripe('{{ config('services.stripe.key')}}');

    // Create an instance of Elements.
    var elements = stripe.elements();

    // Custom styling can be passed to options when creating an Element.
    // (Note that this demo uses a wider set of styles than the guide below.)
    var style = {
      base: {
        color: '#32325d',
        lineHeight: '18px',
        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,
        hidePostalCode: true,
        });

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

    // Handle real-time validation errors from the 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();

      stripe.createToken(card).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);
        }
      });
    });
    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();
    }
})();

0 个答案:

没有答案