Compartir a través de


Obtención y comprensión de los datos de franja magnética

En este tema se describe cómo obtener e interpretar los datos de un lector de bandas magnéticas mediante las API de punto de servicio (POS) de la Plataforma universal de Windows (UWP).

Suscríbase a los eventos *DataReceived

Una vez que haya configurado el lector de bandas magnéticas en la aplicación con los pasos descritos en Introducción a Point of Service, estará listo para empezar a obtener datos de ella.

Cada vez que el lector reconoce una tarjeta deslizada, generará uno de estos tres eventos:

La aplicación solo necesita suscribirse a los eventos compatibles con el lector de bandas magnéticas. Puede ver qué tipos de tarjetas se admiten con MagneticStripeReader.SupportedCardTypes.

El siguiente código demuestra cómo suscribirse a los tres 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;
        }
    }
}

Al controlador de eventos se le pasará el ClaimedMagneticStripeReader y un objeto de argumentos, cuyo tipo variará según el evento:

Obtención de los datos

Para los eventos AamvaCardDataReceived y BankCardDataReceived, puede obtener algunos de los datos directamente desde el objeto args. En el ejemplo siguiente se muestra cómo obtener algunas propiedades y asignarlas a variables miembro:

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

Sin embargo, algunos datos, incluidos todos los datos del evento VendorSpecificDataReceived, deben recuperarse a través del objeto Report, que es una propiedad del parámetro . Este es de tipo MagneticStripeReaderReport.

Puede usar la propiedad CardType para averiguar qué tipo de tarjeta se ha deslizado y, a continuación, usarlo para interpretar los datos de Track1, Track2, Track3y Track4.

Los datos de cada una de las pistas se representan como objetos MagneticStripeReaderTrackData. A partir de esta clase, puede obtener los siguientes tipos de datos:

El siguiente fragmento de código obtiene el informe y los datos de seguimiento y, a continuación, comprueba el tipo de tarjeta:

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

Soporte y comentarios

Encontrar respuestas a sus preguntas

¿Tiene preguntas? Pregúntanos en nuestro foro de preguntas y respuestas de docs con la etiqueta UWP o en Stack Overflow con la etiqueta pointofservice.

Ayúdenos a encontrar sus preguntas:

  • Agregue la etiqueta pointofservice a su pregunta en Stack Overflow.
  • Incluir el término "UWP" en tu publicación en el foro de preguntas y respuestas

Consulte también