templates/_credit_card_js.html.twig line 1

Open in your IDE?
  1. <script src="https://js.stripe.com/v3/"></script>
  2. <script type="text/javascript">
  3.     // Create a Stripe client
  4.     var stripe = Stripe('{{ stripe.publishable_key }}');
  5.     // Stripe Card
  6.     var card;
  7.     function initCard() {
  8.         // Create an instance of Elements
  9.         var elements = stripe.elements();
  10.         // Custom styling can be passed to options when creating an Element.
  11.         // (Note that this demo uses a wider set of styles than the guide below.)
  12.         var style = {
  13.             base: {
  14.                 color: '#32325d',
  15.                 lineHeight: '24px',
  16.                 fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
  17.                 fontSmoothing: 'antialiased',
  18.                 fontSize: '16px',
  19.                 '::placeholder': {
  20.                     color: '#aab7c4'
  21.                 }
  22.             },
  23.             invalid: {
  24.                 color: '#fa755a',
  25.                 iconColor: '#fa755a'
  26.             }
  27.         };
  28.         // Create an instance of the card Element
  29.         card = elements.create('card', {style: style});
  30.         // Add an instance of the card Element into the `card-element` <div>
  31.         card.mount('#card-element');
  32.         // Handle real-time validation errors from the card Element.
  33.         card.addEventListener('change', function (event) {
  34.             var displayError = document.getElementById('card-errors');
  35.             if (event.error) {
  36.                 displayError.textContent = event.error.message;
  37.             } else {
  38.                 displayError.textContent = '';
  39.             }
  40.         });
  41.     }
  42.     function resetCard() {
  43.         card.destroy();
  44.         initCard();
  45.     }
  46.     function saveCC(btn) {
  47.         var $form = $('#ccForm');
  48.         var $btn = $(btn);
  49.         $btn.prop('disabled', true);
  50.         stripe.createToken(card).then(function(result) {
  51.             if (result.error) {
  52.                 $btn.prop('disabled', false);
  53.                 // Inform the user if there was an error
  54.                 var errorElement = document.getElementById('card-errors');
  55.                 errorElement.textContent = result.error.message;
  56.                 if (window.ccPromise !== undefined) {
  57.                     window.ccPromise.resolve(false);
  58.                 }
  59.             } else {
  60.                 $('#stripe_credit_card_token').val(result.token.id);
  61.                 $('#stripe_credit_card_last4').val(result.token.card.last4);
  62.                 $('#stripe_credit_card_brand').val(result.token.card.brand);
  63.                 $('#stripe_credit_card_exp_month').val(result.token.card.exp_month);
  64.                 $('#stripe_credit_card_exp_year').val(result.token.card.exp_year);
  65.                 $('#card-element').addClass('is-valid');
  66.                 {% if doNotSubmit is defined and doNotSubmit %}
  67.                     // var ccInfo = '<p class="form-control-static">' +
  68.                     //     '<strong>' + result.token.card.brand + ' </strong> ending in ' + result.token.card.last4 +
  69.                     //     '</p>';
  70.                     // $('#cc_info').html(ccInfo);
  71.                     // $('#ccModal').modal('hide');
  72.                     if (window.ccPromise !== undefined) {
  73.                         window.ccPromise.resolve(true);
  74.                     }
  75.                 {% else %}
  76.                     $form.submit();
  77.                 {% endif %}
  78.             }
  79.         });
  80.     }
  81.     $(document).on('click', '#save-cc-btn', function() {
  82.         saveCC($(this));
  83.     });
  84. </script>