Compartir a través de


Obtener y comprender los datos de bandas magnéticas

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

Suscribirse a eventos *DataReceived

Una vez que haya configurado el lector de banda magnética en su aplicación con los pasos descritos en Introducción a Punto de Servicio, estará listo para empezar a obtener datos de él.

Cada vez que el lector reconozca una tarjeta pasada, lanzará uno de estos tres eventos:

La aplicación solo necesita suscribirse a los eventos soportados por el lector de banda magnética. Puede ver qué tipos de tarjetas son compatibles con MagneticStripeReader.SupportedCardTypes.

El siguiente código muestra la suscripción 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 args, cuyo tipo variará en función del evento:

Obtener los datos

Para los eventos AamvaCardDataReceived y BankCardDataReceived, puede obtener algunos de los datos directamente del objeto args. El siguiente ejemplo 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 args. Este es de tipo MagneticStripeReaderReport.

Puede usar la propiedad CardType para averiguar qué tipo de tarjeta se ha deslizado, y luego usar eso para informar cómo interpreta los datos de Track1, Track2, Track3, y Track4.

Los datos de cada una de las pistas se representan como objetos MagneticStripeReaderTrackData. Desde 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 tus preguntas

¿Tienes alguna pregunta? Pregúntenos en nuestro foro de preguntas y respuestas Docs con la etiqueta UWP o en Stack Overflow con la etiqueta pointofservice.

Ayúdenos a localizar sus preguntas:

  • Agregue la etiqueta pointofservice a la pregunta en Stack Overflow.
  • Incluya el término "UWP" en su mensaje en el foro de preguntas y respuestas.

Consulte también