2009-11-06 9 views
5

Próbuję sprawdzić numery kart kredytowych za pomocą jQuery, ale nie chcę używać wtyczki sprawdzania poprawności, czy jest tam jakaś inna wtyczka do tego?Walidacja kart kredytowych z Jquery

+4

Co jest nie tak z wtyczką do sprawdzania poprawności? – Bartek

+1

Tak? Fakt, że Google tak naprawdę nie zwraca niczego oczywistego, a nie wtyczki do sprawdzania poprawności, jest wystarczająco dobry, podpowiedź – Bostone

Odpowiedz

11

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

Można zminimalizować to poniżej w bardzo małej powierzchni w kodzie.

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 - Luhn byłby jedynym sposobem na "potwierdzenie" go po stronie klienta. –

+0

Kontrola Luhna jest użyteczna tylko przy wykrywaniu błędów transpozycji. Należy również sprawdzić, czy zakres identyfikacji wydawcy (pierwsze sześć cyfr numeru karty) jest ważny. – PaulG

2

Jeśli chcesz mieć pewność, że jest to ważny numer karty, musisz sprawdzić znacznie więcej niż cyfrę Luhna.

Luhna cyfrowy przeznaczony jest tylko do sprawdzania błędów transpozycji i może być łatwo sfałszowane z numerami takimi jak 22222222222222222

Pierwsze sześć cyfr numeru karty powinna zostać sprawdzona. Cyfry te są znane jako numer identyfikacyjny wystawcy i mogą być używane w celu zapewnienia, że ​​liczba znajduje się w uznanym zakresie. Niestety będziesz miał trudności ze znalezieniem wyczerpującej listy numerów IIN, nie tylko dlatego, że emitenci nieustannie dodają i usuwają zakresy. Wikipedia ma jednak bardzo podstawowy przegląd: Bank card number

Jeśli możesz określić typ karty z IIN, możesz następnie wykonać dźgnięcie potwierdzające długość tej liczby.

Jeśli nie masz bardzo dobrego powodu, znacznie łatwiej jest użyć czegoś takiego jak wtyczka sprawdzania poprawności.

0

polecam użyć Wyrażenie regularne ... Można sprawdzić moje repozytorium Mam fragment kodu do sprawdzenia poprawności Visa, Master Card, odkrycie, American Express i kodu zabezpieczającego

https://github.com/leojavier/RegexCollection


Pamiętaj ... tylko dlatego, że ograniczenie ilości cyfr, nie oznacza to będzie w porządku.

na przykład:
- Wszystkie numery kart Visa zaczynają się od 4. Nowe karty mają 16 cyfr.
- Wszystkie numery kart MasterCard rozpoczynają się cyframi od 51 do 55. Wszystkie mają 16 cyfr. i tak dalej ...

Index.html jest próbką, aby pokazać, jak z niego korzystać! Jeśli masz jakieś pytania, napisz do mnie:

Powiązane problemy