3D Secure (3DS) ist eine Authentifizierungsmethode, die zusätzlichen Schutz vor Betrug bei Online-Kartenzahlungen bietet.Wenn Sie Zahlungen innerhalb des Europäischen Wirtschaftsraums akzeptieren, ist die Authentifizierung der Transaktionen mit 3D Secure zwingend erforderlich, um die Anforderungen der PSD2 SCA (Strong Customer Authentication) zu erfüllen.
3D Secure Integrationsoptionen
ermöglicht die 3DS-Authentifizierung für alle Integrationsarten:Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
Hosted Payment Page oder gehostete Formulare
Wenn Sie die Hosted Payment Page oder gehostete Formulare des
nutzen, sind für die Implementierung von 3DS keine weiteren Schritte erforderlich. Das Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
übernimmt den gesamten Authentifizierungsprozess automatisch für Sie und stellt die Einhaltung der PSD2-SCA-Anforderungen sicher.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
Direkte Integration
Für Händler, die die direkte Integration verwenden, hängt die Implementierung von 3DS davon ab, wie Sie den Authentifizierungsprozess handhaben:
Vom Händler verwaltete 3DS-Authentifizierung
Wenn Sie den 3DS-Authentifizierungsprozess unabhängig verwalten, bevor Sie die Zahlungsanforderung an
senden, stellen Sie sicher, dass alle relevanten Authentifizierungsdaten im Objekt Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Partner-Name PageWithExcerpt Wording paymentMethods.card.threedsdata innerhalb der Zahlungsanfrage enthalten sind.
| Code Block |
|---|
{
"acsProtocolVersion": "2.2.0",
"authenticationValue": "AAABBIcWERFgUFgUQklFQRE=",
"eci": "02",
"threeDSServerTransID": "55570cf-bt5b-43fe-bd0d-2trr3427401c",
"acsXID": "34565040-e95d-4f55-9aa1-d48d1234acd4",
"dsTransID": "4347f607-d631-4ad5-34564533cadce558",
"intermediateStatus": "Y",
"finalStatus": "Y",
"challengeRequestInd": "01"
} |
Vom Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
verwaltete 3DS-Authentifizierung
| SpaceWithExcerpt | DE |
|---|---|
| MultiExcerptName | Platform-Name |
| PageWithExcerpt | Wording |
Dieser Abschnitt beschreibt den Prozessablauf für Händler, die den 3DS-Authentifizierungsprozess von
durchführen lassen möchten.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Partner-Name PageWithExcerpt Wording
Prozessablauf
Multiexcerpt include SpaceWithExcerpt EN MultiExcerptName 3DSecure_Payment_flow PageWithExcerpt EN:REST API 3D Secure
1. Der Kunde geht mit Kartenzahlung als bevorzugter Zahlungsmethode in Ihrem Webshop zur Kasse und übermittelt alle Kartendaten.
2. Ihr Frontend stellt eine Zahlungsanforderung an Ihr Backend.
3. Ihr Backend machte einen Aufruf Zahlung anlegen an das
.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
Versionierung:
4. Das
sendet eine Versionierungsanfrage an den 3DS-Server, um die Protokollversionen des Access Control Servers (ACS) und des Directory Servers (DS) abzurufen, die dem Kartenkontobereich entsprechen, sowie optional eine URL der 3D-Secure-Methode.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
5. Das
erhält die Versionierungsantwort mit den ACS- und DS-Protokollversionen.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
6. Das
antwortet mit einem HTTP 201-Antwortcode an Ihr Backend mit Versionsdaten in Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording paymentMethods.card.versioningData
| Code Block |
|---|
{
"threeDSServerTransID": "f049e8fb-5d93-1234-b995-3eaf05cef06a",
"acsStartProtocolVersion": "2.2.0",
"acsEndProtocolVersion": "2.2.0",
"dsStartProtocolVersion": "2.2.0",
"dsEndProtocolVersion": "2.2.0",
"threeDSMethodURL": "https://testacsserver.com/3ds-method",
"threeDSMethodDataForm": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly93d3cuY29tcHV0b3AtcGF5Z2F0ZS5jb20vY2JUaHJlZURTLmFzcHg_YWN0aW9uPW10aGROdGZuIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJmMDQ5ZThmYi01ZDkzLTQ2MTAtYjk5NS0zZWFmMDVjZWYwNmEifQ",
"threeDSMethodData": {
"threeDSMethodNotificationURL": "https://www.computop-paygate.com/cbThreeDS.aspx?action=mthdNtfn",
"threeDSServerTransID": "f049e8fb-5d93-4610-b995-3eaf05cef06a"
}
} |
Die Gründe für fehlende Parameter in versioningData finden Sie im Objekt paymentMethods.card.versioningData.errorDetails.
3DS-Methode: Die 3DS-Methode ist ein optionaler Schritt im 3DS-Authentifizierungsablauf. Sie ermöglicht es dem ACS des Kartenausstellers, zusätzliche Browser-/Geräteinformationen zu erfassen, bevor die eigentliche Authentifizierungsanfrage (AReq) gesendet wird.Diese Daten ermöglichen dem ACS eine genauere Risikobewertung der Transaktion.
7. Basierend auf der erhaltenen Versionierungsantwort sollte der Prozess 3DS-Methode aufgerufen werden. Dazu muss Ihr Backend Ihrem Frontend die aus der Versionierungsantwort erhaltenen threeDSMethodData und threeDSMethodURL bereitstellen. Ihr Frontend sollte einen versteckten Iframe mit einem Formular mit einem versteckten Eingabefeld für threeDSMethodData erstellen und an threeDSMethodURL übermitteln. Die threeDSMethodData sollten Base64-kodiert gesendet werden und können direkt aus threeDSMethodDataForm in der Versionierungsantwort abgerufen werden. Nachfolgend sehen Sie ein Beispiel für die Implementierung:
| Code Block |
|---|
<form name="threeDSMethodForm" method="POST" action="https://testacsserver.com/3ds-method"> <input type="hidden" name="threeDSMethodData" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjNhYzdjYWE3LWFhNDItMjY2My03OTFiLTJhYzA1YTU0MmM0YSIsInRocmVlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIn0"> </form> |
Wenn der Issuer den Prozess 3DS-Methode nicht untestützt, füllt das Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording threeDSMethodURL aus, damit der Prozess 3DS-Methode zum Senden des versteckten Formulars trotzdem durchgeführt werden kann. Dies ist notwendig, um die direkte Kommunikation zwischen dem Browser und
im 3DS-Prozessablauf zu ermöglichen.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
| Info |
|---|
Sie können nach eigenem Ermessen die Operationen init3DSMethod oder createIframeAndInit3DSMethod aus dem netcetra3DSWebSDK verwenden, um die 3-D Secure-Methode zu initiieren. |
8. Ihr Frontend sendet das versteckte Formular an die ACS 3DS Method URL, die es ACS ermöglicht, alle erforderlichen Informationen zu erfassen.
9. ACS antwortet auf die Anfrage 3DS-Methode mit einen HTML-Dokument.
10. Das HTML-Dokument enthält JavaScript, das automatisch ein verstecktes Formular mit den threeDSMethodData erzeugt und an die threeDSMethodNotificationURL sendet, die vom
gehostet wird.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
Authentifizierung:
11. Nach Erhalte der 3DS-Abschlussbenachrichtigung sendet das
eine Authentifizierungsanfrage an den 3DS-Server.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
12. Der 3DS-Server sendet eine Authentifizierungsanforderung an den Directory-Server.
13. Der Directory-Server sendet eine Authentifizierungsanforderung an ACS
14. ACS sendet eine Authentifizierungsantwort an den Directory-Server zurück
15. Der Directory-Server leitet die Antwort an den 3DS-Server weiter
16. Der 3DS-Server leitet die Antwort an das
weiter. Falls die Authentifizierungsantwort keine Challenge erfordert, springt der Prozess zu Schritt 29, andernfalls beginnt der nachfolgende Challenge-Prozess.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
17.
sendet eine Benachchtigung mit der Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording payId im Text an to urls.webhook, den Sie in der ursprünglichen Anfrage übermittel haben (Schritt 3). Sie können Zahlungsdetails abfragen with payId aufrufen, um alle Daten der Authentisierungs-Antwort abzurufen.
18.
sendet zusätzlich die Authentifizierungsantwort (base64-kodiert) als Antwort auf die Benachrichtigungsanfrage zum 3DS-Methodenabschluss (Schritt 10) an den Browser. Unten sehen Sie einen Der iframe verwendet window.postMessage(), um die Base64-kodierte JSON-Nutzlast an die übergeordnete Seite zu senden. Nachfolgend ein Ausschnitt der dekodierten Authentifizierungsantwort, die an den Browser gesendet wurde. .Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
ChallengeWindowSize wird anhand der in browserInfo bereitgestellten Viewport-Abmessungen berechnet. Wenn der Händler kleinere Abmessungen angibt, werden diese an das ACS übermittelt. Obwohl die meisten ACS für ihre SCA/OTP-Ansichten ein responsives Design verwenden, gibt es keine Garantie dafür, dass jede Größe funktioniert oder optisch ansprechend dargestellt wird.
| Code Block |
|---|
{
"threeDSServerTransID": "f049e8fb-5d93-1234-b995-3eaf05cef06a",
"acsChallengeMandated": true,
"acsDecConInd": false,
"acsOperatorID": "10024942",
"acsReferenceNumber": "3DS_LOA_ACS_HIIN_020200_00553",
"acsTransID": "70283ff7-df85-44be-b157-3bc6f8a31b89",
"acsURL": "https://testacsserver.com/3ds-method",
"dsReferenceNumber": "VISA.V 17 0003",
"dsTransID": "2f15b09e-b915-4d5e-9f04-239ed985f3bb",
"messageType": "ARes",
"messageVersion": "2.2.0",
"transStatus": "C",
"challengeRequest": {
"threeDSServerTransID": "f049e8fb-5d93-1234-b995-3eaf05cef06a",
"acsTransID": "70283ff7-df85-44be-b157-3bc6f8a31b89",
"challengeWindowSize": "04",
"messageVersion": "2.2.0",
"messageType": "CReq"
},
"base64EncodedChallengeRequest": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImYwNDllOGZiLTVkOTMtNDYxMC1iOTk1LTNlYWYwNWNlZjA2YSIsImFjc1RyYW5zSUQiOiI3MDI4M2ZmNy1kZjg1LTQ0YmUtYjE1Ny0zYmM2ZjhhMzFiODkiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDQiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIn0"
} |
Challenge:
19. Basierend auf der erhaltenen Authentifizierungsantwort sollte Ihr Frontend eine Challenge-Anfrage erzeugen. Dazu dekodieren Sie die Authenfizierungsantwort und erfassen die in base64EncodedChallengeRequest und acsURL vorhandenen Werte. Senden Sie base64EncodedChallengeRequest über einen versteckten HTML- Iframe , der ein Formular mit verstecktem Eingabefeld enthält, an acsURLder Größe x (entweder challengeWindowSize oder go 05; 100%*100%). Nachfolgend sehen Sie ein Beispiel für die Implementierung:
| Code Block |
|---|
<form name="challengeRequestForm" method="POST" action="https://testacsserver.com/3ds-method"> <input type="hidden" name="creq" value="eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImYwNDllOGZiLTVkOTMtNDYxMC1iOTk1LTNlYWYwNWNlZjA2YSIsImFjc1RyYW5zSUQiOiI3MDI4M2ZmNy1kZjg1LTQ0YmUtYjE1Ny0zYmM2ZjhhMzFiODkiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDQiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIn0"> </form> |
| Info |
|---|
Sie können nach eigenem Ermessen die Operationen |
20. ACS rendert das Challenge-Fenster im Browser.
21. Der Kunde absolviert die Challenge.
22. ACS benachrichtigt den Directory-Server über das Ergebnis der Challenge mittels Ergebnisanforderungsnachricht (RReq).
23. Der Directory-Server leitet die RReq an den 3DS-Server weiter.
24. Der 3DS-Server leitet das Challenge-Ergebnis an das
weiter.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
25. Der 3DS-Server bestätigt RReq mit einer Ergebnisantwort (RRes) an den Directory-Server.
26. Der Directory-Server leitet RRes an ACS weiter.
27. ACS stellt dem Browser zusätzlich die Challenge-Antwort als Antwort auf „Challenge senden“ (Schritt 21) zur Verfügung.Ihr Frontend sollte die an das Iframe zurückgegebene Challenge-Antwort abhören.
28. Sobald die Challenge-Antwort eingegangen ist, sendet Ihr Frontend eine Challenge-Antwort-Benachrichtigungsanforderung an das
. Nachstehend sehen Sie das dekodierte JSON-Beispiel: Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
| Code Block |
|---|
{
"messageType": "CRes",
"messageVersion": "2.2.0",
"threeDSServerTransID": "f049e8fb-5d93-1234-b995-3eaf05cef06a",
"acsTransID": "70283ff7-df85-44be-b157-3bc6f8a31b89",
"challengeCompletionInd": "Y",
"transStatus": "Y"
} |
Autorisierung:
29.
führt die Autorisierung beim Acquirer durch.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
30. Der Acquirer übermittelt die Autorisierungsantwort an
.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
31.
sendet eine Benachrichtigung mit Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording payId im Nachrichtentext an urls.webhook, den Sie ursprünglich übermittelt haben (Schritt 3). Sie können Zahlungsdetails abfragen mit payId aufrufen, um alle Daten der Autorisierungsantwort zu erhalten.
32.
antwortet dem Browser zusätzlich mit der Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording payId im Nachrichtentext als Antwort auf Schritt 28. Der Iframe verwendet window.postMessage(), um das zu senden.
33. Ihr Frontend ruft die Rücksprung-URL Ihres Shops mit payId von Ihrem Backend auf.
34. Ihr Backend führt Zahlungsdetails abfragen mit payId am
aus, um den endgültigen responseCode der Transaktion abzurufen.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
35.
antwortet mit dem responseCode der Transaktion.Multiexcerpt include SpaceWithExcerpt DE MultiExcerptName Platform-Name PageWithExcerpt Wording
36. Ihr Backend rendert je nach responseCode der Transaktion eine Erfolgs- oder Fehlerseite.