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);
    }