Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе объясняется, как получить и интерпретировать данные из считывателя магнитной полосы, используя универсальную платформу Windows (UWP) и API точки обслуживания (POS).
Подписаться на события *DataReceived
После того как вы настроите считыватель магнитной полосы в вашем приложении, используя шаги, описанные в Начало работы с Point of Service, вы готовы начать получать данные с устройства.
Каждый раз, когда считыватель распознает карту, он вызовет одно из трех событий.
- событие AamvaCardDataReceived: происходит при считывании карты транспортного средства.
- событие BankCardDataReceived: происходит при прокрутке банковских карт.
- VendorSpecificDataReceived Event: происходит при считывании карты с данными, специфичными для поставщика.
Приложение должно подписаться только на события, поддерживаемые средством чтения магнитной полосы. Вы можете увидеть, какие типы карточек поддерживаются с помощью 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...
}
Однако некоторые данные, включая все данные из события
Вы можете использовать свойство 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
}
}
Поддержка и обратная связь
Поиск ответов на ваши вопросы
У вас есть вопросы? Обратитесь к нам на форуме "Docs Q&A" с тегом UWP или на Stack Overflow с тегом pointofservice.
Помогите нам найти свои вопросы:
- Добавьте тег pointofservice к вопросу в Stack Overflow.
- Включите термин UWP в свой пост на форуме Q&A
См. также
- считыватель магнитной полосы
- ClaimedMagneticStripeReader класс
- класс MagneticStripeReaderAamvaCardDataReceivedEventArgs
- класс MagneticStripeReaderBankCardDataReceivedEventArgs
- класс MagneticStripeReaderVendorSpecificCardDataReceivedEventArgs
- Отчёт о устройстве для считывания магнитной полосы
- MagneticStripeReaderTrackData