Elektronik ortamlarda doğrulama gerektiren alanlardan biriside kredi kartı ve buna bağlı olarak gerçekleştirilen işlemlerdeki doğrulama gereksinimidir.Kredi kart numaraları belli bir düzen ve planlama sonucu ortaya çıkmaktadır.1 den başlayarak sıralı bir numara üretme işleminden ziyade bir algoritma kullanılarak üretilmektedir.Doğrulama işlemlerindede kartın var olup olmadığını anlamak için bizde bu algoritmadan yararlanacağız.Mantığı ise her sayıyı 2 ile çarpıp birbirleriyle toplayıp 10 a kalansız bölünmesi gerekir.Evet artık mantığından bahsettikten sonra şimdi c# içinde nasıl kullanacağımıza dair kodlarımızı verelim..
CODE:
public bool IsCreditCardValid(string cardNumber)
{
const string allowed = "0123456789";
int i;
StringBuilder cleanNumber = new StringBuilder();
for (i = 0; i < cardNumber.Length; i++)
{
if (allowed.IndexOf(cardNumber.Substring(i, 1)) >= 0)
cleanNumber.Append(cardNumber.Substring(i, 1));
}
if (cleanNumber.Length < 13 || cleanNumber.Length > 16)
return false;
for (i = cleanNumber.Length + 1; i <= 16; i++)
cleanNumber.Insert(0, "0");
int multiplier, digit, sum, total = 0;
string number = cleanNumber.ToString();
for (i = 1; i <= 16; i++)
{
multiplier = 1 + (i % 2);
digit = int.Parse(number.Substring(i - 1, 1));
sum = digit * multiplier;
if (sum > 9)
sum -= 9;
total += sum;
}
return (total % 10 == 0);
}
