Ejemplo n.º 1
0
        private void ParseTrack1()
        {
            if (String.IsNullOrEmpty(_track1Data))
            {
                throw new MagstripCardParseException("Track 1 data is empty.");
            }
            string[] parts = _track1Data.Split(new char[] { FIELD_SEPARATOR }, StringSplitOptions.None);
            if (parts.Length != 3)
            {
                throw new MagstripCardParseException("Missing last field separator (^) in track 1 data.");
            }
            _accountNumber = CreditCardUtils.StripNonDigits(parts[0]);
            if (!String.IsNullOrEmpty(parts[1]))
            {
                _accountHolder = parts[1].Trim();
            }
            if (!String.IsNullOrEmpty(_accountHolder))
            {
                int nameDelim = _accountHolder.IndexOf("/");
                if (nameDelim > -1)
                {
                    _lastName  = _accountHolder.Substring(0, nameDelim);
                    _firstName = _accountHolder.Substring(nameDelim + 1);
                }
            }
            //date format: YYMM
            string expDate = parts[2].Substring(0, 4);

            _expYear  = ParseExpireYear(expDate);
            _expMonth = ParseExpireMonth(expDate);
        }
Ejemplo n.º 2
0
 private int ParseExpireMonth(string s)
 {
     s = CreditCardUtils.StripNonDigits(s);
     if (!ValidateExpiration(s))
     {
         return(0);
     }
     if (s.Length > 4)
     {
         s = s.Substring(0, 4);
     }
     return(int.Parse(s.Substring(2, 2)));
 }
Ejemplo n.º 3
0
 private void ParseTrack2()
 {
     if (String.IsNullOrEmpty(_track2Data))
     {
         throw new MagstripCardParseException("Track 2 data is empty.");
     }
     if (_track2Data.StartsWith(";"))
     {
         _track2Data = _track2Data.Substring(1);
     }
     //may have already parsed this info out if track 1 data present
     if (String.IsNullOrEmpty(_accountNumber) || (_expMonth == 0 || _expYear == 0))
     {
         //Track 2 only cards
         //Ex: ;1234123412341234=0305101193010877?
         int sepIndex = _track2Data.IndexOf('=');
         if (sepIndex < 0)
         {
             throw new MagstripCardParseException("Invalid track 2 data.");
         }
         string[] parts = _track2Data.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
         if (parts.Length != 2)
         {
             throw new MagstripCardParseException("Missing field separator (=) in track 2 data.");
         }
         if (String.IsNullOrEmpty(_accountNumber))
         {
             _accountNumber = CreditCardUtils.StripNonDigits(parts[0]);
         }
         if (_expMonth == 0 || _expYear == 0)
         {
             //date format: YYMM
             string expDate = parts[1].Substring(0, 4);
             _expYear  = ParseExpireYear(expDate);
             _expMonth = ParseExpireMonth(expDate);
         }
     }
 }
Ejemplo n.º 4
0
        private int ParseExpireYear(string s)
        {
            s = CreditCardUtils.StripNonDigits(s);
            if (!ValidateExpiration(s))
            {
                return(0);
            }
            if (s.Length > 4)
            {
                s = s.Substring(0, 4);
            }
            int y = int.Parse(s.Substring(0, 2));

            if (y > 80)
            {
                y += 1900;
            }
            else
            {
                y += 2000;
            }
            return(y);
        }