Validación de Tarjetas de Crédito en C# - MasterCard

    
MasterCard

- Características:

  • Prefijos de cuentas que empiezan por: 51, 52, 53, 54, 55
  • Tamaño mínimo: 16
  • Tamaño máximo: 19

  - Código de las características en C#:

    public struct CreditCardValidationType
    {
        public struct MasterCard
        {
            public static int[] StartWith => new[] {51, 52, 53, 54, 55};
            public static int? MinLength => 16;
            public static int? MaxLength => 19;
        }
      }

- Código de verificación en C#:

  public class MasterCardValidationRule : IValidationRule
    {
        public bool IsValid(string input)
        {
            if (string.IsNullOrEmpty(input)) return false;

            StringBuilder digitsOnly = new StringBuilder();
            input.ForEach(c =>
            {
                if (Char.IsDigit(c)) digitsOnly.Append(c);
            });

            var creditCardNumber = digitsOnly.ToString();

            var checkCreditCard = LuhnAlgorithm.CheckCreditCard(creditCardNumber);

            if (!checkCreditCard) return false;

            if (!CreditCardValidationType.MasterCard.StartWith.Any(c => creditCardNumber.StartsWith(c.ToString())))
                return false;

            if (CreditCardValidationType.MasterCard.MinLength != null)
            {
                if (creditCardNumber.Length != CreditCardValidationType.MasterCard.MinLength &&
                    creditCardNumber.Length != CreditCardValidationType.MasterCard.MaxLength)
                {
                    return false;
                }
            }
            else
            {
                if (creditCardNumber.Length != CreditCardValidationType.MasterCard.MaxLength) return false;
            }

            return true;
        }
    }

Comentarios