2009-11-06 2 views
5

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

+4

Что не так с плагином проверки? – Bartek

+1

Да? Тот факт, что Google на самом деле не возвращает ничего очевидного, а не плагин проверки, достаточно хорош. – Bostone

ответ

11

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); 
} 
+1

+1 - Лунь был бы единственным способом «проверить» его на стороне клиента. –

+0

Проверка Luhn действительно полезна только для определения ошибок транспонирования. Вам также необходимо будет проверить диапазон идентификации эмитента (первые шесть цифр номера карты). – PaulG

2

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

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

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

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

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

0

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

https://github.com/leojavier/RegexCollection


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

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

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

Смежные вопросы