.NET でクレジットカードの番号チェックを行う方法

クレジットカードの番号はチェックサム桁が入っているため、入力された番号に入力ミスがないかどうかは、センターにオンラインで問い合わせることなく、オフラインで知ることができる。
具体的には以下のようなコードでチェックできる。確かどこかにあった JavaScript 用のアルゴリズムを参考にして C# で書いてみたものである。

public static bool CheckCCNumber(string digitsOnly)
{
	int sum = 0;
	int digit = 0;
	int addend = 0;
	bool timesTwo = false;

	for (int i = digitsOnly.Length - 1; i >= 0; i--)
	{
		digit = int.Parse(digitsOnly[i]);
		if (timesTwo)
		{
			addend = digit * 2;
			if (addend > 9)
			{
				addend -= 9;
			}
		}
		else
		{
			addend = digit;
		}

		sum += addend;
		timesTwo = !timesTwo;
	}

	int modules = sum % 10;
	return (modules == 0);
}


なお、クレジットカード会社がどの会社であるのかということは、カード番号の先頭の数字を見れば判別できる。現在は以下のように判別できる。

先頭の数字 カード会社
4 Visa
5 Master Card
34 American Express
35 JCB