Проверка кредитной карты с 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 - это пример, показывающий, как вы можете его использовать! Не стесняйтесь писать мне, если у вас есть какие-либо вопросы:)