in Eski Blog Yazılarım

Luhn ile Kredi Kartı Doğrulaması

Elektronik tiçaretle ilgili birkaç atraksiyon yaparken kredi kartı
numarasını doğrulamam gerekti. Kart numaralarınında belli bir mantığı
var tabi öyle kafadan vermiyorlar. Bu mantığa görede bir algoritma
geliştirmişler. Bazısı Mod 10 diyor bazısı Luhn diyor. Fazla uzatmadan
C# ile yazılmış Luhn Algoritmasını veriyorum. Temel olarak hersayıyı
iki ile çarpıp, birbirleri ile toplayıp 10’a kalansız bölünmesi lazım.

C# ile Luhn Algoritması:

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

Alakalar:
http://en.wikipedia.org/wiki/Luhn_algorithm
http://mehmetguzel.blogspot.com/2008/02/luhn-algoritmas.html
http://www.diffio.com/post/Credit-card-validation—regular-expressions.aspx

Yorum Bırak

Comment