3DS2 - Authentification Challenge, avec 3DS Method
Pour tester ce scénario, utilisez un des numéros de carte ci-dessous :
Carte | Date de validité | Marque |
---|---|---|
4970110000001003 | Au choix | VISA |
5100010000000106 | Au choix | MASTERCARD |
375900000010015 | Au choix | AMEX |
Cinématique des échanges
- Appel initial au service PCI/Charge/Authenticate avec une carte enrôlée 3DS2.
{ "amount":"9990", "currency":"XPF", "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"22", "networkPreference":"VISA", "pan":"4970110000001003" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" } }
- Retour avec une instruction FINGERPRINT (3DS Method).
{ "webService":"PCI/Charge/Authenticate", "version":"V4", "applicationVersion":"5.23.0", "serverDate":"2021-05-04T13:14:07+00:00", "ticket":"bbea766294a84618a2a4b0d167cff9b3", "applicationProvider":"", "metadata":null, "status":"SUCCESS", "mode":"TEST", "serverUrl":"https://api.secure.osb.pf", "_type":"V4/WebService/Response", "answer":{ "id":"4ceb0194-8900-41c6-8ef4-debdbe7421b1", "protocol":{ "name":"THREEDS", "version":"2.1.0", "network":"VISA", "challengePreference":"NO_PREFERENCE", "simulation":true, "_type":"V4/Charge/Authenticate/Protocol" }, "value":{ "instructionType":"FORM", "name":"FINGERPRINT", "timeout":10, "target":{ "element":"IFRAME", "visible":false, "_type":"V4/Charge/Authenticate/InstructionTarget" }, "http":{ "method":"POST", "url":"<https://acs.sg.com/acs/v2/3dsMethod>", "body":{ "threeDSMethodData":"eyJ0aHJlZURzTW..." }, "_type":"V4/Charge/Authenticate/HttpRequest" }, "_type":"V4/Charge/Authenticate/AuthenticationInstruction" }, "_type":"V4/AuthenticationResponseData" } }
- Redirection vers l’ACS dans l’iFrame invisible, chargement et exécution du code JavaScript de fingerprint de l’ACS.
Les caractéristiques de l'iFrame sont données dans l'objet
answer.value.target
.Le formulaire à afficher dans l'iFrame est décrit dans l'objet
answer.value.http
. - Retour via le navigateur avec un résultat d’instruction.
{ "eventName":"LYRA_AUTH_INSTRUCTION_RESULT", "value":{ "name":"FINGERPRINT", "value":"eyJjZXJ0aWZpY2F0Z...", "protocol":{ "name":"THREEDS", "version":"2.1.0", "network":"VISA", "challengePreference":"NO_PREFERENCE", "simulation":true } } }
- Nouvel appel au service PCI/Charge/Authenticate en transmettant ce résultat.
{ "amount": "9990", "currency": "XPF", "transactionCategory": "PAYMENT", "productType": "GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid": "9876357" }, "paymentForm": { "expiryMonth": "09", "expiryYear": "22", "networkPreference": "VISA", "pan": "4970110000001003" }, "device": { "acceptHeader": "text/html", "colorDepth": "32", "deviceType": "BROWSER", "ip": "69.89.31.226", "javaEnabled": true, "language": "FR", "screenHeight": "768", "screenWidth": "1258", "timeZoneOffset": "-120", "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name": "THREEDS", "version": "2", "challengePreference": "NO_PREFERENCE" }, "id":"4ceb0194-8900-41c6-8ef4-debdbe7421b1", "instructionResult": { "name" : "FINGERPRINT", "protocol" : { "name" : "THREEDS", "network": "VISA", "version" : "2.1.0", "challengePreference": "NO_PREFERENCE", "simulation": 1 }, "value":"eyJjZXJ0aWZpY2F0Z..." } }
- Retour avec une instruction CHALLENGE de redirection vers l’ACS avec un CReq (iFrame visible).
{ "webService":"PCI/Charge/Authenticate", "version":"V4", "applicationVersion":"5.23.0", "serverDate":"2021-05-04T13:14:09+00:00", "ticket":"bbea766294a84618a2a4b0d167cff9b3", "applicationProvider":"", "metadata":null, "status":"SUCCESS", "mode":"TEST", "serverUrl":"https://api.secure.osb.pf", "_type":"V4/WebService/Response", "answer":{ "id":"4ceb0194-8900-41c6-8ef4-debdbe7421b1", "protocol":{ "name":"THREEDS", "version":"2.1.0", "network":"VISA", "challengePreference":"NO_PREFERENCE", "simulation":true, "_type":"V4/Charge/Authenticate/Protocol" }, "value":{ "instructionType":"FORM", "name":"CHALLENGE", "timeout":600, "target":{ "element":"IFRAME", "visible":true, "width":500, "height":600, "_type":"V4/Charge/Authenticate/InstructionTarget" }, "http":{ "method":"POST", "url":"<https://acs.sg.com/acs/v2/creq>", "body":{ "creq":"eyJ0aHJlZURTU2V...", "threeDSSessionData":"H4sIAAAAAAAAAC2..." }, "_type":"V4/Charge/Authenticate/HttpRequest" }, "_type":"V4/Charge/Authenticate/AuthenticationInstruction" }, "_type":"V4/AuthenticationResponseData" } }
- Redirection vers l’ACS dans l’iFrame pour l'authentification du porteur.
Les caractéristiques de l'iFrame sont données dans l'objet
answer.value.target
.Le formulaire à afficher dans l'iFrame est décrit dans l'objet
answer.value.http
. - Retour via le navigateur avec un résultat d’instruction.
{ "eventName":"LYRA_AUTH_INSTRUCTION_RESULT", "value":{ "name":"CHALLENGE", "value":"eyJjZXJ0aWZpY2F0Z...", "protocol":{ "name":"THREEDS", "version":"2.1.0", "network":"VISA", "challengePreference":"NO_PREFERENCE", "simulation":true } } }
- Nouvel appel au service PCI/Charge/Authenticate en transmettant ce résultat.
{ "amount":"9990", "currency":"XPF", "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"22", "networkPreference":"VISA", "pan":"4970110000001003" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" }, "id":"4ceb0194-8900-41c6-8ef4-debdbe7421b1", "instructionResult": { "name" : "CHALLENGE", "protocol" : { "name" : "THREEDS", "network":"VISA", "version" : "2.1.0", "challengePreference":"NO_PREFERENCE", "simulation": 1 }, "value":"eyJjZXJ0aWZpY2F0Z..." } }
- Retour du serveur de la plateforme de paiement avec le résultat final d’authentification.
Authentification réussie
{ "webService":"PCI/Charge/Authenticate", "version":"V4", "applicationVersion":"5.23.0", "serverDate":"2021-05-04T13:16:21+00:00", "ticket":"bbea766294a84618a2a4b0d167cff9b3", "applicationProvider":"", "metadata":null, "status":"SUCCESS", "mode":"TEST", "serverUrl":"https://api.secure.osb.pf", "_type":"V4/WebService/Response", "answer":{ "id":"4ceb0194-8900-41c6-8ef4-debdbe7421b1", "protocol":{ "name":"THREEDS", "version":"2.1.0", "network":"VISA", "challengePreference":"NO_PREFERENCE", "simulation":true, "_type":"V4/Charge/Authenticate/Protocol" }, "value":{ "authenticationType":"CHALLENGE", "authenticationId":{ "authenticationIdType":"dsTransId", "value":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "_type":"V4/Charge/Authenticate/AuthenticationId" }, "authenticationValue":{ "authenticationValueType":"CAVV", "value":"PdY1V9f/aHxC2wbZt4/7Z6Q9f44=", "_type":"V4/Charge/Authenticate/AuthenticationValue" }, "status":"SUCCESS", "commerceIndicator":"05", "extension":{ "authenticationType":"THREEDS_V2", "threeDSServerTransID":"3b25e3ed-5d48-4f99-af61-0d5db9e3b18e", "dsTransID":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "acsTransID":"410d9fb4-8db1-483e-9a80-f94c3a79017e", "_type":"V4/Charge/Authenticate/AuthenticationResultExtensionThreedsV2" }, "reason":{ "_type":"V4/Charge/Authenticate/AuthenticationResultReason" }, "_type":"V4/Charge/Authenticate/AuthenticationResult" }, "_type":"V4/AuthenticationResponseData" } }
Authentification en échec
{ "webService":"PCI/Charge/Authenticate", "version":"V4", "applicationVersion":"5.23.0", "serverDate":"2021-05-04T13:16:21+00:00", "ticket":"bbea766294a84618a2a4b0d167cff9b3", "applicationProvider":"", "metadata":null, "status":"SUCCESS", "mode":"TEST", "serverUrl":"https://api.secure.osb.pf", "_type":"V4/WebService/Response", "answer":{ "id":"4ceb0194-8900-41c6-8ef4-debdbe7421b1", "protocol":{ "name":"THREEDS", "version":"2.1.0", "network":"VISA", "challengePreference":"NO_PREFERENCE", "simulation":true, "_type":"V4/Charge/Authenticate/Protocol" }, "value":{ "authenticationType":"CHALLENGE", "authenticationId":{ "authenticationIdType":"dsTransId", "value":"e8286d62-006e-413e-ad3b-328503b14e71", "_type":"V4/Charge/Authenticate/AuthenticationId" }, "status":"FAILED", "extension":{ "authenticationType":"THREEDS_V2", "threeDSServerTransID":"fdce5a18-2f2f-46c7-bdd4-3bd40b7e816d", "dsTransID":"e8286d62-006e-413e-ad3b-328503b14e71", "acsTransID":"54feb2ac-9666-4ce3-86e5-d8f947cebd87", "transStatusReason":"01", "_type":"V4/Charge/Authenticate/AuthenticationResultExtensionThreedsV2" }, "reason":{ "code":"CARD_AUTHENTICATION_FAILED", "_type":"V4/Charge/Authenticate/AuthenticationResultReason" }, "_type":"V4/Charge/Authenticate/AuthenticationResult" }, "_type":"V4/AuthenticationResponseData" } }