Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /* @api */
- define([
- 'jquery',
- 'mageUtils'
- ], function ($, utils) {
- 'use strict';
- var types = [
- {
- title: 'Elo',
- type: 'Rede-Elo',
- pattern: '^((((636368)|(438935)|(636369)|(504175)|(451416)|(636297)|(506699))\\d{0,10})|((5067)|(4576)|(4011))\\d{0,12})$',
- gaps: [4, 8, 12],
- lengths: [16],
- code: {
- name: 'CVC',
- size: 3
- }
- },
- {
- title: 'Visa',
- type: 'Rede-Visa',
- pattern: '^4\\d*$',
- gaps: [4, 8, 12],
- lengths: [16],
- code: {
- name: 'CVV',
- size: 3
- }
- },
- {
- title: 'MasterCard',
- type: 'Rede-Master',
- pattern: '^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$',
- gaps: [4, 8, 12],
- lengths: [16],
- code: {
- name: 'CVC',
- size: 3
- }
- },
- {
- title: 'Diners',
- type: 'Rede-Diners',
- pattern: '^(3(0[0-5]|095|6|[8-9]))\\d*$',
- gaps: [4, 10],
- lengths: [14, 16, 17, 18, 19],
- code: {
- name: 'CVV',
- size: 3
- }
- },
- {
- title: 'Hipercard',
- type: 'Rede-Hipercard',
- pattern: '^(606282\\d{10}(\\d{3})?)|(3841\\d{15})$',
- gaps: [4, 8, 12],
- lengths: [16],
- code: {
- name: 'CVC',
- size: 3
- }
- }
- ];
- return {
- /**
- * @param {*} cardNumber
- * @return {Array}
- */
- getCardTypes: function (cardNumber) {
- var i, value,
- result = [];
- if (utils.isEmpty(cardNumber)) {
- return result;
- }
- if (cardNumber === '') {
- return $.extend(true, {}, types);
- }
- for (i = 0; i < types.length; i++) {
- value = types[i];
- if (new RegExp(value.pattern).test(cardNumber)) {
- result.push($.extend(true, {}, value));
- }
- }
- this.selectedCardTypes(result);
- return result;
- },
- selectedCardTypes : function (value) {
- var selectedTypes = document.querySelectorAll('.credit-card-types .item');
- var dataResult = $(value).attr('type');
- for (var i = 0; i < selectedTypes.length; i++) {
- var currentSelector = selectedTypes[i];
- var dataType = $(currentSelector).attr('data-type');
- if (dataResult === dataType) {
- $(currentSelector).addClass('active');
- $(currentSelector).find('input[type="radio"]').prop('checked',true);
- $(currentSelector).removeClass('inactive');
- }else {
- $(currentSelector).find('input[type="radio"]').prop('checked',false);
- $(currentSelector).removeClass('active');
- $(currentSelector).addClass('inactive');
- }
- }
- }
- };
- });
Add Comment
Please, Sign In to add comment