SQL Server ile Kredi Kartı Doğrulaması

By | 9 Eylül 2014

Anlatmak istediğimiz konu web uygulamaları içerisinde customvalidator yardımı ile yapılabilmektedir. Bu yazı içerisinde ise Sql server tarafında nasıl yapılabileceğidir. Öncelikli olarak lhun algoritmasının yapısını incelememiz gerekiyor.

Lhun algoritması basit olarak kredi kartı gibi sayısal ifadelerin doğruluğunu kontrol etmek amacıyla kullanılan bir matematik algoritmasıdır. Bu algoritmaya “mod 10 algoritması” da denmektedir. Basit olarak bir dizi matematiksel işlem ile, verinin uygun bir kredi kartı numarası olup olmadığı tespit edilir. Eğer kredi kartı numarası uygun ise, sıradaki diğer işlemlere geçilebilir.

** Lhun algoritması sadece girilen sayısal ifadenin uygun bir kredi kartı numarası olup olmadığını belirten bir model sunar. İstemci tarafından girilen kredi kartı numarasının doğru olması sadece numaranın dünya çapında kabul görmüş bir algoritma ile doğrulanabildiğini gösterir. Oysaki, girilen kredi kartı numarasının geçerlilik süresinin, kart sahibinin isminin ve CVV2 gibi diğer kriterlerin kontrolüde gerekir ki bu tamamen ayrı bir süreçtir.

Kısaca Lhun algoritması şu şekilde çalışır.

1 – İlk olarak kredi kartı numarasının en sağ ikinci dijitinden başlanarak sırasıyla sola doğru ilerlenir. (Koduyazılırken soldan ikinci dijitten başlayıp ikişer ikişer de atlayabiliriz. ) İkişer ikişer atlanırken her bir dijitin iki katı hesap edilir. Elde edilen sonuçlardan değeri 10 ve 10′ dan büyük olanlar var ise bunların basamakları toplanır ve diğer 10′ dan küçük olan değerler eklenerek bir toplam değeri elde edilir.

2 – Daha sonra, iki katı alınan dijitlerin dışında kalan dijitler ele alınır ve bu dijitler bir birleriyle toplanarak bir toplam değeri daha elde edilir.

3 – Son olarak 1nci ve 2nci işlemlerdeki toplamların toplamı alınır ve sonucun 10 ile bölünüp bölünmediğine (bir başka deyişle mod 10′ un sıfır olup olmadığına) bakılır. Eğer 10 ile tam bölünebiliyorsa bu sayı dizisi bir kredi kartı numarasıdır. Olayı daha iyi anlamak için örnek bir 16 haneli sayı dizisini ele alalım.

Lhun algoritması

Burada 5578 2920 6032 2610 sayı dizisinin geçerli bir kredi kartı numarası olup olmadığının Lhun algoritmasına göre nasıl tespit edilebildiğini görmektesiniz. Dikkat ederseniz sonuç 10 ile tam olarak bölünemediğinden sayı dizisi geçerli bir kredi kartı numarasını temsil etmemektedir. Sahip olduğunuz kredi kartları üzerinde yukarıdaki algoritmayı deneyebilir ve sonuçlarını inceleyebilirsiniz.

Şunuda belirtmekte fayda vardır ki, dünya çapında kullanılan çeşitli tipte kredi kartları mevcuttur. Örneğin master card, visa gibi. Bunlarında kendilerine has bir takım sayı dizisi kuralları vardır. Örneğin bir master card’ a ait kredi kartı numarasının ilk iki hanesi, 55 yada 50 olmak zorundadır. Bu, kartın bir master card olduğunun işaretidir.

Şimdi gelelim kullanacağımız function create etme işlemine bunun için aşağıdaki kod parçasını kullanacağız.
Kodları buradan edinebilirsiniz.

SQL Script

Yazmış olduğumuz sql function kullanımı ise aşağıdaki gibidir.

function execute

 

Valid Card için gelebilecek değerler 0,1 ve 2’dir. Bu değerlerin karşılıkları ise ;

0 –> Geçerli bir numara değildir.

1 –> Geçerli bir numaradır.

2 –> Belirsiz bir değerdir.

Konuyu bitirirken bir örnek daha vererek bitirmek istiyorum.

lhun algoritması sample code

Share

2 thoughts on “SQL Server ile Kredi Kartı Doğrulaması

  1. Cem EFENDİOĞLU

    Faydalı bir çalışma olmuş.
    Elinize sağlık.

    Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir