Проверка кредитной карты с Jquery

Я пытаюсь проверить номера кредитных карт с помощью jQuery, но я не хочу использовать плагин проверки, есть ли другой плагин для этого?

3 ответа

Решение

http://en.wikipedia.org/wiki/Luhn_algorithm

Вы можете свести это ниже к минимуму в вашем коде.

function isCreditCard( CC )
 {                        
      if (CC.length > 19)
           return (false);

      sum = 0; mul = 1; l = CC.length;
      for (i = 0; i < l; i++)
      {
           digit = CC.substring(l-i-1,l-i);
           tproduct = parseInt(digit ,10)*mul;
           if (tproduct >= 10)
                sum += (tproduct % 10) + 1;
           else
                sum += tproduct;
           if (mul == 1)
                mul++;
           else
                mul--;
      }
      if ((sum % 10) == 0)
           return (true);
      else
           return (false);
 }

Если вы хотите быть уверены, что это действительный номер карты, вам нужно проверить намного больше, чем цифра Луна.

Цифра Луна предназначена только для проверки ошибок транспонирования и может быть легко подделана с помощью таких номеров, как 22222222222222222

Первые шесть цифр номера карты должны быть проверены. Эти цифры известны как идентификационный номер эмитента и могут использоваться для обеспечения того, чтобы номер находился в пределах распознанного диапазона. К сожалению, вам будет сложно найти исчерпывающий список IIN, не в последнюю очередь потому, что эмитенты постоянно добавляют и удаляют диапазоны. В Википедии есть очень простой обзор: номер банковской карты

Если вы можете определить тип карты по IIN, то вы также можете проверить длину номера.

Если у вас нет веских причин, гораздо проще использовать что-то вроде плагина для валидации.

Я рекомендую вам использовать регулярные выражения... Вы можете проверить мой репозиторий. У меня есть фрагмент кода для проверки Visa, Master card, Discovery, American Express и кода безопасности.

https://github.com/leojavier/RegexCollection


Помните... только то, что вы ограничиваете количество цифр, не означает, что это будет правильно.

например:
- Все номера карт Visa начинаются с 4. Новые карты имеют 16 цифр.
- Все номера MasterCard начинаются с цифр от 51 до 55. Все они имеют 16 цифр. и так далее...

Index.html - это пример, показывающий, как вы можете его использовать! Не стесняйтесь писать мне, если у вас есть какие-либо вопросы:)

Другие вопросы по тегам