Technischer Beitrag
Entwicklung für EMV, Teil II
Im ersten Teil dieses Beitragshaben wir uns kurz mit EMV-Transaktionen und deren Aufbau beschäftigt. Dabei haben wir festgestellt:
- Anders als bei MSR (MagStripe)-Transaktionen läuft eine EMV-Transaktion in mehreren Phasen ab.
- Der Großteil der Kommunikation zwischen der Chipkarte und dem Lesegerät findet auf der Kernel -Ebene statt und liegt außerhalb der Kontrolle der Anwendungslogik.
- Die Transaktionsergebnisse werden in TLVs („Tags") zurückgegeben.
- Eine Kryptogramm (ein einzigartiges 8-Byte-Datenelement, das von der Karte mithilfe eines nur ihr bekannten privaten Schlüssels erzeugt wird) wird vor der Abschlussphase der Transaktion generiert; ein zweites Kryptogramm wird danach den Aufruf zum Abschließen der Transaktion.
- Das Kryptogramm wird vom Kartenlesegerät in Tag 9F26 zurückgegeben (ein von EMVCo definierter Tag, kein proprietärer ID TECH-Tag).
In der Regel fassen Sie das erste Kryptogramm (sowie alle weiteren TLV-Daten, die Ihr Backend-Prozessor benötigt) zusammen und übermitteln diese in Echtzeit an den Prozessor, um vor dem Aufruf der Abschlussphase einen Autorisierungscode (in Tag 89) zu erhalten. Die Online-Autorisierungsanfrage liegt in Ihrer Verantwortung – weder das Lesegerät noch unser SDK übernehmen diesen Schritt für Sie. Nutzen Sie hierfür die Web-APIs Ihres Gateways. Die meisten Gateways bieten eigene SDKs an, um diesen Prozess zu vereinfachen.
Das Gateway (oder der „Backend-Prozessor") antwortet auf Ihre Autorisierungsanfrage mit den Tags 89, 8A, 91 und optional 71 oder 72. Um die Transaktion abzuschließen, übergeben Sie diese TLVs an die emv_completeTransaction() -Methode des Universal SDK. Über einen Callback werden Sie über das Ergebnis informiert. In diesem Callback erhalten Sie einen Zugriff auf die Transaktionsdaten, die eine Gruppe von TLVs enthalten. Darunter befindet sich das zweite und letzte Kryptogramm (wie oben erwähnt), das – wiederum – in Tag 9F26 enthalten sein wird.
Arten von Kryptogrammen
Das in Tag 9F26 zurückgegebene Kryptogramm ist undurchsichtig. Durch direkte Inspektion lässt sich nicht erkennen, um welche Art von Kryptogramm es sich handelt. Sie können jedoch Tag 9F27 prüfen (der zusammen mit 9F26 zurückgegeben wird), um die Art des erhaltenen Kryptogramms zu bestimmen. Das obere Nibble von 9F27 enthält die benötigten Informationen. Die Bits lassen sich wie folgt entschlüsseln (diese Informationen stammen aus EMV Book 3):
In der Regel hat 9F27 einen (hexadezimalen) Wert von 80, 40 oder 00, was (entsprechend) ARQC, TC oder AAC entspricht. Diese bedeuten wiederum „Online gehen", „Genehmigt" oder „Abgelehnt".
Es ist wichtig zu verstehen, dass diese Werte lediglich die Empfehlung. Diese Empfehlung ist nicht immer bindend. Zum Beispiel ist die Karte verpflichtet , im zweiten Kryptogramm (bei der Completion) einen AAC zurückzugeben, wenn das ursprüngliche Kryptogramm ein ARQC war, die Zahlungsanwendung jedoch keine Online-Verbindung herstellen konnte. Der AAC bedeutet in diesem Fall nicht automatisch, dass Ihre Transaktion abgelehnt wird – diese Entscheidung liegt bei der Online-Instanz (letztendlich beim Issuer). Im speziellen EMV-Szenario, das als Quick Chip (oder Faster EMV) bekannt ist, erhalten Sie immer einen AAC, da die Online-Anfrage zu einem späteren Zeitpunkt erfolgt. Das ist in Ordnung! Sie können die Transaktion dennoch zur Abrechnung einreichen. Die Empfehlung der Karte ist lediglich Empfehlung. Die Online-Instanz trifft die endgültige Entscheidung.
Beachten Sie, dass Sie in den USA (die als reiner Online-Markt gelten) beim ersten Kryptogramm fast immer ein ARQC erhalten. Eine Ausnahme wäre, wenn die Karte abgelaufen ist oder ein anderer Grund vorliegt, der eine direkte Ablehnung der Transaktion erfordert – in diesem Fall könnten Sie (theoretisch) nach der ersten „Gen AC"-Anfrage einen AAC erhalten.
TLV-Daten abrufen
Im Universal SDK, das die Kommunikation mit Ihrem ID TECH Lesegerät für Sie übernimmt – per USB, RS-232, Bluetooth, Klinkenanschluss oder Ethernet (je nach Lesegerättyp) –, sind alle transaktionsbezogenen Kommunikationsvorgänge zum und vom Lesegerät asynchron. Das bedeutet, Sie müssen eine oder mehrere benutzerdefinierte Callback-Routinen beim SDK registrieren, um Rückmeldungen vom Lesegerät zu empfangen. Anleitungen hierzu finden Sie nicht nur in der SDK-Dokumentation, sondern auch im Beispielcode, der dem SDK beiliegt. Die Verwendung von Callbacks ist nichts Kompliziertes. Wir empfehlen Ihnen, sich etwas Zeit zu nehmen, um den Beispielcode des SDK zu studieren und den Ablauf nachzuvollziehen.
Das Wichtigste dabei ist, dass eine EMV-Transaktion in Phasen abläuft und Sie am Ende jeder Phase unterschiedliche TLVs zurückerhalten. Ein weit verbreiteter Irrglaube ist, dass Sie alle möglicherweise benötigten Tags auf einmal am Ende der Completion-Phase erhalten. Das ist nicht der Fall. Sie werden feststellen, dass Sie TLVs in jeder Phase erfassen müssen.
Welche Tags können Sie in den einzelnen Phasen erwarten? Hier sind die typischsten Tags, geordnet nach Transaktionsphase:
Transaktion starten:
4F
50
57
5A
5F20
5F24
5F25
5F2D
5F34
84
9F20
DFEE12
DFEE23
Transaktion authentifizieren:
95
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
Transaktion abschließen:
95
99
9B
9F02
9F03
9F10
9F13
9F26
9F27
9F34
9F36
9F37
9F4D
9F4F
9F5B
Fast alle dieser Tags sind standardmäßig von EMVCo definiert. Diejenigen, die mit „DF" beginnen, sind proprietäre Tags von ID TECH. Eine vollständige Auflistung der proprietären ID TECH Tags und ihrer Bedeutungen finden Sie im Dokument 80000503-001, ID TECH TLV Tag Reference Guide, zum Download verfügbar in unserem Wissensdatenbank.
Fehlt ein benötigter Tag? Kein Problem. Mit dem Universal SDK können Sie zur Transaktionszeit zusätzliche Tags anfordern. Einzelheiten dazu finden Sie nicht nur in der SDK-Dokumentation, sondern auch in unserem Whitepaper zu EMV Transactions with the Universal SDK.
Welche Tags werden verschlüsselt?
Wenn Ihr Lesegerät mit einem Schlüssel versehen und die Verschlüsselung aktiviert ist, werden die Inhalte von Tags mit sensiblen Daten verschlüsselt. Dazu gehören selbstverständlich alle Tags, die Track-Daten (z. B. Tag 57) oder PAN-Daten (5A) enthalten. Die vollständige Liste der verschlüsselten Tags finden Sie in Dokument 80000502-001-F, ID TECH Verschlüsselte Datenausgabe. Wenn Sie ein Demo-Gerät verwenden (das mit einem Demo-Schlüssel bespielt wurde), können Sie die Daten manuell mit unserem Online-Toolentschlüsseln. Im Allgemeinen sollten Sie jedoch in produktivem Code niemals selbst Daten entschlüsseln müssen, da Sie die Daten direkt an Ihren Zahlungsdienstleister weiterleiten.
Verschlüsselung ist ein umfangreiches Thema. Wir werden es an dieser Stelle nicht weiter vertiefen, aber wenn Sie mehr darüber erfahren möchten, lesen Sie gerne unsere früheren Beiträge dazu.
Haben Sie Fragen?
Inzwischen haben Sie wahrscheinlich viele Fragen. Kein Problem! Wir stellen Ihnen eine Vielzahl kostenloser Ressourcen auf unserem Wissensdatenbankzur Verfügung, und falls Sie weitere Fragen haben, sind unsere Techniker nur einen Anruf entfernt.
