Obtenir et comprendre les données de bande magnétique
Cette rubrique explique comment obtenir et interpréter les données à partir d’un lecteur de bandes magnétiques à l’aide d’API point de service (POS) plateforme Windows universelle (UWP).
S’abonner aux événements *DataReceived
Une fois que vous avez configuré votre lecteur de bandes magnétiques dans votre application à l’aide des étapes décrites dans Prise en main du point de service, vous êtes prêt à commencer à obtenir des données à partir de celle-ci.
Chaque fois que le lecteur reconnaît un carte balayé, il déclenche l’un des trois événements suivants :
- Événement AamvaCardDataReceived : se produit lorsqu’un véhicule automobile carte est balayé.
- BankCardDataReceived Event : se produit lorsqu’une banque carte est balayée.
- VendorSpecificDataReceived Event : se produit lorsqu’un carte spécifique au fournisseur est balayé.
Votre application doit uniquement s’abonner aux événements pris en charge par le lecteur de bande magnétique. Vous pouvez voir quels types de carte sont pris en charge avec MagneticStripeReader.SupportedCardTypes.
Le code suivant illustre l’abonnement aux trois événements *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;
}
}
}
Le gestionnaire d’événements est passé le ClaimedMagneticStripeReader et un objet args, dont le type varie en fonction de l’événement :
- Événement AamvaCardDataReceived : Classe MagneticStripeReaderAamvaCardDataReceivedEventArgs
- Événement BankCardDataReceived : Classe MagneticStripeReaderBankCardDataReceivedEventArgs
- Événement VendorSpecificDataReceived : Classe MagneticStripeReaderVendorSpecificCardDataReceivedEventArgs
Obtenir les données
Pour les événements AamvaCardDataReceived et BankCardDataReceived, vous pouvez obtenir certaines des données directement à partir de l’objet args. L’exemple suivant illustre l’obtention de quelques propriétés et leur affectation à des variables membres :
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...
}
Toutefois, certaines données, y compris toutes les données de l’événement VendorSpecificDataReceived, doivent être récupérées via l’objet Report , qui est une propriété du paramètre args . Il s’agit de type MagneticStripeReaderReport.
Vous pouvez utiliser la propriété CardType pour déterminer quel type de carte a été balayé, puis l’utiliser pour vous informer de la façon dont vous interprétez les données à partir de Track1, Track2, Track3 et Track4.
Les données de chacune des pistes sont représentées sous forme d’objets MagneticStripeReaderTrackData . À partir de cette classe, vous pouvez obtenir les types de données suivants :
- Données : données brutes ou décodées.
- DiscretionaryData : données discrétionnaires.
- EncryptedData : données chiffrées.
L’extrait de code suivant obtient le rapport et les données de suivi, puis case activée le type de carte :
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
}
}
Assistance et commentaires
Trouvez des réponses à vos questions
Des questions ? Demandez-nous sur notre forum Docs Q&R avec la balise UWP ou sur Stack Overflow avec la balise pointofservice.
Aidez-nous à trouver vos questions :
- Ajouter la balise pointofservice à votre question sur Stack Overflow.
- Inclure le terme « UWP » dans votre publication sur le forum Q&R