Les cartes de fidélité sans contact utilisent des enregistrements NDEF pour encoder les données. Chaque enregistrement NDEF est un type externe défini par Google ou un enregistrement bien connu défini par le forum NFC.
Les enregistrements NDEF externes n'utilisent que le type d'enregistrement et leur charge utile est binaire ou PRIMITIVE. Les charges utiles binaires se composent de données binaires facultatives, qui sont définies par des décalages d'octets, puis des données facultatives qui représentent des enregistrements NDEF supplémentaires. Les charges utiles PRIMITIVE sont des nœuds feuille de l'arborescence d'enregistrements NDEF qui utilisent un octet de format pour définir le format de la charge utile.
Les enregistrements NDEF connus sont également des nœuds feuilles de l'arborescence d'enregistrements NDEF. Le type est défini par le forum NFC. Nous incluons un ID d'enregistrement afin que le terminal sache quel champ utiliser pour mapper la charge utile.
Voici le pseudo-code permettant d'analyser les enregistrements NDEF.//NDEF Record Parsing pseudocode Set smartTapBinaryTypes = { dpk, reb, ses, ... } Set smartTapPrimitiveTypes = { cld, mer, n, ... } byte[] recordTnf = record.getTnf(); byte[] recordType = record.getType(); byte[] recordId = record.getId(); if (recordTnf == NdefRecord.TNF_EXTERNAL) { if (smartTapBinaryTypes.contains(recordType)) { // Smart Tap Binary Record // offset based parsing on a case by case basis switch(recordType) { ... } } else if (!smartTapPrimitiveTypes.contains(recordType)) { // Unknown smart tap record type ... } else { // Smart Tap Primitive Record // Format determined in the first byte of the payload Format format = getFormat(record.getPayload()[0]); ... } } else if (recordTnf == NdefRecord.TNF_WELL_KNOWN) { if (!smartTapPrimitiveTypes.contains(recordId)) { // Unknown smart tap record type ... } else if (recordType == NdefRecord.RTD_TEXT) { // Smart Tap Text Record ... } else if (recordType == NdefRecord.RTD_URI) { // Smart Tap URI Record ... } else { // Unsupported well known record type ... } } else { // Unsupported record TNF ... }Vous devez utiliser une structure de code similaire pour générer des enregistrements NDEF sur les cartes de fidélité sans contact.
Format, octet
Le premier octet d'un enregistrement PRIMITIVE est l'octet de format.
Format, octet | Règle d'encodage | Remarques |
---|---|---|
0x04 | Binaire | |
0x05 | CDI | Les chiffres figurant dans les CDC de longueur impaire sont précédés d'un F . |