2008-11-01 23 views
10

Kullanıcı, Gönder düğmesine basmadan önce kredi kartlarının kontrol basamaklarını doğrulamak için bir kütüphane veya JavaScript pasajına sahip midir?Kredi kartlarının istemci tarafında doğrulanması

+0

Neden kredi kartı bilgilerini doğrulamak için javascript kullanmak istersiniz? –

+2

@ gabriel1836, kredi kartı basamaklarının kabul edilebilir basamak kümesinde olup olmadığını bilmenizi sağlayan bir algoritma var. % 100 onay değil, neredeyse tüm rastgele hataları göz ardı ediyorsun. – torial

+0

luhn-10 algoritması denir. – mdec

cevap

10

Muhtemelen OP bile artık bu konuyu takip etmiyor ama bu başkası için faydalı olabilir:

http://jquerycreditcardvalidator.com

Bu kart türünü denetler, mod için uzunluğunu ve kontrolleri doğrular Luhn algoritması ile 10.

7

Sen Luhn algorithm ile 16 basamaklı kartı numaralarını doğrulamak için bu pasajı kullanabilirsiniz:

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

Luhn formula kredi kartı doğrulama en popüler algoritmadır. Ve bir kütüphane aradığınız algorithm kelimesinden çok korkma. Anlaması inanılmaz derecede kolay. Ara tariften, bu algoritma 3 adımda bölme olabilir: Kontrol basamağı, sol eğilimi olan en sağdaki rakam, kaynaktan

  • , her ikinci basamak çift değeri; Bu katlama işleminin ürünü daha büyük 9 ise, (örneğin, 8 x 2 = 16), daha sonra ürün basamak veren (örneğin, 16: 1 + = 7 6, 18: 1 ile + 8 = 9).
  • Tüm basamakların toplamını toplayın. Toplam modülo 10 0'a eşitse (toplam uç sıfırda ise), bu sayı Luhn formülüne göre geçerlidir; başka geçerli değil.

İşte benim çalışma taslağım. (Aynı zamanda Luhn formula olarak da bilinir)

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 
3

Luhn algoritması kimlik numaralarının (örneğin kredi kartı numaraları, IMEI) çeşitli doğrulamak için yararlıdır.Zaten başkaları tarafından maruz kalmış çünkü

Ben algoritmanın açıklamaları tekrarlamamak ama en hızlı JavaScript uygulamasıgerekiyorsa, bunu here görebilirsiniz.

kaynak bağlantılı

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]); 

Not (ayrıca JavaScript 2015 olarak da bilinir) ES6 dilde ... Basitçe, ama transpiled edilir ES5 (index.js bakınız) ve tam birimdir test etti.

Bundan başka kullanışlı hem tarayıcılar ve/veya node.js içinde.

Yüksek performanslarını doğrulamak için benchmark ve diğer uygulamalar jsperf numaralı telefondan alınmıştır.

Şimdi, yalnızca kullanmak istiyorsanız, bağlı repository kodundan alın.

Yoksa ... bower aracılığıyla yüklemek

bower install luhn-alg 

Ya npm aracılığıyla

...
npm install luhn-alg 


Yasal Uyarı: Ben luhn-alg paketin yazarıyım.

İlgili konular