public ReturnIndicator CheckCC(string CardNumber) { ReturnIndicator ri = new ReturnIndicator(); ri.CardValid = false; byte[] number = new byte[16]; // number to validate // Remove non-digits int len = 0; for (int i = 0; i < CardNumber.Length; i++) { if (char.IsDigit(CardNumber, i)) { if (len == 16) return ri; // number has too many digits number[len++] = byte.Parse(CardNumber[i].ToString()); } } // Use Luhn Algorithm to validate int sum = 0; for (int i = len - 1; i >= 0; i--) { if (i % 2 == len % 2) { int n = number[i] * 2; sum += (n / 10) + (n % 10); } else sum += number[i]; } ri.CardValid = (bool)(sum % 10 == 0); if ((ri.CardValid == true)) { switch (CardNumber.Substring(0, 1)) { case "3": ri.CardType = "AMEX/Diners Club/JCB"; break; case "4": ri.CardType = "VISA"; break; case "5": ri.CardType = "MasterCard"; break; case "6": ri.CardType = "Discover"; break; default: ri.CardType = "Unknown"; break; } } else { ri.CardType = "NONE"; } return ri; }
public ReturnIndicator CheckCC(string CardNumberEncrypted) { ReturnIndicator ri = new ReturnIndicator(); ri.CardValid = false; string CardNumber = DecryptTripleDES(CardNumberEncrypted, "aptech"); byte[] number = new byte[16]; int len = 0; for (int i = 0; i < CardNumber.Length; i++) { if (char.IsDigit(CardNumber, i)) { if (len == 16) return ri; number[len++] = byte.Parse(CardNumber[i].ToString()); } } int sum = 0; for (int i = len - 1; i >= 0; i--) { if (i % 2 == len % 2) { int n = number[i] * 2; sum += (n / 10) + (n % 10); } else sum += number[i]; } ri.CardValid = (bool)(sum % 10 == 0); if ((ri.CardValid == true)) { switch (CardNumber.Substring(0, 1)) { case "3": ri.CardType = "AMEX/Diners Club/JCB"; break; case "4": ri.CardType = "VISA"; break; case "5": ri.CardType = "MasterCard"; break; case "6": ri.CardType = "Discover"; break; default: ri.CardType = "Unknown"; break; } } else { ri.CardType = "NONE"; } return ri; }
public ReturnIndicator CheckCC(string CardNumberEncrypted) { ReturnIndicator ri = new ReturnIndicator(); ri.CardValid = false; string CardNumber = DecryptTripleDES(CardNumberEncrypted, "aptech"); byte[] number = new byte[16]; int len = 0; for (int i = 0; i < CardNumber.Length; i++) { if (char.IsDigit(CardNumber, i)) { if (len == 16) { return(ri); } number[len++] = byte.Parse(CardNumber[i].ToString()); } } int sum = 0; for (int i = len - 1; i >= 0; i--) { if (i % 2 == len % 2) { int n = number[i] * 2; sum += (n / 10) + (n % 10); } else { sum += number[i]; } } ri.CardValid = (bool)(sum % 10 == 0); if ((ri.CardValid == true)) { switch (CardNumber.Substring(0, 1)) { case "3": ri.CardType = "AMEX/Diners Club/JCB"; break; case "4": ri.CardType = "VISA"; break; case "5": ri.CardType = "MasterCard"; break; case "6": ri.CardType = "Discover"; break; default: ri.CardType = "Unknown"; break; } } else { ri.CardType = "NONE"; } return(ri); }