Integration Types
Alte caracteristici
Card Payments
Mobile Wallets
Alternative Payment Methods
Resources
Autentificarea 3-Domain Secure™ (3-D Secure sau 3DS) este concepută pentru a proteja achizițiile online împotriva fraudei cu carduri de credit, permițându-vă să autentificați plătitorul înainte de a trimite o tranzacție de tip Authorization sau Pay. eGenius Platform acceptă ambele versiuni 3DS — 3DS1 și EMV 3DS.
3DS1 este versiunea originală care permite plătitorilor să se autentifice pe serverul de control al accesului (Access Control Server – ACS) al emitentului introducând o parolă înregistrată anterior la emitentul cardului. 3DS2 acceptă, de asemenea, introducerea unei parole sau un proces fluidizat. Schemele de autentificare acceptate includ Mastercard, Visa, American Express, JCB, Discover și Diners Club.
Deși furnizorul dvs. de servicii de plată poate configura atât 3DS1, cât și 3DS2 în profilul de comerciant de pe gateway, puteți restricționa versiunile pe care doriți să le acceptați specificându-vă opțiunea în solicitarea de autentificare. Dacă ambele sunt acceptate, atunci gateway-ul utilizează versiunea 3DS2 (dacă este acceptată de către emitent și card) și folosește 3DS1 ca soluție de rezervă numai pe piețele reglementare corespunzător. Dacă nu este disponibilă nicio versiune, autentificarea nu va continua. Puteți, însă, continua cu plata dacă gateway-ul recomandă acest lucru.
Diagrama de mai jos ilustrează procesul de autentificare pentru o plată în cazul căreia gateway-ul utilizează autentificarea 3DS1 ca soluție de rezervă, deoarece 3DS2 nu este disponibil pentru card. Gateway-ul va încerca să utilizeze 3DS1 și în alte cazuri; de exemplu, atunci când numai 3DS1 este activat pentru dvs. sau când restricționați versiunea de autentificare la 3DS1 în solicitarea de autentificare.
Procesul de autentificare pentru o autentificare efectuată cu succes este următorul:
Iată câțiva termeni-cheie care vor fi utilizați în documentația referitoare la integrarea 3DS1
Termen | Descriere |
---|---|
Server de control al accesului (ACS) | O componentă care operează în domeniul emitentului și care verifică dacă autentificarea este disponibilă pentru un număr de card și un tip de dispozitiv și autentifică anumite tranzacții. |
Apel metodă ACS | Se aplică autentificării 3DS2. Este un apel care permite ACS să colecteze date suplimentare pentru a determina scorul de risc al plătitorului. Când 3DS2 este disponibil și atunci când detaliile apelului ACS sunt returnate în răspunsul de după inițierea autentificării, aceste detalii sunt transmise browserului plătitorului și trimise ca formular postat într-un cadru iFrame ascuns, pentru a permite ACS să colecteze date suplimentare. |
Procesul fluidizat | Un proces de autentificare în care plătitorul nu este obligat să răspundă unui test, deoarece ACS consideră că plătitorul implică un risc scăzut. |
Procesul de testare | Un proces de autentificare în care plătitorul este redirecționat către ACS și este obligat să răspundă la un test pentru a se autentifica, deoarece ACS nu are suficiente informații privind plătitorul pentru a considera că implică un risc scăzut. |
Sesiune de plată | O sesiune de plată, sau pe scurt o sesiune, este un container temporar pentru orice câmpuri de solicitare și valori ale operațiunilor care au legături de referință cu o sesiune. Aceasta poate fi utilizată într-o operațiune pentru a face referire la câmpurile și valorile din cadrul solicitării, în loc să le furnizați direct în solicitarea de operațiune. Când gateway-ul primește o operațiune care include o referință a unei sesiuni, formează solicitarea finală combinând câmpurile de solicitare din cadrul sesiunii și cele furnizate direct în cadrul solicitării. Pentru mai multe informații, consultați sesiunea de plată. |
Autentificarea sesiunii | Autentificarea printr-o sesiune de plată. Această autentificare permite plătitorilor să își trimită detaliile de plată direct către gateway printr-o interacțiune cu gateway-ul pe partea clientului, fie în browserul plătitorului, fie într-o aplicație de pe dispozitivul mobil al acestuia. Acest proces utilizează un mecanism de autentificare HTTP (similar cu autentificarea prin parolă) în care trebuie să furnizați valoarea „merchant.<your gateway merchant ID>” în secțiunea userid și ID-ul sesiunii în secțiunea password. Pentru a utiliza acest tip de autentificare, trebuie să creați o sesiune trimițând o solicitare de sesiune (a se vedea Create Session [REST][NVP]) de la serverul dvs. la serverul gateway-ului. |
Autentificarea de către comerciant | Un mecanism care permite comerciantului să autentifice solicitările API către gateway, cum ar fi autentificarea prin parolă/certificat/sesiune. |
API de autentificare | Un API de pe partea serverului, constând în două operațiuni, Initiate Authentication și Authenticate Payer, care trebuie trimis de pe serverul dvs. pe serverul gateway-ului. Acesta poate fi utilizat și ca API pe partea clientului, folosind autentificarea bazată pe sesiune. |
API JavaScript 3DS | Un API JavaScript de pe partea clientului care vă permite să inițiați autentificarea 3DS din browserul plătitorului, folosind autentificarea bazată pe sesiune. |
Canal de autentificare | Indică unde are loc autentificarea 3DS – în browserul plătitorului, într-o aplicație de pe dispozitivul mobil al plătitorului sau în sistemul dvs., fără ca plătitorul să fie prezent. Acest lucru afectează disponibilitatea tipurilor și proceselor de autentificare; de exemplu, 3DS1 poate fi acceptat numai în browser, cu plătitorul prezent pentru a interacționa cu ACS. |
Scopul autentificării |
|
Operațiunea Initiate Authentication este utilizată pentru a determina versiunile 3DS disponibile pentru un anumit card. Versiunea de autentificare 3-D Secure existentă va reveni la 3DS1 dacă este îndeplinită oricare dintre condițiile de mai jos.
Acest tabel listează țările și schemele de autentificare în care se încearcă revenirea la 3DS1 atunci când autentificarea EMV 3DS nu este disponibilă la ACS al emitentului.
Schemă de autentificare | Țară comerciant |
---|---|
Mastercard Identity Check | India și Bangladesh |
Visa Secure | India, Bangladesh, Sri Lanka, Bhutan, Maldive și Nepal |
American Express SafeKey | India |
order.subMerchant.address.country
din solicitare pentru agregatorii care trimit solicitarea Initiate Authentication în numele altor comercianți. Pentru mai multe detalii, consultați Asistența pentru agregatori.{ "authentication": { "acceptVersions":"3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION" }, "correlationId": "test", "order": { "currency": "USD" }, "sourceOfFunds": { "provided": { "card": { "number": "<card_number>" } } }, "apiOperation": "INITIATE_AUTHENTICATION" }
De exemplu, un comerciant dintr-o țară în care 3DS1 este încă acceptat, iar autentificarea EMV 3DS nu este disponibilă pe serverul ACS al emitentului.
{ "authentication": { "acceptVersions":"3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION" }, "correlationId": "test", "order": { "currency": "USD" }, "sourceOfFunds": { "provided": { "card": { "number": "<card_number>" } } }, "apiOperation": "INITIATE_AUTHENTICATION" }
De exemplu, o tranzacție transfrontalieră pentru un comerciant dintr-o țară în care 3DS1 este încă acceptat, iar serverul ACS al emitentului internațional acceptă EMV 3DS, sau comerciantul se află într-o țară în care 3DS1 a fost scos din uz, iar serverul ACS al emitentului local acceptă EMV 3DS.
{ "authentication": { "3ds2": { "directoryServerId": "A999999999", "methodSupported": "NOT_SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "html": "<script id=\"initiate-authentication-script\"></script>" }, "version": "3DS2" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-11-03T08:22:17.087Z", "currency": "USD", "id": "Test1", "lastUpdatedTime": "2022-11-03T08:23:17.905Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "DEBIT", "number": "555555xxxxxx0018", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-11-03T08:23:17.905Z", "timeOfRecord": "2022-11-03T08:22:17.087Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "70" }
Faceți clic aici pentru a vedea cum puteți migra de la utilizarea 3DS1 original la Authentication API:Ghid de integrare a autentificării 3-D Secure: Pagina de integrare Hosted Checkout.
3DS JS utilizează autentificarea pe baza sesiunii. Ca prim pas, trebuie să creați o sesiune, pe care apoi o puteți actualiza cu câmpurile de solicitare și valorile pe care doriți să le stocați în cadrul sesiunii.
Puteți crea o sesiune folosind apelul Create Session. Acesta este un apel în API de pe partea serverului și reprezintă o cerință preliminară pentru integrarea cu API JS. Acesta returnează următoarele câmpuri:
session.id
: Un identificator de sesiune unic, pe care trebuie să îl furnizați în solicitările ulterioare pentru a face referire la conținutul sesiunii.session.authenticationLimit
: Limita asupra numărului de solicitări de tranzacție pe care browserul plătitorului le poate trimite. Puteți furniza o valoare în solicitare sau puteți utiliza valoarea implicită a gateway-ului. În mod implicit, gateway-ul o setează la 5, dar puteți furniza o valoare până la 25. Această limită împiedică utilizatorii răuvoitori să utilizeze solicitările de autentificare ca posibil atac de carding attack și să execute atacuri Denial of Service (DoS) asupra site-ului dvs. prin trimiterea unui număr mare de tranzacții (posibil facturabile). session.aes256Key
: Cheia pe care o puteți utiliza pentru a decripta datele sensibile transmise site-ului dvs. web prin browserul sau dispozitivul mobil al plătitorului.session.version
: Puteți utiliza acest câmp pentru a implementa blocarea optimistă a conținutului sesiunii.session.updateStatus
: Un rezumat al rezultatului ultimei încercări de modificare a sesiunii.Puteți adăuga sau actualiza câmpurile unei sesiuni folosind apelul Update Session. Acesta permite adăugarea datelor plăților și plătitorilor într-o sesiune care poate deveni ulterior un set de date de intrare pentru determinarea riscului asociat cu plătitorul într-o operațiune de autentificare. Într-o sesiune, următoarele câmpuri sunt obligatorii:
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.amount |
Obligatoriu | Valoarea totală a comenzii. |
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.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. |
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. Rețineți că scenariile cu soluție de rezervă se aplică numai piețelor reglementate corespunzător. Pentru mai multe informații despre scenariile cu soluție de rezervă, consultați Initiate Authentication – 3DS1 ca soluție de rezervă. |
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. |
Consultați API-ul 3DS JS (threeDS.js
) de pe serverele gateway-ului. Această acțiune va plasa obiectul ThreeDS
în fereastră/spațiul de nume global.
Odată ce ați creat o sesiune, inițializați API-ul prin metoda configure( )
. Această metodă trebuie apelată în timpul încărcării paginii sau când DOM se află în starea pregătită. Aceasta trebuie apelată o singură dată pentru o încărcare de pagină. După apelarea acestei metode, 3DS JS va furniza valorile de configurare sub formă de variabile-membru.
Puteți inițializa API-ul 3DS JS invocând metoda configure() cu următoarele câmpuri obligatorii ca argumente într-un obiect de cartografiere:
merchantId
: Identificatorul dvs. de comerciant pe gateway.sessionId
: ID-ul de sesiune creat prin apelul Create Session.containerId
: ID-ul <div> din codul dvs. HTML în care API-ul va injecta un cadru iFrame ascuns.callback
: O funcție care va fi invocată după inițializarea API-ului.configuration
: Valoarea JSON asociată elementelor de date precum userLanguage(Optional), versiunea API-ului REST (wsVersion).<html> <head> <script src="https://egenius.unicredit.ro/static/threeDS/1.3.0/three-ds.min.js" data-error="errorCallback" data-cancel="cancelCallback"> </script> <script type="text/javascript"> //The output of this call will return 'false', since the API is not configured yet console.log(ThreeDS.isConfigured()); /** Configure method with the configuration{} parameter set and demonstrates the state change of the ThreeDS object before and after the configure method is invoked. */ ThreeDS.configure({ merchantId: {merchantId}, sessionId: {sessionId}, containerId: "3DSUI", callback: function () { if (ThreeDS.isConfigured()) console.log("Done with configure"); }, configuration: { userLanguage: "en-AU", //Optional parameter wsVersion: 72 } }); //The output of this call will return 'true', since the API is configured console.log(ThreeDS.isConfigured()); //The output of the following code might look like "ThreeDS JS API Version : 1.2.0" console.log("ThreeDS JS API Version : " + ThreeDS.version); </script> </head> <body> <div id="3DSUI"></div> </body> </html>
Odată ce toate datele plătitorului și plății au fost colectate într-o sesiune, puteți iniția autentificarea invocând metoda initiateAuthentication()
. Aceasta determină versiunile de autentificare a plătitorilor 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 3DS2 ACS) cu scopul colectării de date suplimentare privitoare la plătitor, pentru a permite o metodă authenticatePayer()
ulterioară.
authenticatePayer()
, este recomandat să invocați metoda initiateAuthentication() 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.Puteți iniția autentificarea completând următoarele câmpuri obligatorii în metoda initiateAuthentication()
:
Dacă autentificarea 3DS a plătitorului este disponibilă, următoarele câmpuri sunt returnate în argumentul data
al funcției callback. În caz contrar, răspunsul va include o eroare.
data.restApiResponse
: Conține răspunsul brut din apelul API REST Initiate Authentication.data.correlationId
: Ultimul ID de corelare utilizat pentru efectuarea apelului API REST Authentication. Acesta permite corelarea răspunsului cu solicitarea.data.gatewayRecommendation
data.authenticationVersion
: Returnează varianta 3DS1 sau 3DS2 dacă autentificarea este disponibilă. Rețineți că scenariile cu soluție de rezervă se aplică numai piețelor reglementate corespunzător. Pentru mai multe informații despre scenariile cu soluție de rezervă, consultați Initiate Authentication – 3DS1 ca soluție de rezervă.Pentru a determina pasul următor, verificați recomandarea gateway-ului, furnizată în câmpul gatewayRecommendation. Rețineți că această recomandare se bazează numai pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau furnizorul de servicii de plată.
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 apelarea metodei authenticatePayer( ) . |
var optionalParams = { sourceOfFunds: { type: "CARD" }, order: { walletProvider: "MASTERPASS_ONLINE" } }; ThreeDS.initiateAuthentication({orderId}, {transactionId}, function (data) { if (data && data.error) { var error = data.error; //Something bad happened, the error value will match what is returned by the Authentication API console.error("error.code : ", error.code); console.error("error.msg : ", error.msg); console.error("error.result : ", error.result); console.error("error.status : ", error.status); } else { console.log("After Initiate 3DS ", data); //data.response will contain information like gatewayRecommendation, authentication version, etc. console.log("REST API raw response ", data.restApiResponse); console.log("Correlation Id", data.correlationId); console.log("Gateway Recommendation", data.gatewayRecommendation); console.log("HTML Redirect Code", data.htmlRedirectCode); console.log("Authentication Version", data.authenticationVersion); switch (data.gatewayRecommendation) { case "PROCEED": authenticatePayer();//merchant's method break; case "DO_NOT_PROCEED": displayReceipt(data);//merchant's method, you can offer the payer the option to try another payment method. break; } } }, optionalParams);
{ "authentication":{ "3ds2":{ "methodCompleted":false, "methodSupported":"SUPPORTED" }, "redirect":{ "customized":{ "3DS":{ "methodPostData":"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9xYTA0LmdhdGV3YXkubWFzdGVyY2FyZC5jb20vY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS80ZjNmMGQyMjM5NzQwODE2OWIwMWFiYzg2OTQyZTY5NzBmODA2M2M0MDU4ZjAzNjNlOTFlMmJiOTNkOTA0NzU3IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJhYWY5YjU5ZC0yZTA0LTRjZDUtOTQzOC01OGU4MGEzNzBiNWEifQ==", "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=\"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9xYTA0LmdhdGV3YXkubWFzdGVyY2FyZC5jb20vY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS80ZjNmMGQyMjM5NzQwODE2OWIwMWFiYzg2OTQyZTY5NzBmODA2M2M0MDU4ZjAzNjNlOTFlMmJiOTNkOTA0NzU3IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJhYWY5YjU5ZC0yZTA0LTRjZDUtOTQzOC01OGU4MGEzNzBiNWEifQ==\" /> </form> <script>document.getElementById(\"initiate3dsSimpleRedirectForm\").submit();</script> </div>", "version":"3DS2" }, "order":{ "currency":"AUD", "status":"AUTHENTICATION_INITIATED" }, "response":{ "gatewayCode":"AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation":"PROCEED_WITH_AUTHENTICATION" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx0008" } }, "type":"CARD" }, "transaction":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE" }, "version":"72" }
{ "authentication":{ "redirect":{ "customized":{ "3DS":{ "methodPostData":"e30=", "methodUrl":"<method_url>" } } }, "redirectHtml": "<script id=\"initiate-authentication-script\"></script>", "version": "3DS1" }, "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "EUR", "status": "AUTHENTICATION_INITIATED" }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "number": "512345xxxxxx0008" } }, "type": "CARD" }, "transaction": { "authenticationStatus": "AUTHENTICATION_AVAILABLE" }, "version": "72" }
Acolo unde răspunsul la operațiunea Initiate Authentication a indicat disponibilitatea autentificării (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE) pentru cardul RuPay, puteți invoca metoda authenticatePayer()
. Aceasta trebuie invocată atunci când plătitorul face clic pe butonul „Plătiți acum” de pe pagina de validare.
Trebuie să invocați metoda authenticatePayer()
completând următoarele câmpuri obligatorii:
orderId
: Aceeași valoare orderId cu cea a metodei initiateAuthentication()
anterioare.transactionId
: Aceeași valoare transactionId cu cea a metodei initiateAuthentication()
anterioare.callback
: Funcția callback.optionalParams
: (Opțional) argument cu orice câmpuri suplimentare ale solicitării API REST Authenticate Payer, cum ar fi billing și shipping.Următoarele câmpuri sunt returnate în argumentul data
al funcției callback:
data.restApiResponse
: Conține răspunsul brut din apelul API REST Authentication Payer.data.correlationId
: Ultimul ID de corelare utilizat pentru efectuarea apelului API REST Authentication Payer. Acesta permite corelarea răspunsului cu solicitarea.data.gatewayRecommendation
data.htmlRedirectCode
: Gateway-ul returnează întotdeauna acest câmp pentru inserarea în pagina afișată pentru plătitor.Pentru a determina pasul următor, verificați recomandarea gateway-ului, furnizată în câmpul gatewayRecommendation
returnat în funcția callback. Rețineți că această recomandare se bazează numai pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau furnizorul de servicii de plată.
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). |
Dacă gateway-ul recomandă PROCEED
, atunci lipiți conținutul câmpului htmlRedirectCode
din răspuns pe pagina afișată pentru plătitor.
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 de servicii de plată) 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 gatewayRecommendation
. Rețineți că această recomandare se bazează numai pe regulile 3DS de filtrare a tranzacțiilor, configurate de către dvs. sau furnizorul de servicii de plată.
gatewayRecommendation |
Pasul următor |
---|---|
DO_NOT_PROCEED | Nu continuați procesarea cardului, deoarece autentificarea este respinsă sau indisponibilă. 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 restApiResponse
depind de procesul utilizat (fluidizat sau de testare) și de modul de inițiere a solicitării de autentificare (authentication.channel).
Pentru solicitarea de autentificare 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 Operațiunile autentificate pe baza sesiunii.
Solicitarea trimisă de browserul plătitorului către site-ul dvs. web la finalizarea metodei authenticatePayer()
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. Consultați Integrări sesiuni de plată avansate.
var optionalParams = { fullScreenRedirect: true, billing: { address: { city: "London", country: "GBR" } } }; ThreeDS.authenticatePayer({orderId}, {transactionId}, function (data) { if (!data.error) { //data.response will contain all the response payload from the AUTHENTICATE_PAYER call. console.log("REST API response ", data.restApiResponse); console.log("HTML redirect code", data.htmlRedirectCode); displayReceipt(data); } }, optionalParams); function displayReceipt(apiResponse) { var responseBody = { "apiResponse": apiResponse }; var xhr = new XMLHttpRequest(); xhr.open('PUT', '3dsreceipt', true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = function () { if (xhr.readyState == XMLHttpRequest.DONE) { document.documentElement.innerHTML = this.response; } } xhr.send(JSON.stringify(responseBody)); }
{ "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 metodei authenticatePayer()
indică faptul că puteți continua plata (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:
orderId
utilizat în metodele initiateAuthentication()
și authenticatePayer()
.transactionId
utilizat în metodele initiateAuthentication()
și authenticatePayer()
. 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.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" }
Operațiunea Initiate Authentication este utilizată pentru a determina versiunile 3DS disponibile pentru dvs. în cazul unui anumit card, care pot depinde de:
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 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.redirect.html
: 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.redirect.html; 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": "A999999999", "methodCompleted": false, "methodSupported": "SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "customizedHtml": { "3ds2": { "methodPostData": "eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9kbDAzYXNwYWxsMDN2Lm1wZ3NkZXYubWFzdGVyY2FyZC5pbnQvY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS9mOGIzNjQ5ZDRiOWU3OTg4M2M0ODE4MmRjZmRkY2JjYTAxMTE3MTc0ZTkxODRiODAzM2NkMzg3NTQ4MjlhMTRlIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJjYTdjMTU0YS1jZTZkLTRkNjYtYTc4My02MjdmZTcyMjQ4ZTEifQ==", "methodUrl": "<method_url>" } }, "html": "<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=\"<method_url>" target=\"methodFrame\"> <input type=\"hidden\" name=\"threeDSMethodData\" value=\"eyJ0aHJlZURTTWV0aG9kTm90aWZpY2F0aW9uVVJMIjoiaHR0cHM6Ly9kbDAzYXNwYWxsMDN2Lm1wZ3NkZXYubWFzdGVyY2FyZC5pbnQvY2FsbGJhY2tJbnRlcmZhY2UvZ2F0ZXdheS9mOGIzNjQ5ZDRiOWU3OTg4M2M0ODE4MmRjZmRkY2JjYTAxMTE3MTc0ZTkxODRiODAzM2NkMzg3NTQ4MjlhMTRlIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJjYTdjMTU0YS1jZTZkLTRkNjYtYTc4My02MjdmZTcyMjQ4ZTEifQ==\" /> </form> <script id=\"initiate-authentication-script\"> var e=document.getElementById(\"initiate3dsSimpleRedirectForm\"); if (e) { e.submit(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "version": "3DS2" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-06-24T06:57:32.714Z", "currency": "USD", "id": "TEST4", "lastUpdatedTime": "2022-06-24T06:57:32.661Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "CREDIT", "number": "512345xxxxxx0008", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T06:57:32.661Z", "timeOfRecord": "2022-06-24T06:57:32.714Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
{ "authentication": { "3ds1": { "veResEnrolled": "Y" }, "acceptVersions": "3DS1,3DS2", "channel": "PAYER_BROWSER", "purpose": "PAYMENT_TRANSACTION", "redirect": { "html": "<script id=\"initiate-authentication-script\"></script>" }, "version": "3DS1" }, "correlationId": "test", "merchant": "TEST3DS12AUTH", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2022-06-24T07:00:51.195Z", "currency": "USD", "id": "TEST5", "lastUpdatedTime": "2022-06-24T07:00:51.126Z", "merchantCategoryCode": "1234", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "fundingMethod": "CREDIT", "number": "512345xxxxxx8246", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:00:51.126Z", "timeOfRecord": "2022-06-24T07:00:51.195Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
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ă 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.redirect.html
: 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.redirect.html; 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 furnizorul dvs. de servicii de plată) 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ă 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 î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.amount | Da |
authentication.redirect.html | Da |
authentication.time | 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": "a4d6ce7a-52ed-46c4-b1b8-0a64ffa3fdd8" }, "3ds2": { "3dsServerTransactionId": "cf976f0d-cb19-454f-a5b3-3cf09ae07e38", "acsTransactionId": "c8027c6a-94da-480d-9270-85098bc680d5", "directoryServerId": "A999999999", "dsTransactionId": "a4d6ce7a-52ed-46c4-b1b8-0a64ffa3fdd8", "methodSupported": "NOT_SUPPORTED", "protocolVersion": "2.1.0", "requestorId": "test40Field@S^2sfds2ID", "requestorName": "test40Field@S^2sfds2Name", "sdk": { "timeout": 400, "uiType": "TEXT" }, "transactionStatus": "C" }, "amount": 100.00, "method": "OUT_OF_BAND", "payerInteraction": "REQUIRED", "redirect": { "customizedHtml": { "3ds2": { "acsUrl": "<acs_url>", "cReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNmOTc2ZjBkLWNiMTktNDU0Zi1hNWIzLTNjZjA5YWUwN2UzOCJ9" } }, "domainName": "<acs_domain>", "html": "<div id=\"threedsChallengeRedirect\" xmlns=\"http://www.w3.org/1999/html\"style=\" height: 100vh\"> <form id =\"threedsChallengeRedirectForm\" method=\"POST\" action=\"<acs_url>" target=\"challengeFrame\"> <input type=\"hidden\" name=\"creq\" value=\"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImNmOTc2ZjBkLWNiMTktNDU0Zi1hNWIzLTNjZjA5YWUwN2UzOCJ9\" /> </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(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "time": "2022-06-24T07:04:34.836Z", "version": "3DS2" }, "correlationId": "test", "device": { "browser": "mozilla", "ipAddress": "127.0.0.1" }, "merchant": "TEST3DS12AUTH", "order": { "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "creationTime": "2022-06-24T07:03:43.780Z", "currency": "USD", "id": "TEST6", "lastUpdatedTime": "2022-06-24T07:04:34.795Z", "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": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "CREDIT", "number": "512345xxxxxx8212", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:04:34.795Z", "timeOfRecord": "2022-06-24T07:03:43.780Z", "transaction": { "acquirer": { "merchantId": "123456" }, "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
{ "authentication": { "3ds1": { "veResEnrolled": "Y" }, "amount": 100.00, "payerInteraction": "REQUIRED", "redirect": { "domainName": "<acs_domain>", "html": "<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=\"<acs_url>\" target=\"redirectTo3ds1Frame\"> <input type=\"hidden\" name=\"PaReq\" value=\"eAFVUctuwjAQvCPxD1HUG2rsmPDUYkSLaJH6UoEeuKXJNklFEnAcHn/fdQi09cHyzHrH41kYH9ONtUdVJHk2sl2H2xZmQR4mWTSyV8vZbd8ey2YDlrFCnC4wKBVKeMai8CO0kpB6uHD7XNgS3ibvuJNQq0kScwSwC6QmFcR+piX4we5u/iLdegGrCUhRzadSY6GBnc+Q+SlKs71+XQSAVSQEeZlpdZK83QV2AVCqjYy13hZDxg6Hg+MHKR6SMEJdOEGeAjMXgF3EyHZpfBX0rWMSytan6j6VD9/d/bpdfqx0PCha+7WaLXrRCJi5AaGvUQouBO8Kz+K9oesOPRdYxYOfGltytZhaNy7nDuf0vzMHW/PU5AyoZkp/KaB0FcV/kn2PSlcEeNzmGZIq5Xk9A/t1fv9oUg00pddxRdvrDKrVFx5FUxeMSkJxtQeczNYAmGll9egolWqwxPwbeLPxA6NgtIg=\" /> <input type=\"hidden\" name=\"TermUrl\" value=\"<callback_url>\" /> <input type=\"hidden\" name=\"MD\" value=\"\" /> </form> <script id=\"authenticate-payer-script\"> var e=document.getElementById(\"redirectTo3ds1Form\"); if (e) { e.submit(); if (e.parentNode !== null) { e.parentNode.removeChild(e); } } </script> </div>" }, "time": "2022-06-24T07:12:00.966Z", "version": "3DS1" }, "correlationId": "test", "device": { "browser": "mozilla", "ipAddress": "127.0.0.1" }, "merchant": "TEST3DS12AUTH", "order": { "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "creationTime": "2022-06-24T07:11:40.804Z", "currency": "USD", "id": "TEST7", "lastUpdatedTime": "2022-06-24T07:12:00.949Z", "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": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "CREDIT", "number": "512345xxxxxx8246", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-06-24T07:12:00.949Z", "timeOfRecord": "2022-06-24T07:11:40.804Z", "transaction": { "acquirer": { "merchantId": "123456" }, "amount": 100.00, "authenticationStatus": "AUTHENTICATION_PENDING", "currency": "USD", "id": "1", "type": "AUTHENTICATION" }, "version": "67" }
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ă 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.amount
: Acest câmp este opțional. Indică suma autentificării. Trebuie să completați acest câmp atunci când suma autentificării diferă de order.amount
. Consultați furnizorul de servicii de plată înainte de a completa acest câmp.authentication.time
: Acest câmp este opțional. Indică data și ora autentificării plătitorului. Consultați furnizorul de servicii de plată înainte de a completa acest câmp.Pentru întrebări frecvente generale și alte opțiuni 3DS, consultați pagina Întrebări frecvente despre autentificare.
Înainte de a începe lucrul în mediul real, trebuie să testați integrarea pentru a vă asigura de funcționarea corectă.