Merhabalar, C# Kredi Kartı Tipini Bulma yazım ile C# Eğitim Setime devam ediyorum. Bu dersimde kredi kartı numarasından, kartın Visa mı Mastercard mı olduğunu bulmamızı sağlayacak kodları paylaşacağım.
Kredi kartlarının 16 karakterden oluşan bir sayısı vardır. Bu sayı içinde bir çok bilgi yer almaktadır.
- Kart numarasının ilk hanesi Ödeme Sistemi’ni belirten rakamdır. Yani kartın Mastercard mı Visa mı olduğunu belirtir.
- Kart numarasının ilk 6 hanesi, banka tarafından verilen BIN (Bank Identification Number) yani prefix kodudur.
- Kart numarasının 7-15 arasında kalan 9 hanesi sayı banka tarafından müşteriye verilen hesap numarasıdır. Buda 10^9 hesabı ile banka başına bir milyar olası hesap numarası anlamına gelir.
- Kart numarasının son hanesi ise güvenlik rakamını temsil eder. Bu rakama Check Digit denir. Bu rakam ile Lunh algoritması ile kartın geçerli olup olmadığı kontrol edilebilir.
C# Kredi Kartı Tipini Bulma
Her kredi kartının bir tipi vardır. Bu tipler
- Visa
- Mastercard
- Aexpress (AmericanExpress)
- Diners
- Discovers
- JCB
olarak sıralanabilir. Birazdan vereceğim kod bloğu, kart numarasından kartın tipini bulmamızı sağlayacaktır.
BİLGİ: Ayrıca kartımızın ilk hanesi bize kartın türü hakkında bir çok bilgi vermektedir. Elimizdeki kartın ilk hanesi 1 veya 2 ise uçuş kartı, 3 ise seyahat veya eğlence kartı, 4 veya 5 ise Hesap Kartı (Visa, Master, AmaricanExpress vs..), 6 ise kredi kartı, 7 ise Akaryakıt kartı, 8 ise haberleşme kartı ve son olarak 9 ise Uluslararası bir kartı simgeler.
Formumua iki label, bir textbox ve bir button ekleyelim. Butona tıkladığımızda, textbox’a yazılan kart numarasını kontrol etsin ve sonuç labelimize kartın tipini yazsın.
Öncelikle formumuza aşağıdaki namespace’i ekliyoruz. Kart tipini kontrol ederken RegularExpressions sınıfını kullanacağız.
using System.Text.RegularExpressions;
Namespace’i ekledikten sonra kodlarımızı yazalım.
private void btn_kontrol_Click(object sender, EventArgs e) { Regex visaRegex = new Regex("^4[0-9]{12}(?:[0-9]{3})?$"); Regex masterRegex = new Regex("^5[1-5][0-9]{14}$"); Regex expressRegex = new Regex("^3[47][0-9]{13}$"); Regex dinersRegex = new Regex("^3(?:0[0-5]|[68][0-9])[0-9]{11}$"); Regex discoverRegex = new Regex("^6(?:011|5[0-9]{2})[0-9]{12}$"); Regex jcbRegex = new Regex("^(?:2131|1800|35\\d{3})\\d{11}$"); if (visaRegex.IsMatch(txt_card_no.Text)) lbl_sonuc.Text = "VISA"; else if (masterRegex.IsMatch(txt_card_no.Text)) lbl_sonuc.Text = "MASTERCARD"; else if (expressRegex.IsMatch(txt_card_no.Text)) lbl_sonuc.Text = "AEXPRESS"; else if (dinersRegex.IsMatch(txt_card_no.Text)) lbl_sonuc.Text = "DINERS"; else if (discoverRegex.IsMatch(txt_card_no.Text)) lbl_sonuc.Text = "DISCOVERS"; else if (jcbRegex.IsMatch(txt_card_no.Text)) lbl_sonuc.Text = "JCB"; else lbl_sonuc.Text = "Bilinmiyor"; }
Kodlarımız yukarıdaki gibidir. Ben bir Mastecard olan kredi kartı ve bir Visa olan banka kartı ile test yaptım ve sonuç doğrudur.
Burada sıralanan kart tiplerinden farklı bildiğiniz kart tipleri varsa yorum olarak yazabilirseniz onları da eklemeye çalışırım.
C# Kredi Kartı Tipini Bulma, yazımda bu kadardı arkadaşlar. Diğer yazılarımızda görüşmek üzere…
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Bu dersimde Github ‘da yerini almıştır.
Sağlıcakla ve takipte kalın.
Merhaba. Emeğinize teşekkürler öncelikle. Eğer TROY kart ı da buraya ekleyebilirsek çok süper olucak. İyi çalışmalar dilerim.
Merhaba, güzel yorumunuz için teşekkür ederim. Fırsatını bulursam eklemeye çalışacağım.
Teşekkürler.
^(?:9792|65\d{2}|36|2205)\d{12}$