Exemple #1
0
        /// 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);
        }
Exemple #2
0
        /// 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);
        }
Exemple #3
0
        /// 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);
        }
Exemple #4
0
 /// 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
 }
Exemple #5
0
        /// 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);
            }
        }
Exemple #6
0
 /// 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);
 }