Получение и распознавание данных магнитных карт
В этом разделе описывается, как получить и интерпретировать данные из средства чтения магнитной полосы с помощью API-интерфейсов универсальная платформа Windows (UWP) точки обслуживания (POS).
Подписка на события *DataReceived
После настройки средства чтения магнитной полосы в приложении с помощью шагов, описанных в статье "Начало работы с точкой обслуживания", вы можете приступить к получению данных из него.
Всякий раз, когда читатель распознает карточку с пальцем, он вызовет одно из трех событий:
- Событие AamvaCardDataReceived: происходит при прокрутке карточки автомобиля.
- Событие BankCardDataReceived: происходит при прокрутке банковских карт.
- Событие VendorSpecificDataReceived: происходит при прокрутке карточки для конкретного поставщика.
Приложение должно подписаться только на события, поддерживаемые средством чтения магнитной полосы. Вы можете увидеть, какие типы карточек поддерживаются с помощью MagneticStripeReader.SupportedCardTypes.
Следующий код демонстрирует подписку на три события *DataReceived :
private void SubscribeToEvents(ClaimedMagneticStripeReader claimedReader, MagneticStripeReader reader)
{
foreach (var type in reader.SupportedCardTypes)
{
if (item == MagneticStripeReaderCardTypes.Aamva)
{
claimedReader.AamvaCardDataReceived += Reader_AamvaCardDataReceived;
}
else if (item == MagneticStripeReaderCardTypes.Bank)
{
claimedReader.BankCardDataReceived += Reader_BankCardDataReceived;
}
else if (item == MagneticStripeReaderCardTypes.ExtendedBase)
{
claimedReader.VendorSpecificDataReceived += Reader_VendorSpecificDataReceived;
}
}
}
Обработчик событий передается в объект ClaimedMagneticStripeReader и объект args , тип которого зависит от события:
- Событие AamvaCardDataReceived : Класс MagneticStripeReaderAamvaCardDataReceivedEventArgs
- Событие BankCardDataReceived : Класс MagneticStripeReaderBankCardDataReceivedEventArgs
- Событие VendorSpecificDataReceived : Класс MagneticStripeReaderVendorSpecificCardDataReceivedEventArgs
Получение данных
Для событий AamvaCardDataReceived и BankCardDataReceived можно получить некоторые данные непосредственно из объекта args. В следующем примере показано получение нескольких свойств и назначение их переменным-членам:
private string _accountNumber;
private string _expirationDate;
private string _firstName;
private void Reader_BankCardDataReceived(
ClaimedMagneticStripeReader sender,
MagneticStripeReaderBankCardDataReceivedEventArgs args)
{
_accountNumber = args.AccountNumber;
_expirationDate = args.ExpirationDate;
_firstName = args.FirstName;
// etc...
}
Однако некоторые данные, включая все данные из события VendorSpecificDataReceived , должны быть получены через объект Report , который является свойством параметра args . Это тип MagneticStripeReaderReport.
Свойство CardType можно использовать для определения типа карточки с помощью пальцем, а затем использовать это для информирования о интерпретации данных из Track1, Track2, Track3 и Track4.
Данные из каждого трека представлены как объекты MagneticStripeReaderTrackData . Из этого класса можно получить следующие типы данных:
- Данные: необработанные или декодированные данные.
- Дискреционные данные: дискреционные данные.
- EncryptedData: зашифрованные данные.
Следующий фрагмент кода получает отчет и данные отслеживания, а затем проверяет тип карточки:
private void GetTrackData(MagneticStripeReaderBankCardDataReceivedEventArgs args)
{
MagneticStripeReaderReport report = args.Report;
IBuffer track1 = report.Track1.Data;
IBuffer track2 = report.Track2.Data;
IBuffer track3 = report.Track3.Data;
IBuffer track4 = report.Track4.Data;
if (report.CardType == MagneticStripeReaderCardTypes.Aamva)
{
// Card type is AAMVA
}
else if (report.CardType == MagneticStripeReaderCardTypes.Bank)
{
// Card type is bank card
}
else if (report.CardType == MagneticStripeReaderCardTypes.ExtendedBase)
{
// Card type is vendor-specific
}
else if (report.CardType == MagneticStripeReaderCardTypes.Unknown)
{
// Card type is unknown
}
}
Поддержка и обратная связь
Получение ответов на вопросы
Есть вопросы? Попросите нас на форуме "Документы Q&A" с тегом UWP или Stack Overflow с тегом pointofservice.
Помогите нам найти свои вопросы:
- Добавьте тег pointofservice к вашему вопросу в Stack Overflow.
- Включите термин UWP в свой пост на форуме Q&A
См. также
- Средство чтения с магнитной полосой
- Класс ClaimedMagneticStripeReader
- Класс MagneticStripeReaderAamvaCardDataReceivedEventArgs
- Класс MagneticStripeReaderBankCardDataReceivedEventArgs
- Класс MagneticStripeReaderVendorSpecificCardDataReceivedEventArgs
- MagneticStripeReaderReport
- MagneticStripeReaderTrackData