Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- Evento AamvaCardDataReceived: Se produce cuando se desliza una tarjeta de vehículo de motor.
- El evento BankCardDataReceivedse produce cuando se desliza una tarjeta bancaria.
- evento VendorSpecificDataReceived: se produce cuando se desliza una tarjeta específica del proveedor.
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:
- evento AamvaCardDataReceived: MagneticStripeReaderAamvaCardDataReceivedEventArgs (clase)
- Evento BankCardDataReceived: Clase MagneticStripeReaderBankCardDataReceivedEventArgs
- evento VendorSpecificDataReceived: datos específicos del vendedor, clase MagneticStripeReaderVendorSpecificCardDataReceivedEventArgs
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:
- Data: los datos sin procesar o descodificados.
- DiscretionaryData: los datos discrecionales.
- EncryptedData: los datos cifrados.
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
- lector de bandas magnéticas
- clase ClaimedMagneticStripeReader
- clase MagneticStripeReaderAamvaCardDataReceivedEventArgs
- clase MagneticStripeReaderBankCardDataReceivedEventArgs
- clase MagneticStripeReaderVendorSpecificCardDataReceivedEventArgs
- InformeDelLectorDeTarjetasMagnéticas
- MagneticStripeReaderTrackData