Поделиться через


Получение и распознавание данных магнитных карт

В этом разделе описывается, как получить и интерпретировать данные из средства чтения магнитной полосы с помощью 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 и 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 . Из этого класса можно получить следующие типы данных:

Следующий фрагмент кода получает отчет и данные отслеживания, а затем проверяет тип карточки:

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.

Помогите нам найти свои вопросы:

См. также