Compartilhar via


Obter e compreender os dados de tarja magnética

Este tópico descreve como obter e interpretar os dados de um leitor de tarja magnética usando APIs de ponto de serviço (PDV) da Plataforma Universal do Windows (UWP).

Inscrever-se em eventos *DataReceived

Depois de configurar o leitor de tarja magnética no aplicativo usando as etapas descritas em Introdução ao ponto de serviço, você estará pronto para começar a obter dados dele.

Sempre que o leitor reconhecer um cartão passado, ele iniciará um dos três eventos:

O aplicativo só precisa se inscrever nos eventos que são compatíveis pelo leitor de tarja magnética. É possível ver quais tipos de placas são compatíveis com MagneticStripeReader.SupportedCardTypes.

O código a seguir demonstra a assinatura dos três eventos *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;
        }
    }
}

O manipulador de eventos passará o ClaimedMagneticStripeReader e um objeto args, cujo tipo irá variar dependendo do evento:

Obter os dados

Para os eventos AamvaCardDataReceived e BankCardDataReceived, é possível obter alguns dos dados diretamente do objeto args. O seguinte exemplo demonstra como obter algumas propriedades e atribuí-las a variáveis de membro:

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...
}

No entanto, alguns dados, incluindo todos os dados do evento VendorSpecificDataReceived, devem ser recuperados por meio do objeto Report, que é uma propriedade do parâmetro args. Este é do tipo MagneticStripeReaderReport.

É possível usar a propriedade CardType para descobrir que tipo de cartão foi passado e, em seguida, usá-la para informar como você interpreta os dados de Track1, Track2, Track3 e Track4.

Os dados de cada uma das faixas são representados como objetos MagneticStripeReaderTrackData. Nessa classe, é possível obter os seguintes tipos de dados:

O snippet de código a seguir obtém o relatório e os dados de controle e, em seguida, verifica o tipo de cartão:

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
    }
}

Suporte e comentários

Encontrar respostas para suas dúvidas

Tem dúvidas? Pergunte-nos em nosso fórum de P e R do Docs com a tag UWP ou no Stack Overflow com a tag pointofservice.

Ajude-nos a localizar suas perguntas:

  • Adicione a tag pointofservice à pergunta sobre Stack Overflow.
  • Incluir o termo "UWP" na sua postagem no fórum de P e R

Confira também