JavaScript ile Luhn Algoritması Kullanarak Kredi Kartı Doğrulama
Luhn Kredi Kartı Doğrulama Algoritması
Düzeltme: 11.01.2019 tarihinde düzeltme yapılmıştır. Validate()fonksiyonu düzeltilmiştir, Demo sayfası da düzenlenmiştir.
IBM'de çalışan bilim adamı Hans Peter Luhn tarafından üretilen bu algoritma, mod 10 algoritması olarak da bilinir. Dünyadaki tüm kredi kartı numaraları bir algoritmaya göre üretilirler. IMEI Numarası, Kanada Sosyal Güvenlik Numarası gibi birçok numara da benzer şekilde üretilir.
Web sitenize giren bir kişinin kredi kartının rakamlarının doğru girilip girilmediğini bu algoritma ile kontrol edebilirsiniz.
JavaScript kodları ile istemci tarafında kontrol yapmak, sunucu taraflı çalışmaya göre hızlı olduğundan, kullanıcı formu göndermeden bir yanlış varsa istemci tarafında hızlıca kontrol edip sonra gönderebilirsiniz. Luhn Algoritması hem basit çalışır hem de hızlıdır. Bu algoritma sadece kredi kartı numarasının geçerliliğini kontrol eder.
Tabi ki gerçekte kredi kartı ile ilgili birçok bilgiye ihtiyaç vardır ve bu bilgiler de ancak bankanın sunucusundan öğrenilebilir. Örneğin kredi kartı numarası geçerli olabilir ama kişinin kredi kartı limiti dolmuştur, ya da kredi kartı numarası geçerlidir ama müşteri belki iptal ettirmiştir. Dolayısıyla bu algoritmayı, %100 kredi kartı onayı gerektiriren bir durumda kullanmak doğru değildir, sadece doğrulama(validation) işlemi için kullanılmalıdır.
Algoritma nasıl çalışıyor?
Kredi Kartı Numarası (Account Number) 7992739871 olsun, bir sayı atlanarak çift numaralılar 2 ile çarpılıyor. Çıkan sayı 9'dan küçükse aynen yazılıyor, eğer büyük ise çarpım sonucu elde edilen sayının haneleri toplanıyor. Örneğin 3 x 6 = 18 değeri 9'dan büyük olduğu için hane toplamı 1+8 = 9 alınıyor. Sonra en son satırda ise haneler toplanıyor, 7+9+9+4+7+6+9+7+7+2 = 67 elde ediyor, Bu toplam değeri Mod 10'a göre 0 ise kredi kartı geçerlidir, burada Mod 10'a göre 7 olduğundan son rakam 3 olabilir. Böylece toplam 70 edecek, mod 10'a göre kalan 0 olacaktır.
Örneğimizde 7992739871X burada X değeri 3 olacaktır. Birçok yöntem ile son doğrulama hanesi olan 3 hesaplanabilir, diğer yöntemleri kaynaklar kısmından inceleyebilirsiniz.

function Calculate(Luhn)
Düzeltme: 11.01.2019 tarihinde düzeltme yapılmıştır. Validate()fonksiyonu düzeltilmiştir, Demo sayfası da düzenlenmiştir.
IBM'de çalışan bilim adamı Hans Peter Luhn tarafından üretilen bu algoritma, mod 10 algoritması olarak da bilinir. Dünyadaki tüm kredi kartı numaraları bir algoritmaya göre üretilirler. IMEI Numarası, Kanada Sosyal Güvenlik Numarası gibi birçok numara da benzer şekilde üretilir.
Web sitenize giren bir kişinin kredi kartının rakamlarının doğru girilip girilmediğini bu algoritma ile kontrol edebilirsiniz.
JavaScript kodları ile istemci tarafında kontrol yapmak, sunucu taraflı çalışmaya göre hızlı olduğundan, kullanıcı formu göndermeden bir yanlış varsa istemci tarafında hızlıca kontrol edip sonra gönderebilirsiniz. Luhn Algoritması hem basit çalışır hem de hızlıdır. Bu algoritma sadece kredi kartı numarasının geçerliliğini kontrol eder.
Tabi ki gerçekte kredi kartı ile ilgili birçok bilgiye ihtiyaç vardır ve bu bilgiler de ancak bankanın sunucusundan öğrenilebilir. Örneğin kredi kartı numarası geçerli olabilir ama kişinin kredi kartı limiti dolmuştur, ya da kredi kartı numarası geçerlidir ama müşteri belki iptal ettirmiştir. Dolayısıyla bu algoritmayı, %100 kredi kartı onayı gerektiriren bir durumda kullanmak doğru değildir, sadece doğrulama(validation) işlemi için kullanılmalıdır.
Algoritma nasıl çalışıyor?
Kredi Kartı Numarası (Account Number) 7992739871 olsun, bir sayı atlanarak çift numaralılar 2 ile çarpılıyor. Çıkan sayı 9'dan küçükse aynen yazılıyor, eğer büyük ise çarpım sonucu elde edilen sayının haneleri toplanıyor. Örneğin 3 x 6 = 18 değeri 9'dan büyük olduğu için hane toplamı 1+8 = 9 alınıyor. Sonra en son satırda ise haneler toplanıyor, 7+9+9+4+7+6+9+7+7+2 = 67 elde ediyor, Bu toplam değeri Mod 10'a göre 0 ise kredi kartı geçerlidir, burada Mod 10'a göre 7 olduğundan son rakam 3 olabilir. Böylece toplam 70 edecek, mod 10'a göre kalan 0 olacaktır.
Örneğimizde 7992739871X burada X değeri 3 olacaktır. Birçok yöntem ile son doğrulama hanesi olan 3 hesaplanabilir, diğer yöntemleri kaynaklar kısmından inceleyebilirsiniz.

function Calculate(Luhn)
{
var sum = 0;
for (i=0; i<Luhn.length; i++ )
{
sum += parseInt(Luhn.substring(i,i+1));
}
var delta = new Array (0,1,2,3,4,-4,-3,-2,-1,0);
for (i=Luhn.length-1; i>=0; i-=2 )
{
var deltaIndex = parseInt(Luhn.substring(i,i+1));
var deltaValue = delta[deltaIndex];
sum += deltaValue;
}
var mod10 = sum % 10;
mod10 = 10 - mod10;
if (mod10==10)
{
mod10=0;
}
return mod10;
}

Aşağıdaki JavaScript fonksiyonu ile yukarıdaki formda yer alan metin kutusu değerlerini alıp, Calculate fonksiyonunu çağırıyoruz. parseInt fonksiyonu ile string şeklinde gelen değeri tam sayıya çeviriyoruz.
function Validate()
Aşağıdaki fonksiyon ise formdaki Kontrol Et butonuna tıklanınca tetikleniyor ve Validate (Doğrulama) fonksiyonunu çağırıyor. Ekrana alert ile sonucu yazıyoruz.
if(!Validate()){
Luhn algoritması, C/C++, Java ve C# gibi birçok programlama dilinde yazılabilir.
Çalışan halini aşağıdaki linkten görebilirsiniz
ONLINE DEMO
JavaScript ile CSS kodlarını Yönlendirme
JavaScript ile Zemin Rengini Değiştirme
JavaScript ile Metin Kutusu değerini artırmak ve azaltmak
JavaScript ile Form Kontrolü
JavaScript ile Döngüler
JavaScript ile Fonksiyon İşlemleri
JavaScript ile Harf ve Rakam Kontrolü
JavaScript ile Basit Hesaplatma İşlemleri
JavaScript ile Ortalama ve Harf Notu Hesaplama
JavaScript ile Twitter benzeri karakter kontrolü
JavaScript ile Yuvarlatma Hatası nasıl düzeltilir?
JavaScript Luhn Algoritması ile Kredi Kartı Doğrulama
KAYNAKLAR
http://en.wikipedia.org/wiki/Luhn_algorithm

Aşağıdaki JavaScript fonksiyonu ile yukarıdaki formda yer alan metin kutusu değerlerini alıp, Calculate fonksiyonunu çağırıyoruz. parseInt fonksiyonu ile string şeklinde gelen değeri tam sayıya çeviriyoruz.
function Validate()
{
var Luhn=document.getElementById('KrediKartNo1').value;
Luhn=Luhn+document.getElementById('KrediKartNo2').value; //düzeltildi
Luhn=Luhn+document.getElementById('KrediKartNo3').value; //düzeltildi
Luhn=Luhn+document.getElementById('KrediKartNo4').value; //düzeltildi
var LuhnDigit = parseInt(Luhn.substring(Luhn.length-1,Luhn.length));
var LuhnLess = Luhn.substring(0,Luhn.length-1);
if (Calculate(LuhnLess)==parseInt(LuhnDigit))
{
return true;
}
return false;
}
Aşağıdaki fonksiyon ise formdaki Kontrol Et butonuna tıklanınca tetikleniyor ve Validate (Doğrulama) fonksiyonunu çağırıyor. Ekrana alert ile sonucu yazıyoruz.
function kontrol()
{
if(!Validate()){
alert('Kredi Kartı numarası hatalıdır, kontrol ediniz.');
return false;
}
else alert('Kredi Kartı numarası geçerlidir.');
}
Luhn algoritması, C/C++, Java ve C# gibi birçok programlama dilinde yazılabilir.
Çalışan halini aşağıdaki linkten görebilirsiniz
ONLINE DEMO
JavaScript ile CSS kodlarını Yönlendirme
JavaScript ile Zemin Rengini Değiştirme
JavaScript ile Metin Kutusu değerini artırmak ve azaltmak
JavaScript ile Form Kontrolü
JavaScript ile Döngüler
JavaScript ile Fonksiyon İşlemleri
JavaScript ile Harf ve Rakam Kontrolü
JavaScript ile Basit Hesaplatma İşlemleri
JavaScript ile Ortalama ve Harf Notu Hesaplama
JavaScript ile Twitter benzeri karakter kontrolü
JavaScript ile Yuvarlatma Hatası nasıl düzeltilir?
JavaScript Luhn Algoritması ile Kredi Kartı Doğrulama
KAYNAKLAR
http://en.wikipedia.org/wiki/Luhn_algorithm

Dil Değiştir(Change Language)
Kategoriler
- Csharp(58)
- Csharp Formlar(23)
- Web Tasarım(9)
- CSS(27)
- JavaScript(37)
- PHP(50)
- Laravel(3)
- ASP.net(38)
- Excel(15)
- Güvenlik(4)
- E-Ticaret(3)
- Kariyer(5)
- SQL Server(29)
- MySQL(16)
- Linux(17)
- MacOSX(8)
- Ayarlar(12)
- Bilgisayar Ağları(3)
- Symfony(1)
- Teknoloji(7)
- VBS(1)
- Arduino(6)
- RaspberryPi(1)
- Algoritmalar(15)
- HTML(3)
- Python(2)
- Bash Script(7)
- C Programlama(10)
- Flutter - Dart(11)
- Bootstrap(1)
En çok Okunan 18 Makale
- :: Excelde EĞER Fonksiyonu Kullanımı...
- :: Csharp ile Access Veritabanı Bağlan...
- :: SQL nedir, Temel SQL Komutları nele...
- :: Hangi Linux Dağıtımı?
- :: OSX İşletim Sistemine PHP, MySQL, A...
- :: Excel Hesap tablosunda EĞERSAY Fonk...
- :: PHP dilini kullanarak MySQLi tekniğ...
- :: Excel Hesap tablosunda ÇOKETOPLA Fo...
- :: Excel Hesap tablosunda ETOPLA Fonks...
- :: Excel Hesap tablosunda ÇOKEĞERSAY F...
- :: Hangi Programlama Dilini Öğrenmeliy...
- :: Mac Bilgisayarınıza Windows 7 Yükle...
- :: PHP ile Basit Dosya Yükleme
- :: Excel hücrelerinde yıldız koyarak b...
- :: C# Programlama Dili ile İlgili Örne...
- :: PHP Dili kullanarak MySQLi Tekniği ...
- :: PhpMyAdmin Şifresi Nasıl Değiştiril...
- :: Hangisi acaba, PHP mi ASP.NET mi ?