Implementarea integrării 3DS cu ajutorul API de autentificare

Acest ghid prezintă toți pașii care sunt necesari pentru a adăuga 3DS la integrarea gateway folosind API de autentificare, inclusiv cum să utilizați rezultatul autentificării pentru a procesa o plată.

Pasul 1: Inițierea autentificării

Operațiunea Initiate Authentication este utilizată pentru a determina versiunile 3DS disponibile pentru dvs. în cazul unui anumit card, care pot depinde de următoarele:

  • versiunile 3DS configurate în profilul dvs. de comerciant; de exemplu, 3DS1 sau 3DS2;
  • tipul cardului
  • preferințele indicate în solicitare
  • rezultatul solicitărilor trimise de gateway către furnizorii de autentificare relevanți pentru a verifica disponibilitatea/compatibilitatea cardului respectiv
  • regulile de filtrare 3DS a tranzacțiilor de pe gateway, configurate de către dvs. sau furnizorul dvs. de servicii de plată.

Operațiunea permite, de asemenea, efectuarea oricăror activități în fundal (de ex., un apel de metodă ACS) cu scopul colectării de date suplimentare privitoare la plătitor, pentru a permite o operațiune Authenticate Payer ulterioară.

Solicitarea Initiate Authentication

Puteți iniția autentificarea completând următoarele câmpuri în solicitarea Initiate Authentication:

Parametru Existență Descriere
session.id sau sourceOfFunds.provided.card.* sau sourceOfFunds.token Obligatoriu Detaliile cardului utilizat pentru plată.
Rețineți că puteți utiliza și simboluri din rețea și simboluri de plată pentru dispozitive ca sursă de fonduri în autentificarea plătitorului. Pentru mai multe informații, consultați întrebările frecvente.
order.currency Obligatoriu Moneda comenzii.
transaction.id Obligatoriu Un identificator unic pentru autentificarea plății.
order.id Obligatoriu Identificatorul unic al comenzii.
authentication.channel Obligatoriu Canalul pe care este inițiată solicitarea de autentificare. Puteți specifica unul dintre următoarele elemente:
  • MERCHANT_REQUESTED: Dacă solicitați autentificarea unui posesor de card fără ca plătitorul să fie disponibil pentru interacțiune (de exemplu, în cadrul procesării unei plăți periodice). În prezent, această opțiune nu este acceptată.
  • PAYER_BROWSER: Dacă plătitorul interacționează prin intermediul unui browser web (de exemplu, cu site-ul web de comerț electronic al comerciantului).
authentication.purpose Opțional Acest câmp este setat implicit la „PAYMENT_TRANSACTION” pentru a indica faptul că autentificarea trebuie efectuată la procesarea unei plăți cu cardul. Cu toate acestea, puteți specifica un scop diferit, pentru a indica autentificarea fără plată. Consultați Trimiterea unei solicitări de autentificare fără plată.
authentication.acceptVersions Opțional Versiunea 3DS acceptată de dvs. pentru această plată. Dacă nu specificați o versiune, vor fi acceptate ambele versiuni, 3DS1 și 3DS2. Gateway-ul utilizează 3DS2 (dacă este acceptată de către emitent și card) și folosește 3DS1 ca versiune de rezervă dacă 3DS2 nu este disponibilă. Dacă nu este disponibilă nicio versiune, autentificarea nu va continua.
order.merchantCategoryCode Opțional Furnizați codul de categorie comerciant dacă doriți să suprareglați valoarea implicită configurată pentru legătura dvs. de achizitor.
Pentru a permite finalizarea oricărui proces de apel de metodă ACS înainte de a încerca operațiunea Authenticate Payer, este recomandat să trimiteți operațiunea Initiate Authentication cât mai devreme în cadrul procesului de validare și să reacționați imediat la răspuns. În mod normal, acest lucru va avea loc atunci când plătitorul termină de introdus numărul de card pe pagina de validare (de exemplu, evenimentul „onBlur” din câmpul de introducere Număr card sau atunci când selectează un card dintre cele înregistrate în contul său, dacă site-ul dvs. are capabilități de înregistrare a cardurilor). Așteptați cel puțin 10 secunde pentru finalizarea apelului de metodă ACS.
Dacă trimiteți solicitarea Authenticate Payer înainte de finalizarea apelului de metodă ACS, gateway-ul returnează codul de răspuns HTTP 503. În acest caz, așteptați câteva secunde și retrimiteți solicitarea Authenticate Payer așa cum este. După finalizarea apelului de metodă sau după ce au trecut 10 secunde, se va permite continuarea solicitării.
Răspunsul Initiate Authentication

Gateway-ul returnează următoarele câmpuri-cheie în răspunsul la operațiunea Initiate Authentication:

  • authentication.version: Dacă autentificarea 3DS a plătitorului este disponibilă, acest câmp afișează tipul 3DS1 sau 3DS2. Dacă ambele sunt disponibile, va fi returnat tipul 3DS2.
  • authentication.3ds2.methodSupported: Dacă versiunea 3DS2 este disponibilă, iar ACS-ul emitentului acceptă apelurile de metodă, câmpul are valoarea SUPPORTED. Apelul de metodă poate fi utilizat de ACS pentru a colecta data suplimentare înainte de solicitarea de autentificare, pentru a mări probabilitatea ca autentificarea fluidizată să fie disponibilă. Apelul de metodă este declanșat într-un cadru iFrame ascuns, respectiv invizibil pentru plătitor. De asemenea, acesta nu declanșează funcția callback după finalizare.
  • transaction.authenticationStatus: Consultați acest câmp dacă doriți mai multe detalii despre starea de autentificare.
  • response.gatewayRecommendation: Acest câmp vă permite să stabiliți pasul următor. Rețineți că această recomandare se bazează numai pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau furnizorul dvs. de servicii de plată.

    response.gatewayRecommendation Pasul următor
    DO_NOT_PROCEED Nu continuați autentificarea 3DS a cardului, dar poate doriți să continuați plata fără datele 3DS. De asemenea, puteți oferi plătitorului opțiunea de a încerca o altă metodă de plată.
    PROCEED Puteți continua cu autentificarea plătitorului folosind operațiunea Authenticate Payer.
  • authentication.redirectHtml: Introduceți conținutul acestui câmp pe pagina afișată plătitorului. În acest scop, adăugați conținutul text într-un element DIV ascuns și specificați identificatorul scriptului în DOM HTML. Acest lucru va determina crearea și postarea automată a formularului. De exemplu,
    div.innerHtml= response.authentication.redirectHtml; eval(document.getElementById('initiate-authentication-script').text)
    	
    Dacă gateway-ul recomandă să nu continuați, atunci introducerea conținutului acestui câmp pe pagina dvs. web nu va executa nicio funcție.
Exemple
Solicitarea Initiate Authentication
URL https://egenius.unicredit.ro/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID>
Metoda HTTP PUT
{ "authentication":{ "acceptVersions":"3DS1,3DS2", "channel":"PAYER_BROWSER", "purpose":"PAYMENT_TRANSACTION" }, "correlationId":"test", "order":{ "currency":"AUD" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>" } } }, "apiOperation":"INITIATE_AUTHENTICATION" }
	
Răspunsul Initiate Authentication – 3DS2
{ "authentication":{ "3ds2":{ "directoryServerId":"A000000004", "methodCompleted":false, "methodSupported":"SUPPORTED", "protocolVersion":"2.1.0", "requestorId":"test2ID", "requestorName":"test2Name" }, "acceptVersions":"3DS1,3DS2", "channel":"PAYER_BROWSER", "purpose":"PAYMENT_TRANSACTION", "redirect":{ "customized":{ "3DS":{ "methodPostData":"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9tdGYuZ2F0ZXdheS5tYXN0ZXJjYXJkLmNvbS9jYWxsYmFja0ludGVyZmFjZS9nYXRld2F5LzIxY2FlYjc1MDIyMGEyMDg0Y2E5MjRkYzhlNTAzYjZhZjIyNDc4NzU5ZjgwODMyMGZmMTZkZDJhZWExNGQyN2MiLCJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9", "methodUrl":"<method_url>" } } }, "redirectHtml":"<div id=\"initiate3dsSimpleRedirect\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"methodFrame\" name=\"methodFrame\" height=\"100\" width=\"200\" > </iframe> <form id =\"initiate3dsSimpleRedirectForm\" method=\"POST\" action=\"https://<host_name>/acs/v2/method\" target=\"methodFrame\"> <input type=\"hidden\" name=\"threeDSMethodData\" value=\"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9tdGYuZ2F0ZXdheS5tYXN0ZXJjYXJkLmNvbS9jYWxsYmFja0ludGVyZmFjZS9nYXRld2F5LzIxY2FlYjc1MDIyMGEyMDg0Y2E5MjRkYzhlNTAzYjZhZjIyNDc4NzU5ZjgwODMyMGZmMTZkZDJhZWExNGQyN2MiLCJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9\" /> </form> <script id=\"initiate-authentication-script\"> var e=document.getElementById(\"initiate3dsSimpleRedirectForm\"); if (e) { e.submit(); e.remove(); } </script> </div>", "version":"3DS2" }, "correlationId":"test", "merchant":"TEST_3DS2-1", "order":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE", "creationTime":"2019-10-28T05:00:27.234Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-12T01:29:25.551Z", "merchantCategoryCode":"1234", "status":"AUTHENTICATION_INITIATED", "totalAuthorizedAmount":0, "totalCapturedAmount":0, "totalRefundedAmount":0 }, "response":{ "gatewayCode":"AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation":"PROCEED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx0008", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-12T01:29:25.551Z", "timeOfRecord":"2019-10-28T05:00:27.234Z", "transaction":{ "amount":0, "authenticationStatus":"AUTHENTICATION_AVAILABLE", "currency":"AUD", "id":"42090084", "type":"AUTHENTICATION" }, "version":"60" }
Răspunsul Initiate Authentication (3DS1 ca soluție de rezervă)
{ "authentication":{ "3ds1":{ "veResEnrolled":"Y" }, "acceptVersions":"3DS1,3DS2", "channel":"PAYER_BROWSER", "purpose":"PAYMENT_TRANSACTION", "redirect":{ "customized":{ "3DS":{ "methodPostData":"e30=", "methodUrl":"<method_url>" } } }, "redirectHtml":"<script id=\"initiate-authentication-script\"></script>", "version":"3DS1" }, "correlationId":"test", "merchant":"TEST_3DS2-1", "order":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE", "creationTime":"2021-04-13T02:52:24.532Z", "currency":"AUD", "id":"3bdbe65b-d0db-4a7d-a8a1-59ae3723da77", "lastUpdatedTime":"2021-04-12T01:40:40.317Z", "merchantCategoryCode":"1234", "status":"AUTHENTICATION_INITIATED", "totalAuthorizedAmount":0, "totalCapturedAmount":0, "totalRefundedAmount":0 }, "response":{ "gatewayCode":"AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation":"PROCEED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx8246", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-12T01:40:40.317Z", "timeOfRecord":"2021-04-13T02:52:24.532Z", "transaction":{ "amount":0, "authenticationStatus":"AUTHENTICATION_AVAILABLE", "currency":"AUD", "id":"2e1d", "type":"AUTHENTICATION" }, "version":"60" }

Pasul 2: Autentificarea plătitorului

Atunci când răspunsul Initiate Authentication a indicat autentificarea ca fiind disponibilă (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE) și după ce sunt colectate toate datele despre plătitori și plată, puteți trimite solicitarea Authenticate Payer. Aceasta trebuie invocată atunci când plătitorul face clic pe butonul „Plătiți acum” de pe pagina de validare.

Utilizați aceeași versiune a API cu cea din solicitarea Initiate Authentication pentru solicitarea Authenticate Payer.
Solicitarea Authenticate Payer

Trimiteți această operațiune completând următoarele câmpuri.  Dacă se acceptă doar 3DS1, gateway-ul ignoră câmpurile specifice pentru 3DS2. 

Parametru Existență Descriere
session.id sau sourceOfFunds.provided.card.* sau sourceOfFunds.token Obligatoriu Detaliile cardului utilizat pentru plată.
order.amount Obligatoriu Valoarea totală a comenzii.
transaction.id Obligatoriu Valoarea transaction.id trebuie să fie identică cu cea a operațiunii Initiate Authentication precedente.
order.id Obligatoriu Valoarea order.id trebuie să fie identică cu cea a operațiunii Initiate Authentication precedente.
authentication.redirectResponseUrl Opțional Adresa URL către care doriți să redirecționați plătitorul după finalizarea procesului Authenticate Payer. Trebuie să furnizați această adresă URL, exceptând cazul în care aveți certitudinea că nu va exista nicio interacțiune cu plătitorul.
order.merchantCategoryCode Opțional Dacă nu completați acest câmp, va fi utilizată valoarea implicită configurată în profilul dvs. de comerciant.
device.browser Opțional Este necesar dacă acceptați 3DS2 și dacă authentication.channel=PAYER_BROWSER.
device.ipAddress Opțional Este necesar dacă acceptați 3DS2 și dacă authentication.channel=PAYER_BROWSER, cu condiția de a fi exclus dacă acest lucru este necesar pentru respectarea legislației locale.
Grupul de parametri device.browserDetails Opțional Este necesar dacă acceptați 3DS2 și dacă authentication.channel=PAYER_BROWSER.
Grupul de parametri billing.address Opțional Aplicabil doar pentru 3DS2. Este recomandat cu insistență să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil.
Grupul de parametri shipping.address Opțional Aplicabil doar pentru 3DS2. Se recomandă cu tărie să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil.
Grupul de parametri customer Opțional Aplicabil doar pentru 3DS2. Se recomandă cu tărie să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil.
Răspunsul Authenticate Payer

Gateway-ul returnează următoarele câmpuri-cheie în răspunsul la operațiunea Authenticate Payer:

  • transaction.authenticationStatus: Consultați acest câmp dacă doriți mai multe detalii despre starea de autentificare.
  • response.gatewayRecommendation: Acest câmp vă permite să determinați dacă ar trebui să continuați la o tranzacție financiară sau nu. Această recomandare se bazează doar pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau furnizorul dvs. de servicii de plată.

    response.gatewayRecommendation Pasul următor
    DO_NOT_PROCEED Nu continuați cu acest card deoarece autentificarea este respinsă sau indisponibilă, dar poate doriți să continuați plata fără datele 3DS. De asemenea, puteți oferi plătitorului opțiunea de a încerca o altă metodă de plată.
    PROCEED Puteți continua cu finalizarea procesului de autentificare (procesul de testare) sau puteți finaliza plata (proces optimizat).
  • authentication.redirectHtml: Introduceți conținutul acestui câmp pe pagina afișată plătitorului. În acest scop, adăugați conținutul text într-un element DIV și specificați identificatorul scriptului în DOM HTML. Acest lucru va determina crearea și postarea automată a formularului. De exemplu,
    div.innerHtml= response.authentication.redirectHtml; eval(document.getElementById('authenticate-payer-script').text)
    	
    Dacă gateway-ul recomandă să nu continuați, atunci introducerea conținutului acestui câmp pe pagina dvs. web nu va executa nicio funcție.

Procesul fluidizat

Acest lucru va redirecționa browserul plătitorului înapoi la site-ul dvs. web. Puteți continua cu trimiterea unei tranzacții ulterioare către gateway. Gateway-ul va obține datele de autentificare asociate plății și se va asigura că plățile vor fi procesate numai dacă toate regulile 3DS de filtrare a tranzacțiilor (configurate de dvs. sau furnizorul dvs. de servicii de plată) sunt respectate.

Procesul de testare

Acesta redirecționează browserul plătitorului către ACS, unde va apărea IU de testare a emitentului, după care plătitorul va fi redirecționat înapoi la site-ul dvs. web. Următoarele câmpuri sunt returnate în callback odată ce browserul plătitorului revine la site-ul dvs web.

  • order.id
  • transaction.id
  • response.gatewayRecommendation
  • result

Puteți determina rezultatul autentificării folosind valoarea returnată în câmpul response.gatewayRecommendation. Această recomandare se bazează doar pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau furnizorul dvs. de servicii de plată.

Dacă doriți date suplimentare despre răspuns, puteți utiliza operațiunea Retrieve Transaction.

response.gatewayRecommendation Pasul următor
DO_NOT_PROCEED Nu continuați cu acest card deoarece autentificarea este respinsă sau indisponibilă, dar poate doriți să continuați plata fără datele 3DS. De asemenea, puteți oferi plătitorului opțiunea de a încerca o altă metodă de plată.
PROCEED Puteți continua cu plata, deoarece autentificarea a fost efectuată.
Câmpurile răspunsului Authenticate Payer

Câmpurile returnate în răspunsul Authenticate Payer depind de procesul utilizat (fluidizat sau de testare), de modul de inițiere a solicitării de autentificare (authentication.channel) și de mecanismul de autentificare pentru solicitare (sesiune, certificat sau parolă).

Următoarele câmpuri sunt returnate pentru o solicitare autentificată prin certificat/parolă. Pentru operațiunile autentificate pe baza sesiunii, răspunsul este filtrat pentru eliminarea datelor care nu sunt legate de plătitor, fiind returnate numai câmpurile de pe lista albă. Pentru mai multe informații, consultați autentificarea sesiunii.

* dacă este cazul, în funcție de versiunea 3DS și de procesul utilizat (fluidizat sau de testare).
Response Field Autentificat de comerciant
authentication.method Da
authentication.3ds.authenticationToken *
authentication.3ds.acsEci Da
authentication.3ds.transactionId Da
authentication.3ds2.transactionStatus *
authentication.3ds2.acsTransactionId *
authentication.3ds2.dsTransactionId *
authentication.3ds2.3dsServerTransactionId *
authentication.3ds2.3dsServerTransactionId *
authentication.3ds2.protocolVersion *
authentication.3ds1.veResEnrolled *
authentication.redirectHtml Da
response.gatewayRecommendation Da
transaction.type Da
version Da
timeOfRecord Da
result Da
response.debugInformation *
Exemple
Solicitarea Authenticate Payer
URL https://egenius.unicredit.ro/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID>
Metoda HTTP PUT
{ "authentication":{ "redirectResponseUrl":"<host>/merchantSimulator/jsp/simple/output.jsp" }, "correlationId":"test", "device": { "browser": "MOZILLA", "browserDetails": { "3DSecureChallengeWindowSize": "FULL_SCREEN", "acceptHeaders": "application/json", "colorDepth": 24, "javaEnabled": true, "language": "en-US", "screenHeight": 640, "screenWidth": 480, "timeZone": 273 }, "ipAddress": "127.0.0.1" }, "order":{ "amount":"100", "currency":"AUD" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>", "expiry":{ "month":"5", "year":"21" } } } }, "apiOperation": "AUTHENTICATE_PAYER" }
	
Răspunsul Authenticate Payer – procesul de testare 3DS2
{ "authentication":{ "3ds":{ "transactionId":"6dfa4509-1bf2-425b-965b-d44dd11f5f91" }, "3ds2":{ "3dsServerTransactionId":"8c4a911c-289a-46c2-a615-887e1cc01a6a", "acsTransactionId":"2a8234c9-e8ac-449d-a693-97a113b491fc", "directoryServerId":"A000000004", "dsTransactionId":"6dfa4509-1bf2-425b-965b-d44dd11f5f91", "methodCompleted":false, "methodSupported":"SUPPORTED", "protocolVersion":"2.1.0", "requestorId":"test2ID", "requestorName":"test2Name", "transactionStatus":"C" }, "method":"OUT_OF_BAND", "payerInteraction":"REQUIRED", "redirect":{ "customized":{ "3DS":{ "acsUrl":"https://<host_name>/acs/v2/prompt", "cReq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9" } }, "domainName":"<domain_name>" }, "redirectHtml":"<div id=\"threedsChallengeRedirect\" xmlns=\"http://www.w3.org/1999/html\"> <form id =\"threedsChallengeRedirectForm\" method=\"POST\" action=\"https://<host_name>/acs/v2/prompt\" target=\"challengeFrame\"> <input type=\"hidden\" name=\"creq\" value=\"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNhODM1ZDQxLTBlMDktNGI3OC1hNmUyLWQwZjJiNjFlZjBjOCJ9\" /> </form> <iframe id=\"challengeFrame\" name=\"challengeFrame\" width=\"100%\" height=\"100%\" ></iframe> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"threedsChallengeRedirectForm\"); if (e) { e.submit(); e.remove(); } </script> </div>", "version":"3DS2" }, "correlationId":"test", "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "merchant":"TEST_3DS2-1", "order":{ "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "creationTime":"2021-04-13T02:22:59.113Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-13T02:44:07.161Z", "merchantCategoryCode":"1234", "status":"AUTHENTICATION_INITIATED", "totalAuthorizedAmount":0, "totalCapturedAmount":0, "totalRefundedAmount":0, "valueTransfer":{ "accountType":"NOT_A_TRANSFER" } }, "response":{ "gatewayCode":"PENDING", "gatewayRecommendation":"PROCEED" }, "result":"PENDING", "sourceOfFunds":{ "provided":{ "card":{ "expiry":{ "month":"5", "year":"21" }, "number":"512345xxxxxx0008", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:44:07.161Z", "timeOfRecord":"2021-04-13T02:22:59.113Z", "transaction":{ "acquirer":{ "merchantId":"99554411" }, "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "currency":"AUD", "id":"42090084", "type":"AUTHENTICATION" }, "version":"60" }
Răspunsul Authenticate Payer – 3DS1 ca soluție de rezervă
{ "authentication":{ "3ds1":{ "veResEnrolled":"Y" }, "payerInteraction":"REQUIRED", "redirect":{ "domainName":"<domain_name>" }, "redirectHtml":"<div id=\"redirectTo3ds1AcsSimple\" xmlns=\"http://www.w3.org/1999/html\"> <iframe id=\"redirectTo3ds1Frame\" name=\"redirectTo3ds1Frame\" height=\"100%\" width=\"100%\" > </iframe> <form id =\"redirectTo3ds1Form\" method=\"POST\" action=\"https://<host_name>/acs/b6594e88-608f-4897-a8b5-dd491dc1e54d\" target=\"redirectTo3ds1Frame\"> <input type=\"hidden\" name=\"PaReq\" value=\"eAFVUd9vgjAQfjfxfyBkr6OlgENz1uDUaBadmZr9eFlYaYRFwNEi7r9fizC3e7rvu97Xu+9gdE4PxokXIsmzoWlb2DR4xvIoyfZDc7ed3frmiHY7sI0LzicbzsqCU1hyIcI9N5JI9XiuT8hdz6SwDp74F4VGjio1iwBqoeoqWBxmkkLIvsaLFbWbANQQkPJiMaGSCwnokkMWppxulo8P03dnslF6NQEsLzNZfFPs9AC1AMriQGMpjwOEqqqyRJrIWFgsTwHpEqDrDOtSTyPUNuckovPpYo484o53n1XwHK9Orx9sFvRexFs+BKRfQBRKTgm2+9gnvoGdgY0H2AVU8xCmeiAa7CbGjY2xhbHa6sLBUX8VXICq6dJfCpSphXK9XaZFwM/HPONKVW39mwO6Tn4/114yqTzzbOK4Xr8On7jKlKagVRJlFLGxV8toAEi3ouZgypX6nor5d+du5wf/BK8K\" /> <input type=\"hidden\" name=\"TermUrl\" value=\"https://<host_name>/callbackInterface/gateway/e91c0cc18c143f205a081cde25a3a8cec28b04bb90169115295beb29d0c1dc28\" /> <input type=\"hidden\" name=\"MD\" value=\"\" /> </form> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"redirectTo3ds1Form\"); if (e) { e.submit(); e.remove(); } </script> </div>", "version":"3DS1" }, "correlationId":"test", "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "merchant":"TEST_3DS2-1", "order":{ "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "creationTime":"2021-04-13T02:52:24.532Z", "currency":"AUD", "id":"3bdbe65b-d0db-4a7d-a8a1-59ae3723da77", "merchantCategoryCode":"1234", "status":"AUTHENTICATION_INITIATED", "totalAuthorizedAmount":0, "totalCapturedAmount":0, "totalRefundedAmount":0, "valueTransfer":{ "accountType":"NOT_A_TRANSFER" } }, "response":{ "gatewayCode":"PENDING", "gatewayRecommendation":"PROCEED" }, "result":"PENDING", "sourceOfFunds":{ "provided":{ "card":{ "expiry":{ "month":"5", "year":"21" }, "number":"512345xxxxxx8246", "scheme":"MASTERCARD" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:54:19.182Z", "timeOfRecord":"2021-04-13T02:52:24.532Z", "transaction":{ "acquirer":{ "merchantId":"99554411" }, "amount":100, "authenticationStatus":"AUTHENTICATION_PENDING", "currency":"AUD", "id":"three", "type":"AUTHENTICATION" }, "version":"60" }

Pasul 3: Utilizarea rezultatului autentificării într-o operațiune de plată

Dacă rezultatul operațiunii Authenticate Payer indică faptul că puteți continua plata (response.gatewayRecommendation=PROCEED), puteți iniția o operațiune Autorizare sau Plată. În plus față de câmpurile standard, trebuie să completați următoarele câmpuri:

  • order.id: Furnizați valoarea order.id completată în cadrul operațiunilor Initiate Authentication și Authenticate Payer.
  • authentication.transactionId: Furnizați valoarea transaction.id completată în cadrul operațiunilor Initiate Authentication și Authenticate Payer. Nu este necesar să includeți niciunul dintre câmpurile din grupul de parametri de autentificare, deoarece gateway-ul va utiliza valoarea authentication.transactionId pentru a căuta rezultatele autentificării pe care le-a salvat în momentul în care ați solicitat efectuarea autentificării. Gateway-ul va transmite achizitorului informațiile solicitate.
Exemple
Solicitarea Pay
URL https://egenius.unicredit.ro/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID>
Metoda HTTP PUT
 
{ "apiOperation":"PAY", "authentication":{ "transactionId":"<your_transaction_ID>" }, "order":{ "amount":"100", "currency":"AUD", "reference":"<your_order_ID>" }, "sourceOfFunds":{ "provided":{ "card":{ "number":"<card_number>", "expiry":{ "month":"5", "year":"21" } } }, "type":"CARD" }, "transaction":{ "reference":"<your_order_ID>" } }
	
Răspunsul Pay – 3DS2
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"kHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"39c25b96-7bc3-4586-bee8-056479fed3af" }, "3ds2":{ "dsTransactionId":"39c25b96-7bc3-4586-bee8-056479fed3af", "protocolVersion":"2.1.0", "transactionStatus":"Y" }, "transactionId":"249213216", "version":"3DS2" }, "authorizationResponse":{ "posData":"1605S0100130", "transactionIdentifier":"TidTest" }, "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "gatewayEntryPoint":"WEB_SERVICES_API", "merchant":"TEST_3DS2-1", "order":{ "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "chargeback":{ "amount":0, "currency":"AUD" }, "creationTime":"2021-04-13T02:11:06.102Z", "currency":"AUD", "id":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "lastUpdatedTime":"2021-04-13T02:11:57.049Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "status":"CAPTURED", "totalAuthorizedAmount":100.00, "totalCapturedAmount":100.00, "totalRefundedAmount":0.00 }, "response":{ "acquirerCode":"00", "gatewayCode":"APPROVED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "brand":"MASTERCARD", "expiry":{ "month":"5", "year":"21" }, "fundingMethod":"CREDIT", "issuer":"<issuer>", "number":"512345xxxxxx0008", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T02:11:57.049Z", "timeOfRecord":"2021-04-13T02:11:56.973Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"028941", "currency":"AUD", "id":"1", "receipt":"1908266016", "reference":"807a01b6-e6c8-4aa7-b8da-799bfff89496", "source":"INTERNET", "stan":"496", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }
Răspunsul Pay – 3DS1 ca soluție de rezervă
{ "authentication":{ "3ds":{ "acsEci":"02", "authenticationToken":"jHyn+7YFi1EUAREAAAAvNUe6Hv8=", "transactionId":"3nzQOuTJDVOsRLuDT9V671B8QkU=" }, "3ds1":{ "paResStatus":"Y", "veResEnrolled":"Y" }, "transactionId":"5791", "version":"3DS1" }, "authorizationResponse":{ "posData":"1605S0100130", "transactionIdentifier":"TidTest" }, "device":{ "browser":"MOZILLA", "ipAddress":"127.0.0.1" }, "gatewayEntryPoint":"WEB_SERVICES_API", "merchant":"TEST_3DS2-1", "order":{ "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "chargeback":{ "amount":0, "currency":"AUD" }, "creationTime":"2021-04-13T03:17:44.895Z", "currency":"AUD", "id":"f808076a-0bc6-4f1b-8100-cfe46e43676e", "lastUpdatedTime":"2021-04-13T03:19:45.964Z", "merchantAmount":100.00, "merchantCategoryCode":"1234", "merchantCurrency":"AUD", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "status":"CAPTURED", "totalAuthorizedAmount":100.00, "totalCapturedAmount":100.00, "totalRefundedAmount":0.00 }, "response":{ "acquirerCode":"00", "gatewayCode":"APPROVED" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "brand":"MASTERCARD", "expiry":{ "month":"5", "year":"21" }, "fundingMethod":"CREDIT", "issuer":"<issuer>", "number":"512345xxxxxx8246", "scheme":"Mastercard", "storedOnFile":"NOT_STORED" } }, "type":"CARD" }, "timeOfLastUpdate":"2021-04-13T03:19:45.964Z", "timeOfRecord":"2021-04-13T03:19:45.703Z", "transaction":{ "acquirer":{ "batch":1, "id":"<acquirer_id>", "merchantId":"99554411" }, "amount":100.00, "authenticationStatus":"AUTHENTICATION_SUCCESSFUL", "authorizationCode":"003879", "currency":"AUD", "id":"1", "receipt":"1908286018", "reference":"9b57808a-474e-445d-b2ca-09d571f5ea75", "source":"INTERNET", "stan":"499", "terminal":"1234", "type":"PAYMENT" }, "version":"60" }

Alte opțiuni

Recuperarea rezultatelor autentificării 3DS

Dacă doriți să recuperați rezultatele autentificării, în orice moment, utilizați operațiunea Retrieve Transaction. Rețineți că acele câmpuri care sunt utilizate numai în timpul autentificării, cum ar fi authentication.redirectHtml, nu rămân pe gateway și, prin urmare, nu vor fi returnate.

Trimiterea unei solicitări de plată pre-autentificate

Dacă ați utilizat un MPI 3DS extern pentru a autentifica plătitorul, trebuie să furnizați informațiile referitoare la autentificare în grupul de parametri de autentificare pentru operațiunea Authorize sau Pay.

Toate câmpurile sunt opționale, deoarece, dacă v-au fost sau nu furnizate de către MPI 3DS extern depinde de versiunea de autentificare a tranzacției (3DS1 sau 3DS2) și de starea tranzacției. Dacă, însă, dispuneți de aceste date, este recomandat să le furnizați.

  • authentication.3ds.acsEci: Indicatorul de comerț electronic care vă poate fi returnat în mesajul de răspuns de autentificare.
  • authentication.3ds.authenticationToken: Valoarea codificată base64 generată de emitentul cardului care vă poate fi returnată în mesajul de răspuns de autentificare.
  • authentication.3ds.transactionId: Un identificator unic al tranzacției, generat de gateway pentru autentificarea 3DS.
    Pentru 3DS1, acest câmp corespunde XID, care este un identificator generat de gateway în numele comerciantului. Un XID trimis în acest câmp trebuie să aibă formatul base64.
    Pentru 3DS2, acest câmp corespunde cu identificatorul alocat de serverul de directoare al schemei.
  • authentication.3ds1.paResStatus: Indică rezultatul autentificării plătitorului la emitent.
  • authentication.3ds1.veResEnrolled: Indică dacă autentificarea plătitorului este disponibilă sau nu pentru numărul de card furnizat.
  • authentication.3ds2.protocolVersion: Versiunea protocolului EMV 3-D Secure utilizat pentru autentificarea 3-D Secure, în formatul specificat de EMVCo. De exemplu, 2.1.0
  • authentication.3ds2.transactionStatus: Indică rezultatul autentificării plătitorului la emitent.
  • authentication.3ds2.statusReasonCode: Un cod care indică motivul pentru starea tranzacției, returnată în authentication.3ds2.transactionStatus. Acesta trebuie furnizat atunci când authentication.3ds2.transactionStatus returnează N, U sau R.
Mastercard/Visa solicită ca, dacă utilizați Mastercard SecureCode/Verified by Visa și dacă a fost inițiată o încercare de autentificare, să furnizați authentication.3ds.authenticationToken.
Trimiterea unei solicitări de autentificare fără plată

Dacă doriți să efectuați autentificarea doar pentru a verifica identitatea plătitorului, fără procesarea unei plăți, trebuie să indicați scopul autentificării în solicitarea Initiate Authentication. De exemplu, doriți să autentificați plătitorul după ce acesta introduce detaliile cardului pentru o utilizare ulterioară, în timpul sesiunii de înregistrare a clientului sau de creare a contului pe site-ul dvs. web. Abilitatea de a finaliza procesul de autentificare într-un mediu fără plată îmbunătățește experiența plătitorului și reduce frecvența renunțărilor din partea plătitorilor.

Detaliile de autentificare pentru autentificarea fără plată nu pot fi utilizate pentru a revendica obligativitatea de rambursare în cazul unei tranzacții de plată. Dacă furnizați detaliile de autentificare într-o tranzacție de plată, gateway-ul respinge solicitarea.

Pentru a efectua o autentificare fără plată, trebuie să completați următoarele câmpuri în solicitarea Initiate Authentication:

  • order.currency: Toate monedele acceptate de linkul sau linkurile de achizitor.
  • authentication.purpose: Indică contextul în care este solicitată autentificarea plătitorului. Puteți specifica unul dintre următoarele elemente:
    • ADD_CARD: Autentificarea efectuată înainte de stocarea cardului unui plătitor fie direct de către dvs., fie prin utilizarea funcției de creare de simbol de pe gateway. O plată nu este procesată.
    • MAINTAIN_CARD: Autentificarea efectuată înainte de actualizarea detaliilor cardului unui plătitor, stocate fie direct de către dvs., fie prin utilizarea funcției de creare de simbol de pe gateway. O plată nu este procesată.

    Dacă schema de autentificare nu acceptă scopul solicitat, gateway-ul returnează AUTHENTICATION_NOT_SUPPORTED drept răspuns. Rețineți că gateway-ul setează implicit acest câmp la PAYMENT_TRANSACTION pentru a permite autentificarea care va fi utilizată pentru o tranzacție de plată.

Integrări sesiuni de plată avansate

Dacă ați utilizat o sesiune de plată (ID sesiune) pentru a stoca detaliile de autentificare, solicitarea POST trimisă de browserul plătitorului către site-ul dvs. web la finalizarea solicitării Authenticate Payer va fi parametrizată într-un mod care să permită determinarea rezultatului autentificării. Fiecare parametru de autentificare, cum ar fi authentication.3ds2.transactionStatus.data, poate fi util pentru o integrare avansată sau dacă este necesar să furnizați datele de autentificare într-o plată procesată printr-un alt gateway. În acest scop, puteți trimite solicitarea Retrieve Transaction sau puteți alege să decriptați datele de autentificare criptate (a se vedea pașii de mai jos):

  1. Creați o sesiune folosind operațiunea Create Session.
  2. Adăugați date relevante la ID-ul sesiunii (returnat în răspunsul Create Session) utilizând solicitarea Update Session.
  3. Utilizați acest ID de sesiune în solicitările Initiate Authentication și Authenticate Payer.
  4. Redirecționarea browserului plătitorului către site-ul dvs. web va conține detaliile Authenticate Payer în câmpul encryptedData. Acesta este un obiect JSON criptat conținând datele de autentificare obținute în timpul procesului de autentificare. Acesta conține următoarele câmpuri:
    • encryptedData.ciphertext
      • authentication.3ds.acsEci
      • authentication.3ds.authenticationToken
      • authentication.3ds.transactionId
      • authentication.3ds1.veResEnrolled
      • authentication.3ds1.paResStatus
      • authentication.3ds2.transactionStatus
      • authentication.3ds2.dsTransactionId
      • transaction.authenticationStatus
      • authentication.3ds2.statusReasonCode
      • sourceOfFunds.provided.card.number
      • sourceOfFunds.provided.card.expiry.month
      • sourceOfFunds.provided.card.expiry.year
      • sourceOfFunds.token
      • order.id
      • transaction.id
    • encryptedData.nonce
    • encryptedData.tag
  5. Pentru a decripta conținutul returnat în câmpul encryptedData.ciphertext, utilizați session.aes256Key (returnat în răspunsul Create Session) în modul GCM. Cheia codată Base64 este secretă și trebuie să fie cunoscută numai de dvs.
public final class SessionDataDecrypter { /** * The algorithm used for encryption/decryption */ private static final String SYMMETRIC_ALGORITHM = "AES/GCM/NoPadding"; /** * The algorithm to be associated with the secret key material */ private static final String SYMMETRIC_KEY_TYPE = "AES"; /** * The secret key associated with the session, as returned in the session.aes256Key in a Create Session response. */ private final byte[] key; /** * Constructs a new object with the given key. The key is Base64 encoded, as returned in the session.aes256Key * field in a Create Session response. This key must be kept secret, as it may be used to encrypt, decrypt and * authenticate data for that session. * * @param encodedKey Key to be used for decryption. */ public SessionDataDecrypter(String encodedKey) { key = Base64.getDecoder().decode(encodedKey); } /** * Performs decryption of the given ciphertext, using the key passed in the constructor and the associated nonce. * The tag is used to authenticate the ciphertext. * * @param ciphertext Encrypted and authenticated session data * @param nonce Nonce/Initialization vector associated with the ciphertext * @param tag Authentication tag * @return The decrypted session data * @throws AEADBadTagException if the data cannot be authenticated with the given tag * @throws InvalidKeyException if the key cannot be constructed properly. This may indicate that it has not been * correctly retrieved from the response field * @throws GeneralSecurityException other than {@link AEADBadTagException} and {@link InvalidKeyException}, should * not be thrown in a correctly set up environment */ public String decrypt(String ciphertext, String nonce, String tag) throws GeneralSecurityException { Key keySpec = new SecretKeySpec(key, SYMMETRIC_KEY_TYPE); // The Java crypto classes expect the ciphertext and tag to be a single input, so they need to be concatenated byte[] encryptedBytes = Base64.getDecoder().decode(ciphertext); byte[] tagBytes = Base64.getDecoder().decode(tag); byte[] input = new byte[encryptedBytes.length + tagBytes.length]; System.arraycopy(encryptedBytes, 0, input, 0, encryptedBytes.length); System.arraycopy(tagBytes, 0, input, encryptedBytes.length, tagBytes.length); // Configure the cipher with AES, using GCM parameter specifying the nonce/initialization vector byte[] iv = Base64.getDecoder().decode(nonce); GCMParameterSpec parameterSpec = new GCMParameterSpec(tagBytes.length * Byte.SIZE, iv); final Cipher decrypter = Cipher.getInstance(SYMMETRIC_ALGORITHM); decrypter.init(Cipher.DECRYPT_MODE, keySpec, parameterSpec); // Perform the decryption and return the value. byte[] decryptedBytes = decrypter.doFinal(input); return new String(decryptedBytes, StandardCharsets.UTF_8); } }
	
Utilizarea 3DS drept comerciant agregator

Comercianții agregatori pot activa utilizarea API-ului de autentificare pe gateway de către sub-comercianții lor. Nu este necesar ca sub-comercianții să aibă o relație contractuală cu achizitorul sau gateway-ul. Comerciantul agregator poate trimite detaliile sub-comercianților necesare pentru inițierea autentificării prin operațiunea Initiate Authentication. Pentru mai multe informații, consultați secțiunea Asistența pentru agregatori.

Întrebări frecvente

Pot utiliza API-ul de autentificare ca API pe partea clientului?

Puteți utiliza API-ul de autentificare ca API pe partea serverului sau pe partea clientului.

  • API pe partea clientului: Trebuie să stabiliți mai întâi un canal de autentificare prin care serverul comerciantului trebuie să comunice cu serverul gateway-ului pentru crearea sesiunii pe gateway. Odată ce sesiunea este creată, o puteți utiliza pentru a autentifica toate operațiunile API ulterioare necesare pentru gestionarea proceselor de integrare 3DS direct din browser, folosind API-ul JavaScript 3DS sau propria dvs. bibliotecă.
  • API pe partea serverului: Trebuie să efectuați toate operațiunile necesare pentru gestionarea proceselor de integrare 3DS direct de la serverul dvs. de comerciant la serverul gateway-ului. Puteți susține toate modurile de tranzacție pentru autentificare prin API-ul de autentificare.
    • Numai autentificare: Efectuați operațiunile Initiate Authentication și Authenticate Payer.
    • Autentificarea și tranzacția de plată: Efectuați operațiunile Initiate Authentication, Authenticate Payer și Authorize/Pay.
    • Tranzacția de plată pre-autentificată: Efectuați operațiunea Authorize/Pay folosind detaliile de autentificare de la un furnizor extern.
Pot utiliza simboluri din rețea ca sursă de fonduri în autentificarea plătitorului?

Puteți utiliza simboluri din rețea pentru autentificarea plătitorului începând cu API v55. În prezent, eGenius Platform acceptă numai procesarea simbolurilor din rețea obținute de la următorii furnizori de servicii de creare de simboluri: Mastercard Digital Enablement Service (MDES), Visa Token Service (VTS).

Dacă ați obținut un simbol în rețea prin integrarea directă în furnizorul de servicii de creare de simboluri, atunci trebuie să furnizați detaliile simbolului folosind următoarele câmpuri:

  • sourceOfFunds.type=SCHEME_TOKEN: Permite gateway-ului să identifice sursa fondurilor, introdusă în solicitare sub forma unui simbol din rețea. MDES și VTS sunt acceptate din API v51 și respectiv v53.
  • sourceOfFunds.provided.card.number: Simbolul din rețea. Completați valoarea pentru „PAN simbol” în MDES sau „Simbol” în VTS.
  • sourceOfFunds.provided.card.expiry: (opțional) Data expirării simbolului din rețea.

Dacă furnizorul de servicii de plată vă permite crearea de simboluri în rețea, orice solicitare pentru un simbol de pe gateway trimisă de comerciant către gateway va determina și încercarea de generare a unui simbol corespunzător în rețea pentru schemele activate, dacă sunt acceptate de emitentul cardului. Gateway-ul va încerca, de asemenea, crearea de simboluri în rețea pentru orice carduri aplicabile deja stocate în depozitul de simboluri de pe gateway. Solicitarea Initiate Authentication va utiliza simbolul din rețea, dacă este disponibil; în caz contrar, va fi utilizat PAN de finanțare (FPAN) stocat în schimbul simbolului de pe gateway. Acest model acceptă momentan doar simboluri MDES.

Pot utiliza simboluri de plată pentru dispozitive ca sursă de fonduri în autentificarea plătitorului?

Puteți utiliza simboluri ale plăților de pe dispozitiv pentru autentificarea plătitorului începând din API v55. Sunt acceptate numai simbolurile de plată obținute din SDK-ul Google Pay. Puteți furniza un simbol de plată criptat sau codul „PAN” obținut dintr-un simbol de plată decriptat pentru autentificarea plătitorului. Gateway-ul acceptă numai solicitările de autentificare care conțin un FPAN; cele care conțin coduri DPAN vor fi respinse. Pentru a furniza detaliile cardului prin simboluri de plată, completați câmpul de mai jos:

  • order.walletProvider=GOOGLE_PAY
  • sourceOfFunds.provided.card.devicePayment.paymentToken: Se aplică numai dacă simbolul de plată este decriptat de către gateway. Este simbolul criptat al plății obținut din SDK-ul Google Pay.
  • sourceOfFunds.provided.card.number: Se aplică numai dacă simbolul de plată este decriptat de către dvs. Valoarea care corespunde cheii JSON „pan” din Google Pay.
Ce pot face pentru a spori șansele unui traseu fără întreruperi?

Solicitarea Authenticate Payer poate necesita un volum mare de informații despre plătitor și tranzacție. De exemplu, puteți furniza următoarele date în solicitare, utilizând câmpurile din grupul de parametri customer.account, ceea ce va permite ACS-ului emitentului să evalueze nivelul de risc asociat cu activitatea. Acest lucru înseamnă că, în cazul plăților legitime, ACS poate confirma faptul că plătitorul este, cel mai probabil, posesorul real al cardului.

  • Plătitorul utilizează un cont existent?
    • customer.account.history.creationDate
  • De când există contul respectiv?
    • customer.account.history.lastUpdated
    • customer.account.history.passwordLastChanged
  • Care este frecvența cumpărăturilor plătitorului la dvs.?
    • customer.account.history.addCardAttempts
    • customer.account.history.annualActivity
    • customer.account.history.recentActivity
    • customer.account.history.shippingAddressDate
  • Plătitorul a mai comandat anterior articolele respective de la dvs.?
    • customer.account.history.issuerAuthentication.acsTransactionId
    • customer.account.history.issuerAuthentication.time
    • customer.account.history.issuerAuthentication.type
  • Ați observat activități suspecte (de ex. încercări eșuate de autentificare) în cont?
    • customer.account.history.suspiciousActivity
    • customer.account.authentication.method
    • customer.account.authentication.time

Puteți, de asemenea, să furnizați următoarele câmpuri recomandate pentru fiecare schemă de carduri din solicitarea Authenticate Payer. Rețineți că această listă nu este definitivă și poate fi modificată.

Câmp Mastercard Visa American Express Note
shipping.contact.email - - Y Necesar pentru calcularea riscului comerciantului
shipping.method - - Y Necesar pentru calcularea riscului comerciantului
order.valueTransfer.amount - - Y Necesar pentru calcularea riscului comerciantului. Se aplică numai cardurilor cadou.
order.valueTransfer.numberOfCards - - Y Necesar pentru calcularea riscului comerciantului. Se aplică numai cardurilor cadou.
order.valueTransfer.currency - - Y Necesar pentru calcularea riscului comerciantului. Se aplică numai cardurilor cadou.
order.supply.preorderAvailabilityDate - - Y Necesar pentru calcularea riscului comerciantului
order.supply.preorder - - Y Necesar pentru calcularea riscului comerciantului
order.supply.reorder - - Y Necesar pentru calcularea riscului comerciantului
order.valueTransfer.accountType - Y - Este impus de Visa și alte scheme pe anumite piețe (de ex., Brazilia). Nu se aplică dacă order.valueTransfer.accountType=NOT_A_TRANSFER
Este recomandat să furnizați cât mai multe posibil dintre aceste date, deoarece acest lucru mărește probabilitatea ca ACS să ofere autentificarea fluidizată, ceea ce îmbunătățește semnificativ experiența plătitorului și asigură o validare optimizată.
Cum pot determina starea autentificării?

Gateway-ul furnizează starea de autentificare în câmpul transaction.authenticationStatus. Acest câmp poate returna una dintre următoarele valori, în funcție de etapa autentificării:

  • AUTHENTICATION_ATTEMPTED: S-a încercat autentificarea plătitorului și a fost obținută o dovadă a tentativei de autentificare.
  • AUTHENTICATION_AVAILABLE: Autentificarea plătitorului este disponibilă pentru metoda de plată furnizată.
  • AUTHENTICATION_FAILED: Plătitorul nu a fost autentificat. Nu trebuie să continuați tranzacția.
  • AUTHENTICATION_NOT_SUPPORTED: Metoda de autentificare solicitată nu este acceptată pentru această metodă de plată.
  • AUTHENTICATION_NOT_IN_EFFECT: Nu există informații de autentificare asociate cu această tranzacție.
  • AUTHENTICATION_PENDING: Autentificarea plătitorului se află în așteptarea finalizării unui proces de testare.
  • AUTHENTICATION_REJECTED: Emitentul a respins solicitarea de autentificare și a solicitat să nu încercați autorizarea unei plăți.
  • AUTHENTICATION_REQUIRED: Autentificarea plătitorului este obligatorie pentru plata respectivă, însă nu a fost furnizată.
  • AUTHENTICATION_SUCCESSFUL: Plătitorul a fost autentificat cu succes.
  • AUTHENTICATION_UNAVAILABLE: Plătitorul nu a putut fi autentificat din cauza unei probleme tehnice sau de altă natură.
Cum pot vizualiza detaliile de autentificare în cadrul portalului Administrare cont comerciant?

Puteți vizualiza detaliile de autentificare atât pentru autentificările individuale, cât și pentru cele care au continuat cu efectuarea plății pe portalul Administrare cont comerciant. Căutați comanda sau tranzacția pe pagina de căutare și consultați detaliile autentificării.

Dacă doriți să vedeți detaliile unei autentificări 3DS1, de exemplu, pentru a vedea datele din câmpuri precum PARes, PAReq, utilizați funcția de căutare Autentificări de pe portalul Administrare cont comerciant.

Pot oferi 3DS plătitorului în mod condiționat?

Da, puteți evita autentificarea 3DS pentru plătitori atunci când asiguratorul extern al riscului consideră că plata are un nivel scăzut de risc. Pentru mai multe informații, consultați Dynamic 3DS.

Testați integrarea

Vă puteți testa integrarea pentru autentificarea 3DS prin intermediul gateway-ului utilizând emulatorul 3DS. Pentru a accesa emulatorul, utilizați-vă profilul de testare comerciant (tastați „TEST” ca prefix al ID-ului de comerciant furnizat de către furnizorul dvs. de servicii de plată).

Cardurile de test furnizează o serie de rezultate gateway pentru diferitele scenarii 3DS însă nu emulează neapărat comportamentul ACS.

Testarea este acceptată pentru următoarele scheme 3DS:

  • Mastercard SecureCode
  • Verified by Visa
  • American Express
Detalii

Pentru a testa funcționalitatea 3DS:

  1. Utilizați un card de testare (din tabelul de mai jos) atunci când trimiteți solicitarea de inițiere a autentificării pentru profilul dvs. de comerciant de TESTARE.
  2. Asigurați-vă că autentificarea este disponibilă (authentication.version=3DS2 or 3DS1)
  3. Trimiteți o solicitare Authenticate Payer și inserați conținutul câmpului authentication.redirectHtml pe pagina afișată pentru plătitor, pentru a redirecționa browserul plătitorului către pagina de testare a emulatorului 3DS.
    Emulatorul 3DS redirecționează browserul plătitorului înapoi către site-ul dvs. web odată ce autentificarea este finalizată.
  4. Selectați un anumit rezultat al autentificării 3DS din meniul derulant al emulatorului 3DS (a se vedea valorile din tabelul de mai jos).
  5. Utilizați ID-ul tranzacției pentru această autentificare 3DS în authentication.transactionId, prin intermediul unei solicitări de Authorize sau Pay ulterioare.
Carduri de testare Scop Număr card Înscris la 3DS1 Înscris la 3DS2 URL metodă tranStatus tranStatusReason ECI Simbol de autentificare
Mastercard 3DS2 – Testare (URL-ul metodei este furnizat) 5123450000000008
2223000000000007
Da Da

Da

C - - -
3DS2 – Optimizat (URL-ul metodei este furnizat) 5123456789012346 Da Da Da Y - 02 mHyn+7YFi1EUAREAAAAvNUe6Hv8=
3DS2 – Optimizat (fără URL metodă) 5555555555000018 Da Da Nu Y - 02 mHyn+7YFi1EUAREAAAAvNUe6Hv8=
3DS2 – Autentificare încercată 5500005555555559 Da Da Nu A - 01 nHyn+7YFi1EUAREAAAAvNUe6Hv8=
3DS2 – Autentificare respinsă 5506900140100503 Nu Da Nu R 04 - -
3DS1 – Neînscris la 3DS2, ceea ce are ca rezultat utilizarea 3DS1 ca soluție de rezervă 5506900140100305 Da Nu Nu - - - -
3DS2 – Eroare în timpul operațiunii Initiate Authentication, având ca rezultat un răspuns de eroare generică 5210760000000004 Da Excepție - - - - -
3DS2 – Eroare în timpul operațiunii Authenticate Payer, având ca rezultat un răspuns de eroare generică 5455031257390496 Da Da Nu Excepție - - -
5455031252665454 Da Da Nu Excepție - - -
3DS1 și 3DS2 – Răspuns Neînscris 5111111111111118 Nu Nu - - - - -
2223000000000023 Nu Nu - - - - -
3DS2 – Eroare Autentificare indisponibilă în timpul operațiunii Authenticate Payer, având ca rezultat răspunsul authenticationStatus = AUTHENTICATION_UNAVAILABLE 5123459999998221 Da Da Nu Excepție rezolvabilă - - -
Visa 3DS2 – Testare (fără URL metodă) 4440000009900010  Da Da Nu C - - -
3DS2 – Optimizat (fără URL metodă) 4440000042200014  Da Da Da Da - 05 mHyn+7YFi1EUAREAAAAvNUe6Hv8=
3DS2 – Autentificare încercată 4440000042200022  Nu Da Nu A - 06 nHyn+7YFi1EUAREAAAAvNUe6Hv8=
American Express 3DS2 – Testare (fără URL metodă) 340000099900051 Nu Da Nu C - - -
3DS2 – Optimizat (URL-ul metodei este furnizat) 340353278080900 Da Da Da Da - 05 mHyn+7YFi1EUAREAAAAvNUe6Hv8=
Discover 3DS1 – Neînscris la 3DS2, ceea ce are ca rezultat utilizarea 3DS1 ca soluție de rezervă 6011000991300009 Da Nu Nu - - - -
3DS1 și 3DS2 – Răspuns Neînscris 6011640745800505 - Nu - - - - -
Maestro Excepțiile PSD2 și comercianții de pe lista albă 5000000000000000005 Da Da Nu Nu 81 06 kNyn+7YFi1EUAREAAAAvNUe6Hv8=

În cazul valorii transStatus „C”, sunt posibile următoarele rezultate, prin selectarea din meniul derulant al emulatorului 3DS:

Descriere transStatus challengeCancel eci
Autentificare realizată cu succes
Y - 05 / 02
Autentificare eșuată
N - 07 / 00
Autentificare anulată
N 01 07 / 00
Autentificare imposibilă U - 07 / 00
Autentificare respinsă R - 07 / 00

Copyright © 2021 UniCredit Bank