Der folgende Inhalt setzt voraus, dass Sie die erforderliche PCI-Zertifizierung erhalten haben, um sensible Karteninhaberdaten in der Anfrage an unsere Webservices API zu verarbeiten und zu übermitteln.
Lesen Sie diesen Artikel, um mehr zu erfahren.
Das folgende Dokument erklärt, wie Sie eine EMV 3-D Secure Authentifizierung mit unserer JavaScript Library und eine anschließende Zahlung mit unserer Webservices API durchführen können.
Wir unterstützen auch alternative Arbeitsabläufe, die möglicherweise besser auf Ihre Bedürfnisse zugeschnitten sind:
Über EMV 3-D Secure
EMV 3-D Secure ist eine Form von Starke Kundenauthentifizierung (SCA), mit der Betrug und Rückbuchungen bei Transaktionen im elektronischen Geschäftsverkehr verringert werden sollen. Es ermöglicht den Kartenherausgebern, ein zusätzliches Maß an Schutz zu bieten, indem sie die Karteninhaber an der Verkaufsstelle authentifizieren (z. B. mit einem geheimen Passwort oder biometrischen Merkmalen), wenn die Zahlung als hochriskant eingestuft wird.
Die Zahlungsdiensterichtlinie (PSD2) schreibt vor, dass eine Form von Starke Kundenauthentifizierung (SCA) bei allen Transaktionen, die vom Kunden über seinen Browser initiiert werden, durchgeführt wird. Sie müssen 3-D Secure verwenden, um die Anforderungen von PSD2 zu erfüllen.
Übersicht
Dieser Prozess erfordert, dass Sie die Kartendaten des Kunden auf Ihren eigenen Servern erfassen und für die EMV-3DS-Authentifizierung bereitstellen, wie unten beschrieben.
- Sie müssen eine Seite mit einem Formular hosten, das eine Aktion zum POST an eine Zwischenseite enthält, die unser Markup hostet.
- Die oben erwähnte Zwischenseite ist praktisch eine Warteseite, die vorübergehend angezeigt wird, bevor die EMV-3DS-Authentifizierung des Kunden durchgeführt wird. Diese Authentifizierung wird automatisch von st.js durchgeführt. Klicken Sie hier, um mehr über die EMV-3DS-Authentifizierung zu erfahren. Während dieses Vorgangs kann der Browser des Kunden ein Overlay anzeigen, in dem er aufgefordert wird, einige grundlegende Aktionen zur Authentifizierung seiner Identität auszuführen.
Es wird empfohlen, eine Ladeanimation und/oder eine Meldung anzuzeigen, wenn das JS mehr als ein paar Sekunden braucht, um die Anfrage abzuschließen.
- Nach der Überprüfung und Authentifizierung durch den Kartenaussteller des Kunden wird das Overlay automatisch geschlossen, und die Antwortdaten werden an Ihren Server zurückgegeben.
- Um die Zahlung zu verarbeiten, muss Ihr Server eine AUTH -Anfrage mit den in der Antwort zurückgegebenen Daten übermitteln.
Ändern Sie das server-seitige Zahlungsformular
Sie müssen ein Formular auf der Zwischenseite hosten, das so eingerichtet ist, dass es die Seitejs library mit einer Konfiguration initialisiert, die das JWT enthält, das auf dem Server des Händlers generiert wurde. Dieser Schritt ist erforderlich, um den EMV 3DS-Authentifizierungsprozess einzuleiten.
<html>
<head>
</head>
<body>
<div id="st-notification-frame"></div>
<form id="st-form" action="https://www.example.com" method="POST">
</form>
<script src="https://cdn.eu.trustpayments.com/js/latest/st.js"></script>
<script>
(function() {
var st = SecureTrading({
jwt:'INSERT YOUR JWT HERE',
submitOnError: true
});
st.Components({startOnLoad: true});
})();
</script>
</body>
</html>
st.js
Das serverseitige Zahlungsformular muss unser "st.js" JavaScript Library enthalten. st.js wickelt die EMV-3DS-Authentifizierung ab und kontaktiert den Kartenaussteller, um festzustellen, ob die Karte registriert ist (eine THREEDQUERY wird verarbeitet). Wenn der Kartenaussteller feststellt, dass ein erhöhtes Betrugsrisiko besteht, wird dem Kunden automatisch ein Overlay angezeigt, in dem er zur Authentifizierung aufgefordert wird.
Bitte stellen Sie sicher, dass Ihr System die st.js library auf den Trust Payments Servern referenziert. Dadurch wird sichergestellt, dass Ihre Lösung immer die neueste Version der Bibliothek verwendet.
Unser st.js kontaktiert den Kartenaussteller, um festzustellen, ob die Karte registriert ist. Wenn der Kartenaussteller feststellt, dass ein erhöhtes Betrugsrisiko besteht, wird dem Kunden automatisch ein Overlay angezeigt, in dem er zur Authentifizierung aufgefordert wird.
Um dieses Verhalten zu aktivieren, müssen Sie auf die Website JavaScript Library verweisen, indem Sie eine definierte Konfiguration einfügen, die eine bestimmte Methode verwendet ("st.Components") innerhalb von "st.js".
Hinweis: Stellen Sie sicher, dass Sie die anonyme Funktion wie im Beispiel gezeigt einschließen. Dadurch wird verhindert, dass JS ausgeführt wird, bis die st.js geladen wurde.
st-form
Sie müssen sich vergewissern, dass Ihrem Zahlungsformular die ID "st-form" und ein Name zugewiesen wurde. action Attribut, das eine gültige URL-Adresse enthält, die auf Ihrem Server gehostet wird. Die angegebene Adresse muss in der Lage sein, die Daten zu verarbeiten, die in application/x-www-form-urlencoded format (siehe das nachstehende Beispiel). Klicken Sie hier für ein Beispiel.
startOnLoad
Sie müssen sicherstellen, dass beim Aufruf des st.Components Methode, die Sie eine Config-Eigenschaft von startOnLoad wahr ist. Damit entfällt die Notwendigkeit einer weiteren Kundeninteraktion für das Vermittlungsformular zur Übermittlung der Daten an Trust Payments.
submitOnError
Sie müssen sicherstellen, dass Ihr Formular das zusätzliche Feld submitOnError, mit dem Wert true. Dadurch wird sichergestellt, dass der Kunde im Falle eines Fehlers zu Ihrer Website weitergeleitet wird, damit er seine Daten ändern und die Zahlung erneut versuchen kann.
jwt
Die jwt Die zur Initialisierungskonfiguration hinzugefügte Eigenschaft muss in Form eines JSON Web Token (JWT) vorliegen, das aus verschlüsselten Daten besteht. JSON-Web-Tokens sind eine offene, dem Industriestandard RFC 7519 entsprechende Methode zur sicheren Übertragung von Daten zwischen zwei Parteien. Klicken Sie hier, um mehr über JWT zu erfahren.
- Sie müssen sich auf diese Ressource beziehen und eine Bibliothek auswählen, mit der Sie das JWT generieren und verifizieren können.
- Bei der Generierung eines JWT payload verlangt unser TRU Connect Gateway die Angabe einer Reihe von Feldern, die auf dieser Seite im Abschnitt "Generierung des payload" näher erläutert werden.
In diesem Workflow muss das JWT auch die pan, expirydate und securitycode Felder, wie im folgenden Beispiel gezeigt:
{
"payload":{
"accounttypedescription":"ECOM",
"baseamount":"1050",
"currencyiso3a":"GBP",
"sitereference":"test_site12345",
"requesttypedescriptions":["THREEDQUERY"],
"pan":"4000000000001091",
"expirydate":"12/2022",
"securitycode":"123"
},
"iat":1559033849,
"iss":"jwt.user"
}
Visa hat angeordnet, dass alle im Vereinigten Königreich ansässigen Händler mit einem Merchant Category Code (MCC) von 6012 müssen zusätzliche Felder in der payload senden. Klicken Sie hier für weitere Informationen.
Erzwingen von Step-up-Authentifizierung (Challenge)
Sie können beeinflussen, ob verstärkte 3DS-Authentifizierung wird mit dem Kunden durch Übermittlung zusätzlicher Felder durchgeführt scaexemptionindicator im payload:
- Einreichung scaexemptionindicator=13 wird den Kartenaussteller auffordern, eine Step-up-Authentifizierung mit EMV 3DS durchzuführen. Hält der Kartenaussteller dies jedoch für unnötig, erfolgt eine reibungslose Authentifizierung und der Kartenaussteller übernimmt in den meisten Fällen die Haftung.
- Einreichung scaexemptionindicator=14 wird den Kartenaussteller auffordern, unter allen Umständen eine Step-up-Authentifizierung mit EMV 3DS durchzuführen.
Wenn ein weiche Ablehnung Antwort auf eine Zahlungsaufforderung zurückgegeben wurde, müssen Sie Folgendes angeben scaexemptionindicator=14 im payload um eine schrittweise Authentifizierung zu erzwingen.
Bearbeitung der Authentifizierungsantwort und Verarbeitung Autorisierung
Nach der Authentifizierung mit EMV 3DS erhält Ihr System eine Reihe von Parametern zurück. Es gibt zwei Hauptresultate, die in den folgenden Abschnitten beschrieben werden. Sie müssen diese lesen und sicherstellen, dass Ihre Lösung entsprechend antwortet.
Bevor Sie einem Wert vertrauen, der in der jwt payload, muss Ihr System zunächst die Signatur überprüfen, um sicherzustellen, dass die Daten nicht von einem unbefugten Dritten geändert wurden.
Der Antwort-JWT besteht aus drei Teilen, die durch Punkte (".") getrennt sind, im folgenden Format:
Header.Payload.Signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2ODc5NDI2MTAsInBheWxvYWQiOnsicmVxdWVzdHJlZmVyZW5jZSI6Ilc2MC1IQXl1ZUcyTiIsInZlcnNpb24iOiIxLjAwIiwiand0IjoiZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKcWQzUXVkWE5sY2lJc0ltbGhkQ0k2TVRZNE56azBNall4TUN3aWNHRjViRzloWkNJNmV5SmpkWEp5Wlc1amVXbHpiek5oSWpvaVZWTkVJaXdpY21WeGRXVnpkSFI1Y0dWa1pYTmpjbWx3ZEdsdmJuTWlPbHRkTENKemFYUmxjbVZtWlhKbGJtTmxJam9pZEdWemRGOXFiMlZpYkc5blozTTVNalEwTlNJc0ltRmpZMjkxYm5SMGVYQmxaR1Z6WTNKcGNIUnBiMjRpT2lKRlEwOU5JaXdpY0dGeVpXNTBkSEpoYm5OaFkzUnBiMjV5WldabGNtVnVZMlVpT2lJMk1DMDVMVE15TURJeU5qVWlMQ0p6WldOMWNtbDBlV052WkdVaU9pSXhNak1pTENKaVlYTmxZVzF2ZFc1MElqb2lOVEFpTENKbGVIQnBjbmxrWVhSbElqb2lNREV2TWpBeU55SXNJbkJoYmlJNklqUXdNREF3TURBd01EQXdNREV3TURBaWZYMC4yZVhkZHoyM0wybHhQdV80RWF6bUFQa2hRSWZlbzZCVVpTdC1FV3pMa3UwIiwicmVzcG9uc2UiOlt7InRyYW5zYWN0aW9uc3RhcnRlZHRpbWVzdGFtcCI6IjIwMjMtMDYtMjggMDg6NTY6NDkiLCJjdXN0b21lcm91dHB1dCI6IlJFU1VMVCIsImxpdmVzdGF0dXMiOiIwIiwiaXNzdWVyIjoiU2VjdXJlVHJhZGluZyBUZXN0IElzc3VlcjEiLCJtZXJjaGFudGNhdGVnb3J5Y29kZSI6IjEyMzQiLCJkY2NlbmFibGVkIjoiMCIsInNldHRsZWR1ZWRhdGUiOiIyMDIzLTA2LTI4IiwiZXJyb3Jjb2RlIjoiMCIsInRocmVlZHZlcnNpb24iOiIyLjEuMCIsImFjcXVpcmVydHJhbnNhY3Rpb25yZWZlcmVuY2UiOiJPWjRYMnFNc2pFNWQwS3JsbHQ5MCIsInRpZCI6IjI3ODgyNzg4IiwibWVyY2hhbnRudW1iZXIiOiIwMDAwMDAwMCIsIm1lcmNoYW50Y291bnRyeWlzbzJhIjoiR0IiLCJzdGF0dXMiOiJZIiwidHJhbnNhY3Rpb25yZWZlcmVuY2UiOiI2MC05LTMyMDIyNjUiLCJtZXJjaGFudG5hbWUiOiJUZXN0IE1lcmNoYW50IiwicGF5bWVudHR5cGVkZXNjcmlwdGlvbiI6IlZJU0EiLCJhY2NvdW50dHlwZWRlc2NyaXB0aW9uIjoiRUNPTSIsImFjcXVpcmVycmVzcG9uc2Vjb2RlIjoiMCIsInJlcXVlc3R0eXBlZGVzY3JpcHRpb24iOiJUSFJFRURRVUVSWSIsIm1hc2tlZHBhbiI6IjQwMDAwMCMjIyMjIzEwMDAiLCJlcnJvcm1lc3NhZ2UiOiJPayIsImRlYnRyZXBheW1lbnQiOiIwIiwiaXNzdWVyY291bnRyeWlzbzJhIjoiWloiLCJlbnJvbGxlZCI6IlkiLCJvcGVyYXRvcm5hbWUiOiJqd3QudXNlciIsInNldHRsZXN0YXR1cyI6IjAifV0sInNlY3JhbmQiOiI2cSJ9LCJhdWQiOiJqd3QudXNlciJ9.Hm88rS9bkZ9hFDOt9rKzQvCqlb4uuioNPcqYqydA1BA
{
"iat": 1687942610,
"payload": {
"requestreference": "W60-HAyueG2N",
"version": "1.00",
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqd3QudXNlciIsImlhdCI6MTY4Nzk0MjYxMCwicGF5bG9hZCI6eyJjdXJyZW5jeWlzbzNhIjoiVVNEIiwicmVxdWVzdHR5cGVkZXNjcmlwdGlvbnMiOltdLCJzaXRlcmVmZXJlbmNlIjoidGVzdF9qb2VibG9nZ3M5MjQ0NSIsImFjY291bnR0eXBlZGVzY3JpcHRpb24iOiJFQ09NIiwicGFyZW50dHJhbnNhY3Rpb25yZWZlcmVuY2UiOiI2MC05LTMyMDIyNjUiLCJzZWN1cml0eWNvZGUiOiIxMjMiLCJiYXNlYW1vdW50IjoiNTAiLCJleHBpcnlkYXRlIjoiMDEvMjAyNyIsInBhbiI6IjQwMDAwMDAwMDAwMDEwMDAifX0.2eXddz23L2lxPu_4EazmAPkhQIfeo6BUZSt-EWzLku0",
"response": [
{
"transactionstartedtimestamp": "2023-06-28 08:56:49",
"customeroutput": "RESULT",
"livestatus": "0",
"issuer": "SecureTrading Test Issuer1",
"merchantcategorycode": "1234",
"dccenabled": "0",
"settleduedate": "2023-06-28",
"errorcode": "0",
"threedversion": "2.1.0",
"acquirertransactionreference": "OZ4X2qMsjE5d0Krllt90",
"tid": "27882788",
"merchantnumber": "00000000",
"merchantcountryiso2a": "GB",
"status": "Y",
"transactionreference": "60-9-3202265",
"merchantname": "Test Merchant",
"paymenttypedescription": "VISA",
"accounttypedescription": "ECOM",
"acquirerresponsecode": "0",
"requesttypedescription": "THREEDQUERY",
"maskedpan": "400000######1000",
"errormessage": "Ok",
"debtrepayment": "0",
"issuercountryiso2a": "ZZ",
"enrolled": "Y",
"operatorname": "jwt.user",
"settlestatus": "0"
}
],
"secrand": "6q"
},
"aud": "jwt.user"
}
Bevor Sie der Antwort vertrauen können, müssen Sie überprüfen, ob die zurückgegebene Signatur mit dem erwarteten Wert übereinstimmt. Ist dies nicht der Fall, kann sie von einem Unbefugten geändert worden sein.
Die Bibliothek, die Sie zuvor ausgewählt haben, um das JWT in Ihrem Zahlungsformular zu generieren und zu verifizieren, kann auch zur Verifizierung des zurückgegebenen JWT verwendet werden.
Die signature wird mit SHA-256 gehasht und kann daher nicht entschlüsselt werden. Dies bedeutet, dass zur Überprüfung der signature korrekt ist, muss sie unter Verwendung der header und payload zurückgegeben.
Die Bereitstellung der gleichen secret während dieses Prozesses verwendet wird, wird die neu berechnete signature sollte mit dem in der Antwort zurückgegebenen JWT übereinstimmen. Zusammengefasst:
- Base64URL dekodieren JWT header
- Base64URL dekodieren JWT payload
- Generieren Sie die Signatur neu, indem Sie die header, die payload und signieren sie mit dem secret.
Sobald dieser Prozess abgeschlossen ist, empfehlen wir, dass die errorcode Der in der Antwort zurückgegebene Wert ist "0", was den Erfolg anzeigt.
Senden Sie eine AUTH Anfrage mit Webservices API
Nachdem die EMV 3DS-Authentifizierung durchgeführt wurde, müssen Sie eine AUTH -Anfrage an Trust Payments über unsere Webservices API senden, um die Zahlung zu verarbeiten.
Falls Sie dies noch nicht getan haben, empfehlen wir Ihnen, unsere Dokumentation Erste Schritte zu lesen, um zu erfahren, wie Sie eine grundlegende Anfrage mit unserer Webservices API bearbeiten können.
Klicken Sie hier, um die Seite in einer neuen Registerkarte zu öffnen.
Wenn die JWT-Antwort 3DS enthält status N (was bedeutet, dass der Karteninhaber die Authentifizierung nicht erfolgreich abgeschlossen hat), sollten Sie die Anfrage Autorisierung nicht übermitteln. Wenn Sie die Anfrage Autorisierung übermitteln, erhalten Sie eine Fehlerantwort.
Sie müssen die nachstehende Schematabelle lesen und sicherstellen, dass die erforderlichen Felder in der Anfrage angegeben werden, wie im folgenden Beispiel gezeigt:
Autorisierung Feldspezifikation
Feld | Format | Beschreibung | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alphanumerisch (25) | Wert des THREEDQUERY transactionreference zurückgegeben in der jwt Antwort, die Sie oben überprüft haben. |
Code-Beispiel
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
auth = {
"sitereference": "test_site12345",
"requesttypedescriptions": ["AUTH"],
"orderreference": "My_Order_123",
"parenttransactionreference": "24-9-80061"
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => 'webservices@example.com',
'password' => 'Password1^',
);
$requestData = array(
'sitereference' => 'test_site12345',
'requesttypedescriptions' => array('AUTH'),
'orderreference' => 'My_Order_123',
'parenttransactionreference' => '24-9-80061'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ https://webservices.securetrading.net/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"webservices@example.com",
"version": "1.00",
"request": [{
"requesttypedescriptions": ["AUTH"],
"sitereference": "test_site12345",
"orderreference": "My_Order_123",
"parenttransactionreference": "24-9-80061"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescriptions":["AUTH"],
"sitereference":"test_site12345",
"orderreference":"My_Order_123",
"parenttransactionreference":"24-9-80061"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<operation>
<sitereference>test_site12345</sitereference>
<parenttransactionreference>24-9-80061</parenttransactionreference>
</operation>
</request>
</requestblock>
Bearbeiten Sie die Antwort Autorisierung
Schließlich erhält Ihr Server eine Antwort von Autorisierung .
{
"requestreference":"W23-n68rw97k",
"version":"1.00",
"response":[{
"accounttypedescription":"ECOM",
"acquirerresponsecode":"00",
"authcode":"TEST",
"baseamount":"1050",
"cavv":"Q0FWVkNBVlZDQVZWQ0FWVkNBVlY=",
"currencyiso3a":"GBP",
"dccenabled":"0",
"eci":"05",
"enrolled":"Y",
"errorcode":"0",
"errormessage":"Ok",
"issuer":"Test Issuer",
"issuercountryiso2a":"US",
"livestatus":"0",
"maskedpan":"400000######1091",
"merchantcountryiso2a":"GB",
"merchantname":"Test Merchant",
"merchantnumber":"00000000",
"operatorname":"webservices@example.com",
"parenttransactionreference":"24-9-80061",
"paymenttypedescription":"VISA",
"requesttypedescription":"AUTH",
"securityresponseaddress":"0",
"securityresponsepostcode":"2",
"securityresponsesecuritycode":"2",
"settleduedate":"2021-10-01",
"settlestatus":"0",
"status":"Y",
"tid":"00000000",
"transactionreference":"24-9-80061",
"transactionstartedtimestamp":"2021-10-01 14:34:35",
"xid":"NmVxNGtsTDBkSVJzcmwrSnEyMFc="
}],
"secrand":"bsZP"
}
Bevor Sie einem Wert vertrauen, der in der jwt payload, muss Ihr System zunächst die Signatur überprüfen, um sicherzustellen, dass die Daten nicht von einem unbefugten Dritten geändert wurden.
Der Antwort-JWT besteht aus drei Teilen, die durch Punkte (".") getrennt sind, im folgenden Format:
Header.Payload.Signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2MzMwOTg4NzMsInBheWxvYWQiOnsicmVxdWVzdHJlZmVyZW5jZSI6IlcyNC1wcWJ3aDBuMiIsInZlcnNpb24iOiIxLjAwIiwiand0IjoiZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKM1pXSnpaWEoyYVdObGMwQnRaWEpqYUdGdWRDNWpiMjBpTENKcFlYUWlPakUyTXpNd09UZzROek1zSW5CaGVXeHZZV1FpT25zaVkzVnpkRzl0WlhKMGIzZHVJam9pUW1GdVoyOXlJaXdpWW1sc2JHbHVaM0J2YzNSamIyUmxJam9pVkVVeE1pQXpVMVFpTENKamRYSnlaVzVqZVdsemJ6TmhJam9pUjBKUUlpd2lZM1Z6ZEc5dFpYSndjbVZ0YVhObElqb2lNVElpTENKaWFXeHNhVzVuYkdGemRHNWhiV1VpT2lKT1lXMWxJaXdpYkc5allXeGxJam9pWlc1ZlIwSWlMQ0pqZFhOMGIyMWxjbXhoYzNSdVlXMWxJam9pVG1GdFpTSXNJbUpwYkd4cGJtZGxiV0ZwYkNJNkluUmxjM1JBWlhoaGJYQnNaUzVqYjIwaUxDSmlhV3hzYVc1bmNISmxiV2x6WlNJNklqRXlJaXdpYzJsMFpYSmxabVZ5Wlc1alpTSTZJblJsYzNReElpd2lZV05qYjNWdWRIUjVjR1ZrWlhOamNtbHdkR2x2YmlJNklrVkRUMDBpTENKd1lYSmxiblIwY21GdWMyRmpkR2x2Ym5KbFptVnlaVzVqWlNJNklqSTBMVGt0T0RBd05qRWlMQ0ppYVd4c2FXNW5jM1J5WldWMElqb2lWR1Z6ZENCemRISmxaWFFpTENKeVpYRjFaWE4wZEhsd1pXUmxjMk55YVhCMGFXOXVjeUk2VzEwc0ltTjFjM1J2YldWeWMzUnlaV1YwSWpvaVZHVnpkQ0J6ZEhKbFpYUWlMQ0pqZFhOMGIyMWxjbkJ2YzNSamIyUmxJam9pTVRFeU15SXNJbUpwYkd4cGJtZDBaV3hsY0dodmJtVjBlWEJsSWpvaVRTSXNJbUpoYzJWaGJXOTFiblFpT2lJeE1EQXdJaXdpWW1sc2JHbHVaM1JsYkdWd2FHOXVaU0k2SWpBeE1qTTBJREV4TVRJeU1pSXNJbUpwYkd4cGJtZG1hWEp6ZEc1aGJXVWlPaUpVWlhOMElpd2lZbWxzYkdsdVozUnZkMjRpT2lKQ1lXNW5iM0lpZlgwLkpfVzlGU19MYkVzTXQ0SjhnWUlTSDNQcjNDMl9PUHRQMVd1Nm1MRklON0UiLCJyZXNwb25zZSI6W3sidHJhbnNhY3Rpb25zdGFydGVkdGltZXN0YW1wIjoiMjAyMS0xMC0wMSAxNDozNDozMyIsImN1c3RvbWVyb3V0cHV0IjoiVEhSRUVEUkVESVJFQ1QiLCJsaXZlc3RhdHVzIjoiMCIsIm1lcmNoYW50bmFtZSI6IlRlc3QgVW5pdHRlc3QgU2l0ZSIsImRjY2VuYWJsZWQiOiIwIiwic2V0dGxlZHVlZGF0ZSI6IjIwMjEtMTAtMDEiLCJlcnJvcmNvZGUiOiIwIiwiYWNxdWlyZXJ0cmFuc2FjdGlvbnJlZmVyZW5jZSI6Ilp6eDhxYzQzUEJGQXZGVXdlNDcwIiwidGlkIjoiMjc4ODAwMDAiLCJ0aHJlZWRwYXlsb2FkIjoiZXlKdFpYTnpZV2RsVkhsd1pTSTZJa05TWlhFaUxDSnRaWE56WVdkbFZtVnljMmx2YmlJNklqSXVNUzR3SWl3aWRHaHlaV1ZFVTFObGNuWmxjbFJ5WVc1elNVUWlPaUkyWm1Jd1pETXlZeTA0WVdObUxUUTRNR1l0T1dZeE5DMWxNV0UwT0RjNU9UQmhaV0VpTENKaFkzTlVjbUZ1YzBsRUlqb2lNMlV6TjJZd1pUSXRNVEEyTlMwMFpEUmtMV0ZqTXprdE9XTTBNMll4TkdGaFl6RXpJaXdpWTJoaGJHeGxibWRsVjJsdVpHOTNVMmw2WlNJNklqQXlJbjAiLCJtZXJjaGFudG51bWJlciI6IjAwMDAwMDAwIiwibWVyY2hhbnRjb3VudHJ5aXNvMmEiOiJHQiIsInN0YXR1cyI6IkMiLCJ0cmFuc2FjdGlvbnJlZmVyZW5jZSI6IjI0LTktODAwNjEiLCJ0aHJlZWR2ZXJzaW9uIjoiMi4xLjAiLCJwYXltZW50dHlwZWRlc2NyaXB0aW9uIjoiVklTQSIsImFjc3VybCI6Imh0dHBzOi8vMG1lcmNoYW50YWNzc3RhZy5jYXJkaW5hbGNvbW1lcmNlLmNvbS9NZXJjaGFudEFDU1dlYi9jcmVxLmpzcCIsImFjY291bnR0eXBlZGVzY3JpcHRpb24iOiJFQ09NIiwiYWNxdWlyZXJyZXNwb25zZWNvZGUiOiIwIiwicmVxdWVzdHR5cGVkZXNjcmlwdGlvbiI6IlRIUkVFRFFVRVJZIiwiaXNzdWVyIjoiU2VjdXJlVHJhZGluZyBUZXN0IElzc3VlcjEiLCJtYXNrZWRwYW4iOiI0MDAwMDAjIyMjIyMxMDkxIiwiZXJyb3JtZXNzYWdlIjoiT2siLCJvcGVyYXRvcm5hbWUiOiJ3ZWJzZXJ2aWNlc0BtZXJjaGFudC5jb20iLCJlbnJvbGxlZCI6IlkiLCJpc3N1ZXJjb3VudHJ5aXNvMmEiOiJaWiIsInNldHRsZXN0YXR1cyI6IjAifV0sInNlY3JhbmQiOiJad0VjIn0sImF1ZCI6IndlYnNlcnZpY2VzQG1lcmNoYW50LmNvbSJ9.lyPo03P1nTQNohqqF3LZdLWnXoaIzgKMzjC14LWhJG8&
{
"iat": 1633098873,
"payload": {
"requestreference": "W24-pqbwh0n2",
"version": "1.00",
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ3ZWJzZXJ2aWNlc0BtZXJjaGFudC5jb20iLCJpYXQiOjE2MzMwOTg4NzMsInBheWxvYWQiOnsiY3VzdG9tZXJ0b3duIjoiQmFuZ29yIiwiYmlsbGluZ3Bvc3Rjb2RlIjoiVEUxMiAzU1QiLCJjdXJyZW5jeWlzbzNhIjoiR0JQIiwiY3VzdG9tZXJwcmVtaXNlIjoiMTIiLCJiaWxsaW5nbGFzdG5hbWUiOiJOYW1lIiwibG9jYWxlIjoiZW5fR0IiLCJjdXN0b21lcmxhc3RuYW1lIjoiTmFtZSIsImJpbGxpbmdlbWFpbCI6InRlc3RAZXhhbXBsZS5jb20iLCJiaWxsaW5ncHJlbWlzZSI6IjEyIiwic2l0ZXJlZmVyZW5jZSI6InRlc3QxIiwiYWNjb3VudHR5cGVkZXNjcmlwdGlvbiI6IkVDT00iLCJwYXJlbnR0cmFuc2FjdGlvbnJlZmVyZW5jZSI6IjI0LTktODAwNjEiLCJiaWxsaW5nc3RyZWV0IjoiVGVzdCBzdHJlZXQiLCJyZXF1ZXN0dHlwZWRlc2NyaXB0aW9ucyI6W10sImN1c3RvbWVyc3RyZWV0IjoiVGVzdCBzdHJlZXQiLCJjdXN0b21lcnBvc3Rjb2RlIjoiMTEyMyIsImJpbGxpbmd0ZWxlcGhvbmV0eXBlIjoiTSIsImJhc2VhbW91bnQiOiIxMDAwIiwiYmlsbGluZ3RlbGVwaG9uZSI6IjAxMjM0IDExMTIyMiIsImJpbGxpbmdmaXJzdG5hbWUiOiJUZXN0IiwiYmlsbGluZ3Rvd24iOiJCYW5nb3IifX0.J_W9FS_LbEsMt4J8gYISH3Pr3C2_OPtP1Wu6mLFIN7E",
"response": [
{
"accounttypedescription": "ECOM",
"acquirerresponsecode": "0",
"acquirertransactionreference": "Zzx8qc43PBFAvFUwe470",
"acsurl": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp",
"customeroutput": "THREEDREDIRECT",
"dccenabled": "0",
"enrolled": "Y",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "Test Issuer",
"issuercountryiso2a": "ZZ",
"livestatus": "0",
"maskedpan": "400000######1091",
"merchantcountryiso2a": "GB",
"merchantname": "Test merchant",
"merchantnumber": "00000000",
"operatorname": "webservices@merchant.com",
"paymenttypedescription": "VISA",
"requesttypedescription": "THREEDQUERY",
"settleduedate": "2021-10-01",
"settlestatus": "0",
"status": "C",
"threedpayload": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiI2ZmIwZDMyYy04YWNmLTQ4MGYtOWYxNC1lMWE0ODc5OTBhZWEiLCJhY3NUcmFuc0lEIjoiM2UzN2YwZTItMTA2NS00ZDRkLWFjMzktOWM0M2YxNGFhYzEzIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjAyIn0",
"threedversion": "2.1.0",
"tid": "00000000",
"transactionreference": "24-9-80061",
"transactionstartedtimestamp": "2021-10-01 14:34:33"
}
],
"secrand": "ZwEc"
},
"aud": "webservices@merchant.com"
}
Bevor Sie der Antwort vertrauen können, müssen Sie überprüfen, ob die zurückgegebene Signatur mit dem erwarteten Wert übereinstimmt. Ist dies nicht der Fall, kann sie von einem Unbefugten geändert worden sein.
Die Bibliothek, die Sie zuvor ausgewählt haben, um das JWT in Ihrem Zahlungsformular zu generieren und zu verifizieren, kann auch zur Verifizierung des zurückgegebenen JWT verwendet werden.
Die signature wird mit SHA-256 gehasht und kann daher nicht entschlüsselt werden. Dies bedeutet, dass zur Überprüfung der signature korrekt ist, muss sie unter Verwendung der header und payload zurückgegeben.
Die Bereitstellung der gleichen secret während dieses Prozesses verwendet wird, wird die neu berechnete signature sollte mit dem in der Antwort zurückgegebenen JWT übereinstimmen. Zusammengefasst:
- Base64URL dekodieren JWT header
- Base64URL dekodieren JWT payload
- Generieren Sie die Signatur neu, indem Sie die header, die payload und signieren sie mit dem secret.
Sobald dieser Prozess abgeschlossen ist, empfehlen wir, dass die errorcode Der in der Antwort zurückgegebene Wert ist "0", was den Erfolg anzeigt.
Da der Kunde einer Challenge-Authentifizierung unterzogen wurde, ist die Unterschrift des threedresponse wird ebenfalls in der Antwort zurückgegeben. Die threedresponse muss in der Anfrage AUTH enthalten sein. Nachstehend ein Beispiel für eine threedresponse:
eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1YzEyODg0NWMxMWI5MjIwZGMwNDZlOGUiLCJpYXQiOjE2MzMwOTg4NzcsImV4cCI6MTYzMzEwNjA3NywianRpIjoiNGQyMjA5NGMtZjY3Mi00YTRjLWIwMTktYjhjZDY2ZDM0MzBiIiwiQ29uc3VtZXJTZXNzaW9uSWQiOiIwXzU2OTgwMzA1LTk1ZmQtNDNmOC05NzRlLTQ0NmFhMGU4MjgzNCIsIlJlZmVyZW5jZUlkIjoiMjQtMmJhNzBjYTMxZDMyYzI0ZGU4OGEzNTE4ZjE0NTMzY2FlOGViMjhhZjRhNDVlODBiODQwNmZkNGE4MTRjZmI0YSIsImF1ZCI6IjI0LTJiYTcwY2EzMWQzMmMyNGRlODhhMzUxOGYxNDUzM2NhZThlYjI4YWY0YTQ1ZTgwYjg0MDZmZDRhODE0Y2ZiNGEiLCJQYXlsb2FkIjp7IlZhbGlkYXRlZCI6dHJ1ZSwiUGF5bWVudCI6eyJUeXBlIjoiQ0NBIiwiUHJvY2Vzc29yVHJhbnNhY3Rpb25JZCI6Ilp6eDhxYzQzUEJGQXZGVXdlNDcwIiwiRXh0ZW5kZWREYXRhIjp7IkFtb3VudCI6IjEwMDAiLCJDQVZWIjoiTVRJek5EVTJOemc1TURFeU16UTFOamM0T1RBXHUwMDNkIiwiQ3VycmVuY3lDb2RlIjoiODI2IiwiRUNJRmxhZyI6IjA1IiwiVGhyZWVEU1ZlcnNpb24iOiIyLjEuMCIsIlBBUmVzU3RhdHVzIjoiWSIsIlNpZ25hdHVyZVZlcmlmaWNhdGlvbiI6IlkifX0sIkFjdGlvbkNvZGUiOiJTVUNDRVNTIiwiRXJyb3JOdW1iZXIiOjAsIkVycm9yRGVzY3JpcHRpb24iOiJTdWNjZXNzIn19.A5t9bo59kFKehQIwjaqQ2UAAqEdVlBCbI2ZbEFvUz98
Versuchen Sie nicht, den threedresponse Wert zu dekodieren oder zu überprüfen, ob die zurückgegebene Signatur mit dem erwarteten Wert übereinstimmt. Trust Payments überprüft, dass die Daten nicht von einer unbefugten Partei geändert wurden, wenn der threedresponse Wert in einer AUTH Anfrage mit Webservices API übermittelt wird.
Senden Sie eine AUTH Anfrage mit Webservices API
Die Webservices API AUTH Anfrage muss so schnell wie möglich nach Abschluss der 3DS-Authentifizierung übermittelt werden. Wenn Sie die Webservices API AUTH Anfrage zu einem späteren Zeitpunkt übermitteln müssen (aufgeschoben Autorisierung), müssen Sie unsere 3DS API oder einen externen 3DS-Anbieter verwenden, um die 3DS-Authentifizierung durchzuführen.
Nachdem die EMV 3DS-Authentifizierung durchgeführt wurde, müssen Sie eine AUTH -Anfrage an Trust Payments über unsere Webservices API senden, um die Zahlung zu verarbeiten.
Falls Sie dies noch nicht getan haben, empfehlen wir Ihnen, unsere Dokumentation Erste Schritte zu lesen, um zu erfahren, wie Sie eine grundlegende Anfrage mit unserer Webservices API bearbeiten können.
Klicken Sie hier, um die Seite in einer neuen Registerkarte zu öffnen.
Wenn die JWT-Antwort 3DS enthält status N (was bedeutet, dass der Karteninhaber die Authentifizierung nicht erfolgreich abgeschlossen hat), sollten Sie die Anfrage Autorisierung nicht übermitteln. Wenn Sie die Anfrage Autorisierung übermitteln, erhalten Sie eine Fehlerantwort.
Sie müssen die nachstehende Schematabelle lesen und sicherstellen, dass die erforderlichen Felder in der Anfrage angegeben werden, wie im folgenden Beispiel gezeigt:
Autorisierung Feldspezifikation
Feld | Format | Beschreibung | |
parenttransactionreference XPath: /operation/parenttransactionreference |
Alphanumerisch (25) | Wert des THREEDQUERY transactionreference zurückgegeben in der jwt Antwort, die Sie oben überprüft haben. | |
threedresponse XPath: /operation/threedresponse |
Das Format dieses Wertes kann sich ändern. Wir empfehlen Ihnen, diesen Wert nicht zu validieren. |
Die threedresponse Feld wird zurückgegeben, wenn der Kunde während der 3-D Secure Authentifizierung herausgefordert wird und muss in der AUTH Anfrage übermittelt werden, wenn sie an Ihren Server zurückgegeben wird.
Trust Payments prüft die Signatur der threedresponse und analysiert die Anfrage, um festzustellen, ob der Karteninhaber erfolgreich am ACS seines Kartenausstellers authentifiziert wurde oder nicht. Die Nichtvorlage der threedresponse in der AUTH , wenn sie in der Authentifizierungsantwort zurückgegeben wird, kann dazu führen, dass die Haftungsverlagerung verwirkt wird. |
Code-Beispiel
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
auth = {
"sitereference": "test_site12345",
"requesttypedescriptions": ["AUTH"],
"orderreference": "My_Order_123",
"parenttransactionreference": "24-9-80061",
"threedresponse": "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1YzEyODg0NWMxMWI5MjIwZGMwNDZlOGUiLCJpYXQiOjE2MzMwOTg4NzcsImV4cCI6MTYzMzEwNjA3NywianRpIjoiNGQyMjA5NGMtZjY3Mi00YTRjLWIwMTktYjhjZDY2ZDM0MzBiIiwiQ29uc3VtZXJTZXNzaW9uSWQiOiIwXzU2OTgwMzA1LTk1ZmQtNDNmOC05NzRlLTQ0NmFhMGU4MjgzNCIsIlJlZmVyZW5jZUlkIjoiMjQtMmJhNzBjYTMxZDMyYzI0ZGU4OGEzNTE4ZjE0NTMzY2FlOGViMjhhZjRhNDVlODBiODQwNmZkNGE4MTRjZmI0YSIsImF1ZCI6IjI0LTJiYTcwY2EzMWQzMmMyNGRlODhhMzUxOGYxNDUzM2NhZThlYjI4YWY0YTQ1ZTgwYjg0MDZmZDRhODE0Y2ZiNGEiLCJQYXlsb2FkIjp7IlZhbGlkYXRlZCI6dHJ1ZSwiUGF5bWVudCI6eyJUeXBlIjoiQ0NBIiwiUHJvY2Vzc29yVHJhbnNhY3Rpb25JZCI6Ilp6eDhxYzQzUEJGQXZGVXdlNDcwIiwiRXh0ZW5kZWREYXRhIjp7IkFtb3VudCI6IjEwMDAiLCJDQVZWIjoiTVRJek5EVTJOemc1TURFeU16UTFOamM0T1RBXHUwMDNkIiwiQ3VycmVuY3lDb2RlIjoiODI2IiwiRUNJRmxhZyI6IjA1IiwiVGhyZWVEU1ZlcnNpb24iOiIyLjEuMCIsIlBBUmVzU3RhdHVzIjoiWSIsIlNpZ25hdHVyZVZlcmlmaWNhdGlvbiI6IlkifX0sIkFjdGlvbkNvZGUiOiJTVUNDRVNTIiwiRXJyb3JOdW1iZXIiOjAsIkVycm9yRGVzY3JpcHRpb24iOiJTdWNjZXNzIn19.A5t9bo59kFKehQIwjaqQ2UAAqEdVlBCbI2ZbEFvUz98"
}
strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php
if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);
$configData = array(
'username' => 'webservices@example.com',
'password' => 'Password1^',
);
$requestData = array(
'sitereference' => 'test_site12345',
'requesttypedescriptions' => array('AUTH'),
'orderreference' => 'My_Order_123',
'parenttransactionreference' => '24-9-80061',
'threedresponse' => 'eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1YzEyODg0NWMxMWI5MjIwZGMwNDZlOGUiLCJpYXQiOjE2MzMwOTg4NzcsImV4cCI6MTYzMzEwNjA3NywianRpIjoiNGQyMjA5NGMtZjY3Mi00YTRjLWIwMTktYjhjZDY2ZDM0MzBiIiwiQ29uc3VtZXJTZXNzaW9uSWQiOiIwXzU2OTgwMzA1LTk1ZmQtNDNmOC05NzRlLTQ0NmFhMGU4MjgzNCIsIlJlZmVyZW5jZUlkIjoiMjQtMmJhNzBjYTMxZDMyYzI0ZGU4OGEzNTE4ZjE0NTMzY2FlOGViMjhhZjRhNDVlODBiODQwNmZkNGE4MTRjZmI0YSIsImF1ZCI6IjI0LTJiYTcwY2EzMWQzMmMyNGRlODhhMzUxOGYxNDUzM2NhZThlYjI4YWY0YTQ1ZTgwYjg0MDZmZDRhODE0Y2ZiNGEiLCJQYXlsb2FkIjp7IlZhbGlkYXRlZCI6dHJ1ZSwiUGF5bWVudCI6eyJUeXBlIjoiQ0NBIiwiUHJvY2Vzc29yVHJhbnNhY3Rpb25JZCI6Ilp6eDhxYzQzUEJGQXZGVXdlNDcwIiwiRXh0ZW5kZWREYXRhIjp7IkFtb3VudCI6IjEwMDAiLCJDQVZWIjoiTVRJek5EVTJOemc1TURFeU16UTFOamM0T1RBXHUwMDNkIiwiQ3VycmVuY3lDb2RlIjoiODI2IiwiRUNJRmxhZyI6IjA1IiwiVGhyZWVEU1ZlcnNpb24iOiIyLjEuMCIsIlBBUmVzU3RhdHVzIjoiWSIsIlNpZ25hdHVyZVZlcmlmaWNhdGlvbiI6IlkifX0sIkFjdGlvbkNvZGUiOiJTVUNDRVNTIiwiRXJyb3JOdW1iZXIiOjAsIkVycm9yRGVzY3JpcHRpb24iOiJTdWNjZXNzIn19.A5t9bo59kFKehQIwjaqQ2UAAqEdVlBCbI2ZbEFvUz98'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ https://webservices.securetrading.net/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias":"webservices@example.com",
"version": "1.00",
"request": [{
"requesttypedescriptions": ["AUTH"],
"sitereference": "test_site12345",
"orderreference": "My_Order_123",
"parenttransactionreference": "24-9-80061",
"threedresponse": "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1YzEyODg0NWMxMWI5MjIwZGMwNDZlOGUiLCJpYXQiOjE2MzMwOTg4NzcsImV4cCI6MTYzMzEwNjA3NywianRpIjoiNGQyMjA5NGMtZjY3Mi00YTRjLWIwMTktYjhjZDY2ZDM0MzBiIiwiQ29uc3VtZXJTZXNzaW9uSWQiOiIwXzU2OTgwMzA1LTk1ZmQtNDNmOC05NzRlLTQ0NmFhMGU4MjgzNCIsIlJlZmVyZW5jZUlkIjoiMjQtMmJhNzBjYTMxZDMyYzI0ZGU4OGEzNTE4ZjE0NTMzY2FlOGViMjhhZjRhNDVlODBiODQwNmZkNGE4MTRjZmI0YSIsImF1ZCI6IjI0LTJiYTcwY2EzMWQzMmMyNGRlODhhMzUxOGYxNDUzM2NhZThlYjI4YWY0YTQ1ZTgwYjg0MDZmZDRhODE0Y2ZiNGEiLCJQYXlsb2FkIjp7IlZhbGlkYXRlZCI6dHJ1ZSwiUGF5bWVudCI6eyJUeXBlIjoiQ0NBIiwiUHJvY2Vzc29yVHJhbnNhY3Rpb25JZCI6Ilp6eDhxYzQzUEJGQXZGVXdlNDcwIiwiRXh0ZW5kZWREYXRhIjp7IkFtb3VudCI6IjEwMDAiLCJDQVZWIjoiTVRJek5EVTJOemc1TURFeU16UTFOamM0T1RBXHUwMDNkIiwiQ3VycmVuY3lDb2RlIjoiODI2IiwiRUNJRmxhZyI6IjA1IiwiVGhyZWVEU1ZlcnNpb24iOiIyLjEuMCIsIlBBUmVzU3RhdHVzIjoiWSIsIlNpZ25hdHVyZVZlcmlmaWNhdGlvbiI6IlkifX0sIkFjdGlvbkNvZGUiOiJTVUNDRVNTIiwiRXJyb3JOdW1iZXIiOjAsIkVycm9yRGVzY3JpcHRpb24iOiJTdWNjZXNzIn19.A5t9bo59kFKehQIwjaqQ2UAAqEdVlBCbI2ZbEFvUz98"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescriptions":["AUTH"],
"sitereference":"test_site12345",
"orderreference":"My_Order_123",
"parenttransactionreference":"24-9-80061",
"threedresponse":"eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1YzEyODg0NWMxMWI5MjIwZGMwNDZlOGUiLCJpYXQiOjE2MzMwOTg4NzcsImV4cCI6MTYzMzEwNjA3NywianRpIjoiNGQyMjA5NGMtZjY3Mi00YTRjLWIwMTktYjhjZDY2ZDM0MzBiIiwiQ29uc3VtZXJTZXNzaW9uSWQiOiIwXzU2OTgwMzA1LTk1ZmQtNDNmOC05NzRlLTQ0NmFhMGU4MjgzNCIsIlJlZmVyZW5jZUlkIjoiMjQtMmJhNzBjYTMxZDMyYzI0ZGU4OGEzNTE4ZjE0NTMzY2FlOGViMjhhZjRhNDVlODBiODQwNmZkNGE4MTRjZmI0YSIsImF1ZCI6IjI0LTJiYTcwY2EzMWQzMmMyNGRlODhhMzUxOGYxNDUzM2NhZThlYjI4YWY0YTQ1ZTgwYjg0MDZmZDRhODE0Y2ZiNGEiLCJQYXlsb2FkIjp7IlZhbGlkYXRlZCI6dHJ1ZSwiUGF5bWVudCI6eyJUeXBlIjoiQ0NBIiwiUHJvY2Vzc29yVHJhbnNhY3Rpb25JZCI6Ilp6eDhxYzQzUEJGQXZGVXdlNDcwIiwiRXh0ZW5kZWREYXRhIjp7IkFtb3VudCI6IjEwMDAiLCJDQVZWIjoiTVRJek5EVTJOemc1TURFeU16UTFOamM0T1RBXHUwMDNkIiwiQ3VycmVuY3lDb2RlIjoiODI2IiwiRUNJRmxhZyI6IjA1IiwiVGhyZWVEU1ZlcnNpb24iOiIyLjEuMCIsIlBBUmVzU3RhdHVzIjoiWSIsIlNpZ25hdHVyZVZlcmlmaWNhdGlvbiI6IlkifX0sIkFjdGlvbkNvZGUiOiJTVUNDRVNTIiwiRXJyb3JOdW1iZXIiOjAsIkVycm9yRGVzY3JpcHRpb24iOiJTdWNjZXNzIn19.A5t9bo59kFKehQIwjaqQ2UAAqEdVlBCbI2ZbEFvUz98"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="AUTH">
<merchant>
<orderreference>My_Order_123</orderreference>
</merchant>
<operation>
<sitereference>test_site12345</sitereference>
<parenttransactionreference>24-9-80061</parenttransactionreference>
<threedresponse>eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI1YzEyODg0NWMxMWI5MjIwZGMwNDZlOGUiLCJpYXQiOjE2MzMwOTg4NzcsImV4cCI6MTYzMzEwNjA3NywianRpIjoiNGQyMjA5NGMtZjY3Mi00YTRjLWIwMTktYjhjZDY2ZDM0MzBiIiwiQ29uc3VtZXJTZXNzaW9uSWQiOiIwXzU2OTgwMzA1LTk1ZmQtNDNmOC05NzRlLTQ0NmFhMGU4MjgzNCIsIlJlZmVyZW5jZUlkIjoiMjQtMmJhNzBjYTMxZDMyYzI0ZGU4OGEzNTE4ZjE0NTMzY2FlOGViMjhhZjRhNDVlODBiODQwNmZkNGE4MTRjZmI0YSIsImF1ZCI6IjI0LTJiYTcwY2EzMWQzMmMyNGRlODhhMzUxOGYxNDUzM2NhZThlYjI4YWY0YTQ1ZTgwYjg0MDZmZDRhODE0Y2ZiNGEiLCJQYXlsb2FkIjp7IlZhbGlkYXRlZCI6dHJ1ZSwiUGF5bWVudCI6eyJUeXBlIjoiQ0NBIiwiUHJvY2Vzc29yVHJhbnNhY3Rpb25JZCI6Ilp6eDhxYzQzUEJGQXZGVXdlNDcwIiwiRXh0ZW5kZWREYXRhIjp7IkFtb3VudCI6IjEwMDAiLCJDQVZWIjoiTVRJek5EVTJOemc1TURFeU16UTFOamM0T1RBXHUwMDNkIiwiQ3VycmVuY3lDb2RlIjoiODI2IiwiRUNJRmxhZyI6IjA1IiwiVGhyZWVEU1ZlcnNpb24iOiIyLjEuMCIsIlBBUmVzU3RhdHVzIjoiWSIsIlNpZ25hdHVyZVZlcmlmaWNhdGlvbiI6IlkifX0sIkFjdGlvbkNvZGUiOiJTVUNDRVNTIiwiRXJyb3JOdW1iZXIiOjAsIkVycm9yRGVzY3JpcHRpb24iOiJTdWNjZXNzIn19.A5t9bo59kFKehQIwjaqQ2UAAqEdVlBCbI2ZbEFvUz98</threedresponse>
</operation>
</request>
</requestblock>
Bearbeiten Sie die Antwort Autorisierung
Schließlich erhält Ihr Server eine Antwort von Autorisierung .
{
"requestreference":"W23-n68rw97k",
"version":"1.00",
"response":[{
"accounttypedescription":"ECOM",
"acquirerresponsecode":"00",
"authcode":"TEST",
"baseamount":"1050",
"cavv":"Q0FWVkNBVlZDQVZWQ0FWVkNBVlY=",
"currencyiso3a":"GBP",
"dccenabled":"0",
"eci":"05",
"enrolled":"Y",
"errorcode":"0",
"errormessage":"Ok",
"issuer":"Test Issuer",
"issuercountryiso2a":"US",
"livestatus":"0",
"maskedpan":"400000######1091",
"merchantcountryiso2a":"GB",
"merchantname":"Test Merchant",
"merchantnumber":"00000000",
"operatorname":"webservices@example.com",
"parenttransactionreference":"24-9-80061",
"paymenttypedescription":"VISA",
"requesttypedescription":"AUTH",
"securityresponseaddress":"0",
"securityresponsepostcode":"2",
"securityresponsesecuritycode":"2",
"settleduedate":"2021-10-01",
"settlestatus":"0",
"status":"Y",
"tid":"00000000",
"transactionreference":"24-9-80061",
"transactionstartedtimestamp":"2021-10-01 14:34:35",
"xid":"NmVxNGtsTDBkSVJzcmwrSnEyMFc="
}],
"secrand":"bsZP"
}