protected string PadCardLast4(Enums.CreditCardType cardType, string last4)
        {
            string retVal = string.Empty;

            switch (cardType)
            {
            case Enums.CreditCardType.AmericanExpress:
            case Enums.CreditCardType.Discover:
            case Enums.CreditCardType.MasterCard:
            case Enums.CreditCardType.Visa:
                retVal = "XXXXXXXXXXXX" + last4;
                break;

            case Enums.CreditCardType.Unknown:
            default:
                break;
            }

            return(retVal);
        }
Exemple #2
0
        private Enums.CreditCardType ValidateCardNumber(string sCardNumber)
        {
            string cardNum = sCardNumber.Replace(" ", "");

            Enums.CreditCardType retVal = Enums.CreditCardType.Unknown;

            //validate the type of card is accepted
            if (cardNum.StartsWith("4") == true &&
                (cardNum.Length == 13 ||
                 cardNum.Length == 16))
            {
                //VISA
                retVal = Enums.CreditCardType.Visa;
            }
            else if ((cardNum.StartsWith("51") == true ||
                      cardNum.StartsWith("52") == true ||
                      cardNum.StartsWith("53") == true ||
                      cardNum.StartsWith("54") == true ||
                      cardNum.StartsWith("55") == true) &&
                     cardNum.Length == 16)
            {
                //MasterCard
                retVal = Enums.CreditCardType.MasterCard;
            }
            else if ((cardNum.StartsWith("34") == true ||
                      cardNum.StartsWith("37") == true) &&
                     cardNum.Length == 15)
            {
                //Amex
                retVal = Enums.CreditCardType.AmericanExpress;
            }
            //else if ((cardNum.StartsWith("300") == true ||
            //          cardNum.StartsWith("301") == true ||
            //          cardNum.StartsWith("302") == true ||
            //          cardNum.StartsWith("304") == true ||
            //          cardNum.StartsWith("305") == true ||
            //          cardNum.StartsWith("36") == true ||
            //          cardNum.StartsWith("38") == true) &&
            //         cardNum.Length == 14)
            //{
            //    //Diners Club/Carte Blanche
            //    retVal = Enums.CreditCardType.DinersClub;
            //}
            else if (cardNum.StartsWith("6011") == true &&
                     cardNum.Length == 16)
            {
                //Discover
                retVal = Enums.CreditCardType.Discover;
            }

            if (retVal != Enums.CreditCardType.Unknown)
            {
                int[]  DELTAS   = new int[] { 0, 1, 2, 3, 4, -4, -3, -2, -1, 0 };
                int    checksum = 0;
                char[] chars    = cardNum.ToCharArray();
                for (int i = chars.Length - 1; i > -1; i--)
                {
                    int j = ((int)chars[i]) - 48;
                    checksum += j;
                    if (((i - chars.Length) % 2) == 0)
                    {
                        checksum += DELTAS[j];
                    }
                }

                if ((checksum % 10) != 0)
                {
                    retVal = Enums.CreditCardType.Unknown;
                }
            }

            return(retVal);
        }