Czy ktoś ma biblioteki lub fragment kodu JavaScript, aby zatwierdzić cyfrę kontrolną kart kredytowych, zanim użytkownik kliknie Prześlij?po stronie klienta walidacji kart kredytowych
Odpowiedz
jQuery Validation Plugin ma method walidacji numerów kart kredytowych.
Istnieją inne konkretne skrypty:
Większość z nich korzysta z Luhn algorithm.
Można użyć tej funkcji, jeśli nie jesteś już przy użyciu jQuery plugin. Jest oparty na algorytmie Luhna i jest tolerancyjny dla spacji lub myślników, więc powinien działać dla większości przypadków wprowadzania danych, których potrzebujesz.
http://af-design.com/blog/2010/08/18/validating-credit-card-numbers/
Prawdopodobnie PO nawet nie śledzić ten wątek już, ale może to być przydatne dla kogoś innego:
http://jquerycreditcardvalidator.com
sprawdza rodzaj karty, sprawdza jego długość i czeki dla mod 10 z algorytmem Luhna.
Można użyć tego fragmentu kodu do sprawdzania poprawności numerów kart 16 cyfr z Luhn algorithm:
function validateCardNumber(number) {
var regex = new RegExp("^[0-9]{16}$");
if (!regex.test(number))
return false;
return luhnCheck(number);
}
function luhnCheck(val) {
var sum = 0;
for (var i = 0; i < val.length; i++) {
var intVal = parseInt(val.substr(i, 1));
if (i % 2 == 0) {
intVal *= 2;
if (intVal > 9) {
intVal = 1 + (intVal % 10);
}
}
sum += intVal;
}
return (sum % 10) == 0;
}
Luhn formula to najpopularniejszy algorytm walidacji karty kredytowej. I nie bój się słowa "algorithm
", że szukasz biblioteki. Jest to niezwykle łatwe do zrozumienia. Z opisu Wikipedia, algorytm ten może być przepaści w 3 krokach:
- z pierwszej z prawej strony cyfrę, która jest cyfrą kontrolną, poruszając się w lewo, podwójna wartość każdej drugiej cyfry; Jeżeli wynik tego podwojenie operacji jest większa niż 9 (na przykład, 8 x 2 = 16), przy czym suma tych cyfry produktów (na przykład 16: 1 + 6 = 7, 18: 1 + 8 = 9).
- Weź sumę wszystkich cyfr.
- Jeżeli całkowita modulo 10 jest równe 0 (jeśli całkowite wylewce zera), wtedy numer jest poprawny według wzoru Luhna; w przeciwnym razie nie jest ważne.
Oto mój projekt roboczy.
function luhn(anum){
anum = anum+'';
var sum = 0,
max = anum.length - 1;
//From the rightmost digit, which is the check digit, moving left
for(var j=max;j>=0;j--){
var digit = parseInt(anum[j]);
//Take the sum of all the digits
if((max - j) & 1){
//double the value of every second digit
var add = digit * 2;
//if the product of this doubling operation is greater than 9 ,
//then sum the digits of the products
sum += add < 10 ? add : 1 + add % 10;
}else{
sum += digit;
}
}
//If the total modulo 10 is equal to 0 (if the total ends in zero)
//then the number is valid according to the Luhn formula;else it is not valid.
return sum % 10 === 0;
}
luhn(79927398713) -> true
Luhna algorytmie (znanym również jako Luhn formula) jest przydatny do sprawdzania różnych numerach identyfikacyjnych (na przykład numer karty kredytowej , IMEI).
Pomijam wyjaśnienie algorytmu, ponieważ zostało już ono wystawione przez innych, ale jeśli potrzebujesz najszybszej implementacji JavaScript, możesz to zobaczyć here.
Mówiąc prościej ...
function luhn(array) {
return function (number) {
let len = number ? number.length : 0,
bit = 1,
sum = 0;
while (len--) {
sum += !(bit ^= 1) ? parseInt(number[len], 10) : array[number[len]];
}
return sum % 10 === 0 && sum > 0;
};
}([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]);
Zauważ, że źródło jest połączone w ES6 języku (znany również jako JavaScript 2015), ale jest transpiled w ES5 (patrz index.js) i jest w pełni jednostka przetestowany.
Ponadto jest on dostępny zarówno w przeglądarkach i/lub node.js.
Benchmarki i inne implementacje są na jsperf, aby sprawdzić ich wysoką wydajność.
Teraz, jeśli chcesz go użyć, pobierz kod z połączonego repository.
Inaczej go zainstalować poprzez bower ...
bower install luhn-alg
Albo poprzez npm ...
npm install luhn-alg
Zastrzeżenie: Jestem autorem pakietu luhn-alg
.
- 1. Walidacja kart kredytowych z Jquery
- 2. Wyrażenie regularne dla danych z kart kredytowych
- 3. module.exports po stronie klienta
- 4. Języki po stronie klienta
- 5. W3C walidacji formularza po stronie serwera znacznika
- 6. biegle walidacja ze gdy po stronie klienta
- 7. Detaliczne przetwarzanie kart kredytowych - obecna karta. Minimalizowanie wymagań zgodności PCI
- 8. jqGrid sortowanie po stronie klienta
- 9. Po stronie klienta trwałość (przechowywanie)
- 10. Zintegrowanie sprawdzania po stronie klienta
- 11. przetwarzanie obrazu po stronie klienta
- 12. Rejestratory po stronie klienta GWT
- 13. RegisterOnSubmitStatement po sprawdzeniu poprawności po stronie klienta
- 14. Wymuszanie uwierzytelniania Facebook: po stronie klienta i po stronie serwera
- 15. Kiedy korzystać po stronie klienta lub po stronie serwera?
- 16. Logika po stronie klienta LUB logika po stronie serwera?
- 17. MVC 3 dziesiętny Problem walidacji po stronie serwera
- 18. Przetwarzanie kart kredytowych bez usługi Google Checkout/Amazon/Paypal
- 19. Systemy kart kredytowych oparte na tokenach kontra tradycyjna brama
- 20. Wykonanie skryptu hookowania po stronie klienta
- 21. Paginacja po stronie klienta z jqGrid
- 22. Buforowanie obrazu po stronie klienta z ASP.Net
- 23. Socket.io na Heroku: kod po stronie klienta
- 24. Limit czasu sesji obsługi po stronie klienta
- 25. Orchard CMS DataAnnotations - Walidacja po stronie klienta
- 26. Zdecydowanie typowane języki po stronie klienta?
- 27. ParseQueryAdapter: sortuj dane po stronie klienta
- 28. ASP.NET: dodawanie kontrolek po stronie klienta
- 29. JMeter ładuje certyfikat po stronie klienta
- 30. Jak dołączyć javascript po stronie klienta node.js?
Dlaczego chciałbyś używać javascript do weryfikowania informacji o karcie kredytowej? –
@ gabriel1836, istnieje algorytm, który pozwala sprawdzić, czy cyfry karty kredytowej znajdują się w zestawie dopuszczalnych cyfr. Nie jest to potwierdzenie w 100%, ale wykluczysz prawie wszystkie przypadkowe błędy. – torial
To się nazywa algorytm luhn-10. – mdec