Freigeben über


Abrufen und Verstehen von Magnetstreifendaten

Dieses Thema beschreibt, wie Sie die Daten aus einem Magnetstreifenleser mithilfe von Universelle Windows-Plattform (UWP) Point of Service (POS)-APIs abrufen und interpretieren.

Abonnieren von *DataReceived-Ereignissen

Nachdem Sie Ihren Magnetstreifenleser in Ihrer Anwendung mit den Schritten in Erste Schritte mit Point of Service eingerichtet haben, können Sie mit dem Abrufen von Daten beginnen.

Wenn der Leser eine Wischbewegung der Karte erkennt, löst er eines von drei Ereignissen aus:

Ihre Anwendung muss nur die Ereignisse abonnieren, die vom Magnetstreifenleser unterstützt werden. Sie können sehen, welche Arten von Karte mit MagneticStripeReader.SupportedCardTypes unterstützt werden.

Der folgende Code veranschaulicht das Abonnieren der drei *DataReceived-Ereignisse:

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

Der Ereignishandler wird an den ClaimedMagneticStripeReader und ein Args-Objekt übergeben, dessen Typ je nach Ereignis variiert:

Abrufen von Daten

Für die Ereignisse AamvaCardDataReceived und BankCardDataReceived können Sie einige der Daten direkt aus dem Args-Objekt abrufen. Das folgende Beispiel veranschaulicht das Abrufen einiger Eigenschaften und das Zuweisen dieser Eigenschaften zu Mitglieder-Variablen:

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

Einige Daten, einschließlich aller Daten aus dem VendorSpecificDataReceived-Ereignis, müssen jedoch über das Report-Objekt abgerufen werden, das eine Eigenschaft des Args-Parameters ist. Dies ist vom Typ MagneticStripeReaderReport.

Mithilfe der CardType-Eigenschaft können Sie herausfinden, welche Art von Karte durchgezogen wurde. Diese Information verwenden Sie dann, um zu erfahren, wie Sie die Daten aus Track1, Track2, Track3 und Track4 interpretieren können.

Die Daten aus den einzelnen Spuren werden als MagneticStripeReaderTrackData-Objekte dargestellt. Von dieser Klasse aus können Sie die folgenden Datentypen abrufen:

Der folgende Codeschnipsel ruft den Bericht und die Daten zum Nachverfolgen ab und überprüft dann den Kartentyp:

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

Support und Feedback

Antworten auf Ihre Fragen

Haben Sie Fragen? Fragen Sie uns entweder in unserem Docs F&A-Forum mit dem UWP-Tag oder auf Stack Overflow mit dem Pointofservice-Tag.

Helfen Sie uns bei der Einordnung Ihrer Fragen:

  • Fügen Sie der Frage auf Stack Overflow das Pointofservice-Tag hinzu.
  • Nehmen Sie in Ihren Beitrag im F&A-Forum den Begriff „UWP“ auf.

Weitere Informationen