acquia_commercemanager-8.x-1.122/modules/acm_payment/js/braintree/pane.js

modules/acm_payment/js/braintree/pane.js
/**
 * @file
 * Attaches behaviors for the Braintree pane.
 */

(function($, Drupal, braintree) {
  'use strict';

  Drupal.behaviors.braintree = {
    attach: function(context, settings) {
      var $form = $('#multistep-default');
      var $pane = $('#braintree_pane');
      var $nonceField = $('input[name="payment_methods[payment_details][payload_nonce]"]');
      var $cardImage = $('.cardinfo__card-image');
      var submit = $('input[type="submit"]', $form).get(0);
      var braintreeSettings = settings.braintree || {};
      var authorizationToken = braintreeSettings.authorizationToken;

      if (!$pane.length || typeof authorizationToken === 'undefined') {
        return;
      }

      braintree.client.create({
        authorization: authorizationToken,
      }, function(err, clientInstance) {
        if (err) {
          return;
        }

        // Create input fields and add text styles.
        braintree.hostedFields.create({
          client: clientInstance,
          styles: {
            'input': {
              'color': '#282c37',
              'font-size': '16px',
              'transition': 'color 0.1s',
              'line-height': '3'
            },
            // Style the text of an invalid input.
            'input.invalid': {
              'color': '#E53A40'
            },
            // Placeholder styles need to be individually adjusted.
            '::-webkit-input-placeholder': {
              'color': 'rgba(0,0,0,0.6)'
            },
            ':-moz-placeholder': {
              'color': 'rgba(0,0,0,0.6)'
            },
            '::-moz-placeholder': {
              'color': 'rgba(0,0,0,0.6)'
            },
            ':-ms-input-placeholder': {
              'color': 'rgba(0,0,0,0.6)'
            }
          },
          fields: {
            number: {
              selector: '#cc-card-number',
              placeholder: '1111 1111 1111 1111'
            },
            cvv: {
              selector: '#cc-cvv',
              placeholder: '123'
            },
            expirationDate: {
              selector: '#cc-expiration-date',
              placeholder: '10 / 2019'
            }
          }
        }, function(err, hostedFieldsInstance) {
          if (err) {
            return;
          }

          hostedFieldsInstance.on('empty', function(event) {
            $cardImage.removeClass();
            $pane.removeClass();
          });

          hostedFieldsInstance.on('cardTypeChange', function(event) {
            // Change card bg depending on card type.
            if (!event.cards.length) {
              hostedFieldsInstance.setPlaceholder('cvv', '123');
            }
            else {
              $pane.removeClass().addClass(event.cards[0].type);
              $cardImage.removeClass().addClass(event.cards[0].type);

              // Change the CVV length for AmericanExpress cards.
              if (event.cards[0].code.size === 4) {
                hostedFieldsInstance.setPlaceholder('cvv', '1234');
              }
            }
          });

          submit.addEventListener('click', function(event) {
            event.preventDefault();

            hostedFieldsInstance.tokenize(function(err, payload) {
              if (err) {
                // @TODO: Add front-end error messages if this fails.
                return;
              }

              $nonceField.val(payload.nonce);
              $form.submit();
            });
          }, false);
        });
      });
    }
  };

})(jQuery, Drupal, braintree);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc