.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 |