Condividi tramite


Ottenere e comprendere i dati di banda magnetica

Questo argomento descrive come ottenere e interpretare i dati da un lettore di striping magnetico usando le API POS (Point of Service) di piattaforma UWP (Universal Windows Platform) (UWP).

Sottoscrivere *Eventi DataReceived

Dopo aver configurato il lettore di strisce magnetiche nell'applicazione usando i passaggi descritti in Introduzione con un point of service, si è pronti per iniziare a ottenere dati da esso.

Ogni volta che il lettore riconosce una scheda con scorrimento rapido, genera uno dei tre eventi seguenti:

L'applicazione deve solo sottoscrivere gli eventi supportati dal lettore di strisce magnetiche. È possibile vedere quali tipi di schede sono supportati con MagneticStripeReader.SupportedCardTypes.

Il codice seguente illustra la sottoscrizione dei tre eventi *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;
        }
    }
}

Il gestore eventi verrà inoltrato all'oggetto ClaimedMagneticStripeReader e args , il cui tipo varia a seconda dell'evento:

Ottenere i dati

Per gli eventi AamvaCardDataReceived e BankCardDataReceived è possibile ottenere alcuni dati direttamente dall'oggetto args. L'esempio seguente illustra come ottenere alcune proprietà e assegnarle alle variabili 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...
}

Tuttavia, alcuni dati, inclusi tutti i dati dell'evento VendorSpecificDataReceived devono essere recuperati tramite l'oggetto Report che è una proprietà del parametro args. Questo è di tipo MagneticStripeReaderReport.

È possibile utilizzare la proprietà CardType per capire che tipo di carta è stata strisciata, e poi utilizzare questo dato per interpretare i dati provenienti da Track1, Track2, Track3 e Track4.

I dati di ciascuna delle tracce sono rappresentati come oggetti MagneticStripeReaderTrackData . Da questa classe è possibile ottenere i tipi di dati seguenti:

Il frammento di codice seguente ottiene il report e i dati di traccia e quindi controlla il tipo di scheda:

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

Supporto, commenti e suggerimenti

Trova le risposte alle tue domande

Altre domande? Chiedi di noi sia sul forum Docs Q& utilizzando il tag UWP or on Stack Overflow con il tag pointofservice.

Aiutaci a individuare le tue domande:

  • Aggiungere il tag pointofservice alla domanda in Stack Overflow.
  • Includi il termine "UWP" nel tuo post sul forum Q&

Vedi anche