/// Basado en el algoritmo de Luhn determinar si esta tarjeta es valida /// como estamos dentro de la clase de tarjeta tenemos acceso a la propiedad TarjetaNum private bool esValida() { if (TarjetaNum.Length >= 14 && TarjetaNum.Length <= 17) { string numeroF1, numeroF2; int numEntF1, numEntF2; int reMOD, reNOMO = 0; int sumf1 = 0, sumFNL = 0; for (int i = TarjetaNum.Length - 2; i == 0; i -= 2) { numeroF1 = TarjetaNum.Substring(i, 1); numEntF1 = Convert.ToInt32(numeroF1); reMOD = numEntF1 * 2; if (reMOD > 9) { reMOD = reMOD - 9; } sumf1 = reMOD + sumf1; } for (int c = TarjetaNum.Length - 1; c == 0; c -= 2) { numeroF2 = TarjetaNum.Substring(c, 1); numEntF2 = Convert.ToInt32(numeroF2); reNOMO = numEntF2 + reNOMO; } sumFNL = reNOMO + sumf1; Valida = (sumFNL % 10 == 0); } return(Valida); }
/// Basado en el algoritmo de Luhn determinar si esta tarjeta es valida /// como estamos dentro de la clase de tarjeta tenemos acceso a la propiedad TarjetaNum private bool esValida() { int suma = 0, par = 0; for (int i = 1; i <= TarjetaNum.Length; i += 2) { string aux = TarjetaNum.Substring(i, 1); par = Int32.Parse(aux); if (par >= 10) { suma += par - 9; } else { suma += par; } } for (int n = 0; n <= TarjetaNum.Length; n += 2) { int impar = Int32.Parse(TarjetaNum.Substring(n, 1)); suma += impar; } Valida = (suma % 10 == 0); return(Valida); }
/// Si la tarjeta es valida determinar de cuál tipo es VISA, MASTERCARD, AMERICANEXPRESS /// como estamos dentro de la clase de tarjeta tenemos acceso a la propiedad TarjetaNum private TipoTarjeta tipoDeTarjeta() { if (Valida) { var longitud = TarjetaNum.Length; var primerosDos = TarjetaNum.Substring(0, 2); if (longitud == 15 && (primerosDos.Equals("34") || primerosDos.Equals("37"))) { return(TipoTarjeta.AMERICANEXPRESS); } if (longitud == 16) { if (primerosDos.Equals("51") || primerosDos.Equals("52") || primerosDos.Equals("53") || primerosDos.Equals("54") || primerosDos.Equals("55")) { return(TipoTarjeta.MASTERCARD); } if (primerosDos.StartsWith("4")) { return(TipoTarjeta.VISA); } } return(TipoTarjeta.NOVALIDA); // Si es valida pero no es de ningún tipo } return(TipoTarjeta.NOVALIDA); }
/// Basado en el algoritmo de Luhn determinar si esta tarjeta es valida /// como estamos dentro de la clase de tarjeta tenemos acceso a la propiedad TarjetaNum private bool esValida() { return(TarjetaNum.Reverse() // ordena el número de la tarjeta al revés .Select(c => char.GetNumericValue(c)) // convierte los caracteres a un valor numérico .Select((num, index) => index % 2 == 0 ? num : ((num *= 2) > 9 ? num - 9 : num)) // si la posición es par lo multiplica por dos y suma los digitos .Sum() % 10 == 0); // suma todos los elementos de la lista y pregutna si es multiplo de 10 sacando el residuo de la operación }
/// Si la tarjeta es valida determinar de cuál tipo es VISA, MASTERCARD, AMERICANEXPRESS /// como estamos dentro de la clase de tarjeta tenemos acceso a la propiedad TarjetaNum private TipoTarjeta tipoDeTarjeta() { int inicio = (Int32.Parse(TarjetaNum.Substring(0, 2))); int v = (Int32.Parse(TarjetaNum.Substring(0, 1))); if (TarjetaNum.Length == 15 && (inicio == 34 || inicio == 37)) { return(TipoTarjeta.AMERICANEXPRESS); } else if (TarjetaNum.Length == 16 && (inicio == 51 || inicio == 52 || inicio == 53 || inicio == 54 || inicio == 55)) { return(TipoTarjeta.MASTERCARD); } else if ((TarjetaNum.Length == 13 || TarjetaNum.Length == 16) && v == 4) { return(TipoTarjeta.VISA); } else { return(TipoTarjeta.NOVALIDA); } }
/// Si la tarjeta es valida determinar de cuál tipo es VISA, MASTERCARD, AMERICANEXPRESS /// como estamos dentro de la clase de tarjeta tenemos acceso a la propiedad TarjetaNum private TipoTarjeta tipoDeTarjeta() { if (TarjetaNum.Substring(0, 1) == "4") { return(TipoTarjeta.VISA); } if (TarjetaNum.Substring(0, 2) == "51" || TarjetaNum.Substring(0, 2) == "52" || TarjetaNum.Substring(0, 2) == "53" || TarjetaNum.Substring(0, 2) == "54" || TarjetaNum.Substring(0, 2) == "55") { return(TipoTarjeta.MASTERCARD); } if (TarjetaNum.Substring(0, 2) == "34" || TarjetaNum.Substring(0, 2) == "37") { return(TipoTarjeta.AMERICANEXPRESS); } if (TarjetaNum.Substring(0, 2) == "65") { return(TipoTarjeta.DISCOVERCARD); } if (TarjetaNum.Substring(0, 2) == "300" || TarjetaNum.Substring(0, 2) == "305") { return(TipoTarjeta.DINERSCLUBCARTEBLANCHE); } return(TipoTarjeta.NOVALIDA); }