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ă.
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:
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ă.
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:
|
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. |
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 your payment service provider.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)
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" }
{ "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" }
{ "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" }
Acolo unde răspunsul la operațiunea Initiate Authentication a indicat disponibilitatea autentificării (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE) și după colectarea tuturor datelor privind plătitorul și plata, 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.
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. |
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ă numai pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau your payment service provider.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)
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 your payment service provider) sunt respectate.
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.
Puteți determina rezultatul autentificării folosind valoarea returnată în câmpul response.gatewayRecommendation
. Această recomandare se bazează numai pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau your payment service provider.
Dacă doriți date suplimentare în 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 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.
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 | * |
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":"1", "year":"39" } } } }, "apiOperation": "AUTHENTICATE_PAYER" }
{ "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":"1", "year":"39" }, "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" }
{ "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":"1", "year":"39" }, "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" }
Dacă rezultatul operațiunii Authenticate Payer indică faptul că puteți continua plata (response.gatewayRecommendation=PROCEED), puteți să inițiați o operațiune Authorize sau Pay. În plus față de câmpurile standard, trebuie să completați următoarele câmpuri:
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":"1", "year":"39" } } }, "type":"CARD" }, "transaction":{ "reference":"<your_order_ID>" } }
{ "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":"1", "year":"39" }, "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" }
{ "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":"1", "year":"39" }, "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" }
Dacă doriți să apelaț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.
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. 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.0authentication.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.authentication.3ds.authenticationToken
.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.
Pentru a efectua o autentificare fără plată, trebuie să completați următoarele câmpuri în solicitarea Initiate Authentication
:
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ă.
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):
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
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); } }
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.
Puteți utiliza API-ul de autentificare ca API pe partea serverului sau pe partea clientului.
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ă your payment service provider 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.
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.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.
customer.account.history.creationDate
customer.account.history.lastUpdated
customer.account.history.passwordLastChanged
customer.account.history.addCardAttempts
customer.account.history.annualActivity
customer.account.history.recentActivity
customer.account.history.shippingAddressDate
customer.account.history.issuerAuthentication.acsTransactionId
customer.account.history.issuerAuthentication.time
customer.account.history.issuerAuthentication.type
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 |
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ă.Puteți vizualiza detaliile de autentificare atât pentru autentificările individuale, cât și pentru cele care au continuat cu efectuarea plății în Merchant Administration. 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 din Merchant Administration.
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.
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 your payment service provider).
Testarea este acceptată pentru următoarele scheme 3DS:
Pentru a testa funcționalitatea 3DS:
authentication.version
=3DS2 or 3DS1)authentication.redirectHtml
pe pagina afișată pentru plătitor, pentru a redirecționa browserul plătitorului către pagina de testare a emulatorului 3DS. 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 & 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 & 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 © 2022 UniCredit Bank