示例#1
0
        private static CardDetails GetTrack2Details(string rawData)
        {
            int track2Separator = rawData.LastIndexOf(';');

            if (track2Separator == -1)
            {
                return(null);
            }

            int separator = rawData.IndexOf('=', track2Separator + 1);

            var details = new CardDetails(rawData.Substring(track2Separator + 1, separator - track2Separator - 1),
                                          "",
                                          rawData.Substring(separator + 3, 2),
                                          rawData.Substring(separator + 1, 2));

            return(details);
        }
示例#2
0
        public CardDetails Decode(string rawData)
        {
            if (rawData[1] != 'B')
            {
                throw new CardDecodingException("Incorrect card type");
            }
            CardDetails returnDetails = null;
            CardDetails track1Details = GetTrack1Details(rawData);

            returnDetails = track1Details;

            CardDetails track2Details = GetTrack2Details(rawData);

            if (track2Details != null && track1Details.Number != track2Details.Number)
            {
                track2Details.Name = track1Details.Name;
                returnDetails      = track2Details;
            }

            return(returnDetails);
        }