3DS cu API-ul de autentificare plătitor
Acest ghid prezintă toți pașii care sunt necesari pentru a adăuga 3DS la integrarea Mastercard Gateway folosind API de autentificare a plătitorului, inclusiv cum să utilizați rezultatul autentificării pentru a procesa o plată.
Pentru a vedea exemple de solicitări și răspunsuri API utilizate în fluxul 3DS cu API-ul de autentificare a plătitorului, descărcați colecția Postman.
După ce ați finalizat integrarea, vedeți Testarea integrării 3DS pentru a o testa.
- Pasul 1: Inițierea autentificării
- Pasul 2: Autentificarea plătitorului
- Pasul 3: Utilizarea rezultatului autentificării într-o operațiune de plată
Cerințe preliminare
Ca o condiție prealabilă pentru această implementare, ar trebui să aveți implementată integrarea Direct Payment de bază.
Pasul 1: Inițierea autentificării
Operația Initiate Authentication
este utilizată pentru a determina versiunile 3DS disponibile pentru un anumit card, pe baza următoarelor:
- versiunile 3DS configurate în profilul dvs. de comerciant.
- tipul cardului.
- preferințele indicate în solicitare.
- rezultatul solicitărilor trimise de gateway către furnizorii de autentificare relevanți pentru a verifica disponibilitatea/compatibilitatea cardului respectiv și
- regulile de filtrare 3DS a tranzacțiilor de pe gateway, configurate de către dvs. sau your payment service provider (PSP).
Funcționalitatea 3DS a gateway-ului acceptă numai 3DS2.
Operațiunea permite, de asemenea, efectuarea oricăror activități în fundal, de ex., un apel prin metoda ACS, cu scopul colectării de date suplimentare privitoare la plătitor, pentru a permite o operație Authenticate Payer
ulterioară.
Solicitarea Initiate Authentication
Puteți iniția autentificarea completând următoarele câmpuri în solicitarea Initiate Authentication:
Tabel: Câmpurile pentru solicitarea Initiate Authentication
Câmp | Obligatoriu/Opțional | Descriere |
---|---|---|
session.id sau sourceOfFunds.provided.card.* sau sourceOfFunds.token |
Obligatoriu | Detaliile cardului utilizat pentru plată. De asemenea, 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, vedeți Întrebări frecvente. |
order.currency |
Obligatoriu | Moneda comenzii. |
transaction.id |
Obligatoriu | 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 | Scopul autentificării. 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ă. Dacă stabiliți un acord de plată și nu procesați o plată împreună cu acesta, introduceți ADD_CARD ca scop al autentificării. Pentru mai multe informații, consultați Cum puteți trimite o solicitare de autentificare fără plată? Pentru o listă detaliată a cazurilor de utilizare legate de autentificarea 3D Secure, consultați Plăți inițiate de posesorul cardului cu 3D Secure . |
authentication.acceptVersions |
Opțional | Versiunile 3DS pe care le acceptați pentru această plată. Dacă nu specificați o versiune, 3DS2 este acceptat. Gateway-ul utilizează 3DS2, dacă această opțiune este acceptată de emitent și de card. Dacă 3DS2 nu este disponibil, autentificarea nu continuă. |
order.merchantCategoryCode |
Opțional | Codul categoriei comerciantului. Furnizați codul de categorie comerciant dacă doriți să suprareglați valoarea implicită configurată pentru legătura dvs. de achizitor. |
Dacă trimiteți solicitarea Authenticate Payer înainte de finalizarea apelului prin metoda ACS, solicitarea Authenticate Payer continuă, dar răspunsul Authenticate Payer conține autentificare.3ds2.methodCompleted = false. Dacă ACS al emitentului a finalizat cu succes apelul de metodă pentru a obține informații suplimentare despre browserul plătitorului, câmpul authentication.3ds2.methodCompleted din răspunsul Authenticate Payer va avea valoarea true.
Inițierea răspunsului de autentificare
Gateway-ul returnează următoarele câmpuri-cheie în răspunsul la operațiunea Initiate Authentication:
authentication.version
: Dacă autentificarea 3DS este disponibilă pentru plătitor, se returnează 3DS2. În caz contrar, se returneazăNONE
.authentication.3ds2.methodSupported
: Dacă versiunea 3DS2 este disponibilă, iar ACS-ul emitentului acceptă apelurile de metodă, câmpul are valoarea SUPPORTED. Apelul de metodă este utilizat de ACS pentru a colecta date 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.- DO_NOT_PROCEED: Nu continuați cu autentificarea 3DS pentru acest card, dar este posibil să doriți să continuați cu plata fără datele 3DS sau 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.
- RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS: Solicitați plătitorului detalii alternative de plată. De exemplu, un card nou sau o altă metodă de plată și retrimiterea solicitării cu noile detalii. Nu retrimiteți aceeași solicitare. Acest lucru este valabil începând cu API versiunea 70.
authentication.redirect.html
: Introduceți conținutul acestui câmp în pagina afișată plătitorului, dacă authentication.3ds2.methodSupported = SUPPORTED. Î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://testpg.mpgs.axisbank.com/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" }
Pasul 2: Autentificarea plătitorului
Dacă răspunsul Initiate Authentication a indicat că autentificarea este disponibilă (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE) și când toate datele plătitorului și ale plății sunt obținute, trimiteți solicitarea de autentificare a plătitorului când plătitorul dă clic pe butonul Plătiți acum de pe pagina de validare.
Solicitarea Authenticate Payer
Trimiteți această operațiune completând următoarele câmpuri.
Câmpurile solicitării Authenticate Payer
Câmp | Obligatoriu/Opțional | Descriere |
---|---|---|
session.id sau sourceOfFunds.provided.card.* sau sourceOfFunds.token |
Obligatoriu | Detaliile cardului utilizat pentru plată. Folosiți aceleași detalii ca în precedenta operațiune INITIATE AUTHENTICATION . |
order.amount |
Obligatoriu | Valoarea totală a comenzii. |
transaction.id |
Obligatoriu | ID-ul de tranzacție. Folosiți aceleași detalii transaction.id ca în operațiunea Initiate Authentication precedentă. |
order.id |
Obligatoriu | ID comandă. Aceeași valoare order.id cu cea din operațiunea Initiate Authentication precedentă. |
device.ipAddress |
Opțional | Este necesar dacă authentication.channel=PAYER_BROWSER, cu condiția de a fi exclus dacă acest lucru este necesar pentru respectarea legislației locale. Necesar dacă acceptați autentificări ITMX Local Switch EMVCo. Autentificările EMV 3DS acceptă adrese IPv4 și IPv6 din versiunea API 79. IPv6 este utilizat numai în autentificarea EMV 3DS și în nicio operațiune ulterioară Authorize, Pay sau alte operațiuni. |
sourceOfFunds.provided.card.nameOnCard |
Opțional | Numele de pe card. Necesar dacă acceptați autentificări ITMX Local Switch EMVCo. |
sourceOfFunds.provided.card.number |
Opțional | Număr card. Necesar dacă acceptați autentificări ITMX Local Switch EMVCo. |
sourceOfFunds.provided.card.expiry |
Opțional | Detalii despre expirarea cardului. Necesar dacă acceptați autentificări ITMX Local Switch EMVCo. |
authentication.redirectResponseUrl |
Obligatoriu | Adresa URL către care doriți să redirecționați plătitorul după finalizarea procesului de autentificare a plătitorului. Nu este necesar să furnizați această adresă URL dacă sunteți sigur că nu există nicio interacțiune cu plătitorul. |
device.browser |
Opțional | Antetul Utilizator-Agent al browserului plătitorului. Necesar dacă este authentication.channel = PAYER_BROWSER . |
Obiectul device.browserDetails |
Opțional | Detaliile browserului. Necesar dacă este authentication.channel = PAYER_BROWSER . |
Obiectul billing.address object |
Opțional | Adresa de facturare a plătitorului. Este recomandat cu insistență să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil. |
Obiectul shipping.address |
Opțional | Adresa de livrare a plătitorului. Este recomandat cu insistență să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil. |
Obiectul customer |
Opțional | Detaliile plătitorului. Este recomandat cu insistență să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil. |
Răspunsul Authenticate Payer
Câmpurile returnate în răspunsul AUTHENTICATE PAYER
depind de următoarele:
- Flux fluidizat sau flux cu testare.
- Cum este inițiată solicitarea de autentificare (authentication.channel).
- Mecanismul de autentificare pentru solicitare, sesiune, certificat sau 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 Noțiuni de bază privind sesiunile. Pentru câmpurile returnate pentru o solicitare autentificată prin certificat/parolă, consultați Câmpurile de răspuns pentru o solicitare autentificată cu certificat/parolă.
Gateway-ul returnează următoarele câmpuri cheie în răspunsul AUTHENTICATE PAYER
:
transaction.authenticationStatus
:Detalii despre starea de autentificare.response.gatewayRecommendation
: Recomandare dacă trebuie să continuați sau nu cu o tranzacție financiară, pe baza regulilor de filtrare a tranzacțiilor 3DS configurate de dvs. sau de PSP-ul dvs.:- DO_NOT_PROCEED: Nu continuați procesarea cardului, deoarece autentificarea este respinsă sau indisponibilă. Cu toate acestea, puteți trece la plata fără datele 3DS sau puteți oferi plătitorului opțiunea de a încerca o altă metodă de plată.
- PROCEED: Puteți trece la finalizarea procesului de autentificare, cunoscut și sub numele de flux cu testare, sau puteți continua să finalizați plata, cunoscut și sub numele de flux fluidizat.
- DO_NOT_PROCEED_ABANDON_ORDER: Nu trimiteți din nou aceeași solicitare. Furnizorul de servicii de plată, schema sau emitentul vă solicită să abandonați comanda. Această recomandare este valabilă începând cu versiunea API 70.
- RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS: Solicitați plătitorului detalii alternative de plată. De exemplu, un card nou sau o altă metodă de plată și retrimiterea solicitării cu noile detalii. Nu retrimiteți aceeași solicitare. Această recomandare este valabilă începând cu versiunea API 70.
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)
Gateway-ul vă recomandă să continuați:
- Dacă ACS a selectat un flux fluidizat pentru plătitor, acesta redirecționează browserul plătitorului înapoi către site-ul dvs. web și puteți trece la pasul 3 pentru a trimite o altă plată către gateway. Gateway-ul obține datele de autentificare legate de plată și se asigură că plățile sunt procesate numai dacă toate regulile de filtrare a tranzacțiilor 3DS, configurate de dvs. sau de PSP-ul dvs., au fost satisfăcute.
- Dacă ACS a selectat un flux cu testare pentru plătitor, redirecționați plătitorul către ACS utilizând câmpul
authentication.redirect.html
indicat în răspuns. După finalizarea provocării, ACS redirecționează plătitorul înapoi către site-ul dvs. web și declanșează un apel invers care conține câmpurile orderId, transactionId, response.gatewayRecommendation și result. Determinați rezultatul autentificării pe baza valorii returnate în câmpulresponse.gatewayRecommendation
. Se aplică aceleași reguli ca cele descrise mai sus pentru răspunsulAUTHENTICATE PAYER
. Dacă recomandarea este PROCEED, continuați cu pasul 3.
Nu trebuie să vă bazați pe datele returnate în browser pentru a determina următorul pas de procesare. Asigurați-vă că fie gestionați răspunsul la autentificarea plătitorului pe serverul dvs., fie efectuați o operațiune de recuperare a tranzacției de pe server pentru a vă asigura că răspunsul are succes.
Câmpuri de răspuns pentru o solicitare de autentificare cu certificat/parolă
Următorul tabel listează câmpurile AUTHENTICATE PAYER
din răspuns returnate pentru o solicitare autentificată prin certificat/parolă, adică trimisă cu un ID de comerciant și o parolă API de pe serverul dvs., nu cu un ID de sesiune de pe site-ul dvs. web sau din browserul plătitorului. Pentru mai multe informații, consultați Întrebări frecvente.
authentication.3ds.authenticationToken
nu este furnizat dacă se utilizează un flux fluidizat.Tabel: Câmpuri de răspuns pentru o solicitare de autentificare cu certificat/parolă
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.protocolVersion | * |
authentication.amount | Da |
authentication.redirect.html | Da |
authentication.time | Da |
response.gatewayRecommendation | Da |
transaction.type | Da |
version | Da |
timeOfRecord | Da |
result | Da |
response.debugInformation | * |
Câmpurile răspunsului Authenticate Payer
Câmpurile returnate în răspunsul Authenticate Payer depind de:
- Fluxul efectiv, adică fluidizat sau cu testare.
- Cum a fost inițiată solicitarea de autentificare (authentication.channel)
- Mecanismul de autentificare pentru solicitare, cum ar fi sesiunea, certificatul sau parola.
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.amount | Da |
authentication.redirect.html | Da |
authentication.time | Da |
response.gatewayRecommendation | Da |
transaction.type | Da |
version | Da |
timeOfRecord | Da |
result | Da |
response.debugInformation | * |
Exemplu de solicitare Authenticate Payer
URL | https://testpg.mpgs.axisbank.com/api/rest/version/<version>/merchant/<merchant_ID>/order/<order_ID>/transaction/<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" }
Exemplu de răspuns de autentificare a plătitorului – flux cu testare
{ "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" }
Pasul 3: Utilizarea rezultatului autentificării într-o plată
Când rezultatul operațiunii AUTHENTICATE PAYER
indică faptul că puteți continua cu plata response.gatewayRecommendation=PROCEED
, puteți iniția o operațiune Authorize sau PAY. În plus față de câmpurile standard, trebuie să completați următoarele câmpuri:
order.id
: Utilizați acelașiorder.id
pe care l-ați furnizat în operațiunileINITIATE AUTHENTICATION
șiAUTHENTICATE PAYER
.authentication.transactionId
: Utilizați acelașitransaction.id
pe care l-ați furnizat în operațiunileINITIATE AUTHENTICATION
șiAUTHENTICATE PAYER
. Nu trebuie să includeți niciunul dintre câmpurile din obiectulauthentication
, deoarece gateway-ul foloseșteauthentication.transactionId
pentru a căuta rezultatele de autentificare pe care le-a stocat atunci când i-ați cerut să efectueze autentificarea. Gateway-ul transmite achizitorului informațiile solicitate.
Exemplu de solicitare PAY
URL | https://testpg.mpgs.axisbank.com/api/rest/version/<version>/merchant/<merchant_ID>/order/<order_ID>/transaction/<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>" } }
Exemplu de răspuns PAY
{ "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" }
Întrebări frecvente
Pot utiliza API-ul de autentificare a plătitorului ca API pe partea clientului?
Puteți utiliza API-ul de autentificare a plătitorului ca API pe partea serverului sau API pe partea clientului pe site-ul dvs. web sau în browserul plătitorului.
- API pe partea clientului: Trebuie să stabiliți mai întâi un canal de autentificare prin care serverul comerciantului trebuie să comunice cu serverul gateway-ului pentru crearea sesiunii pe gateway. Odată ce sesiunea este creată, o puteți utiliza pentru a autentifica toate operațiunile API ulterioare necesare pentru gestionarea proceselor de integrare 3DS direct din browser, folosind API-ul JavaScript 3DS sau propria dvs. bibliotecă.
- API pe partea serverului: Trebuie să efectuați toate operațiunile necesare pentru gestionarea proceselor de integrare 3DS direct de la serverul dvs. de comerciant la serverul gateway-ului. Puteți susține toate modurile de tranzacție pentru autentificare prin API-ul Autentificare plătitor.
- În modul Numai autentificare, utilizați operațiunile
INITIATE AUTHENTICATION
șiAUTHENTICATE PAYER
. Numai autentificare: Efectuați operațiunile Initiate Authentication și Authenticate Payer. - În modul de autentificare și tranzacție de plată, utilizați operațiunile
INITIATE AUTHENTICATION
,AUTHENTICATE PAYER
și AUTHORIZE/PAY. - În modul Tranzacție de plată pre-autentificată, utilizați operațiunile AUTHORIZE/PAY folosind detaliile de autentificare de la un furnizor extern.
- În modul Numai autentificare, utilizați operațiunile
Pentru mai multe informații despre întrebările generale frecvente 3-D Secure, consultați Întrebări frecvente.