Autentificarea 3-D Secure
3-Domain Secure™ (3-D Secure sau 3DS) este un protocol de securitate care adaugă un nivel suplimentar de securitate la achizițiile online, solicitând deținătorilor de card să se autentifice cu emitentul cardului atunci când efectuează plăți. Ajută la prevenirea tranzacțiilor online neautorizate, reducând riscul de fraudă și poate proteja comerciantul împotriva rambursărilor dacă tranzacția este autentificată cu succes. Când un deținător de card efectuează o achiziție online, emitentul folosește serverul său de control al accesului (ACS) pentru a valida identitatea deținătorului cardului.
3DS, cunoscut și ca 3DS2 în American Express Payment Gateway, este cea mai recentă versiune a protocolului de securitate, concepută pentru a spori securitatea achizițiilor online, oferind în același timp finalizări de plată fără impedimente plătitorilor care sunt considerați cu risc scăzut de către ACS. ACS determină riscul folosind informațiile furnizate de comerciant, amprentele digitale din browser și interacțiunile anterioare cu plătitorul. ACS supune plătitorul unui test (de exemplu, introducerea unui cod PIN) numai dacă este necesară o verificare suplimentară pentru autentificarea plătitorului, furnizând astfel rate de schimb mărite. Schemele de autentificare acceptate includ Mastercard SecureCode™, Verified by Visa™, American Express SafeKey™, Diners Club/Discover ProtectBuy, JCB J/Secure, ITMX Local Switch EMVCo și mada secure.
Terminologie
Următorul tabel listează termenii cheie la care se face referire în documentația de integrare 3DS.
Termen | Descriere |
---|---|
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.
Acest API este utilizat cu metoda de integrare Hosted Session. |
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 | 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. |
Canal de autentificare | 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. |
Scopul autentificării | Scopul acțiunii de autentificare 3DS. De obicei, doriți fie să autentificați plătitorul pentru a procesa o plată pentru un anumit card, fie să procesați o autentificare de neplată, în care pur și simplu verificați un card nou pe care plătitorul dorește să îl stocheze în aplicația sau pe site-ul dvs. pentru plăți viitoare. |
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. |
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. |
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-ul de autentificare a plătitorului | 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. Acest API este utilizat cu metoda de integrare Web-Services API. |
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 Noțiuni de bază privind sesiunile. |
Autentificarea sesiunii | Autentificarea printr-o sesiune de plată. Această metodă de 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) de la serverul dvs. la serverul gateway-ului. |
Flux de autentificare 3DS
Diagrama de mai jos ilustrează procesul de autentificare pentru o plată în cazul căreia plătitorul este autentificat prin 3DS.
Procesul de autentificare pentru o autentificare efectuată cu succes este următorul:
- Un plătitor navighează pe site-ul dvs., selectează unul sau mai multe produse, continuă către pagina de plată și selectează ca metodă de plată un card care acceptă 3DS.
- Trimiteți solicitarea INITIATE AUTHENTICATION pentru a cere gateway-ului să verifice la schema cardului dacă cardul este înscris pentru 3DS.
- Dacă este disponibilă autentificarea 3DS a plătitorului, gateway-ul returnează detaliile de autentificare ale apelului de metodă ACS acceptat în răspuns.
- Trimiteți detaliile apelului pentru metoda ACS ca postare de formular într-un cadru iFrame ascuns, astfel încât ACS să poată iniția autentificarea și să colecteze date suplimentare despre plătitor.
- Trimiteți solicitarea AUTHENTICATE PAYER pentru a cere gateway-ului să efectueze autentificarea inițiată.
- Gateway-ul vă oferă detaliile de autentificare pe baza fluxului de autentificare:
- Proces fluidizat unde autentificarea este completă: Gateway-ul redirecționează plătitorul către site-ul dvs. web.
- Proces de testare unde este necesară interacțiunea plătitorului pentru a finaliza autentificarea: Dacă emitentul supune plătitorul unui test, aplicația va redirecționa browserul web al plătitorului către ACS, care afișează IU de autentificare. Emitentul returnează rezultatul autentificării către gateway. Gateway-ul redirecționează plătitorul direct către site-ul dvs. web.
- Trimiteți plata pentru procesare utilizând solicitarea AUTHORIZE sau PAY și includeți ID-ul tranzacției de autentificare 3DS în solicitare.
- Afișați plătitorului pagina de confirmare a comenzii.
authentication.redirect.html
, care ar trebui să fie inclus în browserul plătitorului printr-un iframe ascuns. Acest lucru ajută la minimizarea timpului de așteptare pentru plătitori atunci când primesc o eroare „SERVER_BUSY”. Adăugarea 3DS la integrarea dvs.
Cerințe preliminare
- Pentru a utiliza serviciul de autentificare 3DS al gateway-ului:
- Trebuie să fiți înregistrat la achizitorul dvs. pentru a utiliza 3DS.
- Profilul dvs. de comerciant de pe gateway trebuie să aibă activată cel puțin una dintre schemele 3DS pentru o versiune 3DS acceptată.
- Trebuie să utilizați API v57 sau o versiune ulterioară.
Moduri de autentificare 3DS
- Gateway-ul acceptă următoarele moduri de autentificare 3DS:
- Numai autentificare: Efectuați autentificarea 3DS folosind gateway-ul. Puteți alege să trimiteți plata (folosind detaliile de autentificare) într-o etapă ulterioară, folosind acest gateway sau un altul.
- Autentificarea și tranzacția de plată: Efectuați autentificarea 3DS folosind acest gateway și continuați cu trimiterea plății (folosind detaliile de autentificare) prin intermediul acestui gateway.
- Tranzacția de plată pre-autentificată: Efectuați autentificarea 3DS folosind un furnizor extern și trimiteți detaliile de autentificare atunci când trimiteți plata prin intermediul acestui gateway.
Opțiuni de integrare 3DS
Gateway-ul acceptă următoarele opțiuni de integrare pentru 3DS.
Metodă de integrare | Integrarea 3DS | Când să utilizați soluția | Modul de autentificare acceptat |
---|---|---|---|
Hosted Checkout | 3DS cu Hosted Checkout | Aceasta este cea mai ușoară opțiune de integrare. Dacă acceptați 3DS, autentificarea 3DS este gestionată automat de Hosted Payment Page în integrarea dvs. Hosted Checkout. |
|
Hosted Session | API JavaScript 3DS | Aceasta este o integrare JavaScript cu care puteți iniția autentificarea 3DS din pagina de plată a site-ului dvs. web. Utilizați această opțiune dacă doriți să permiteți plătitorului să trimită detaliile de plată direct către gateway, din browser. Pentru a iniția autentificarea 3DS și alte operațiuni 3DS direct din browserul plătitorului, 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. ID-ul de sesiune generat de gateway este apoi inclus în toate solicitările de autentificare inițiate de browser, în câmpul parolei (consultați Opțiuni de autentificare). |
|
Web-Services API | API-ul de autentificare a plătitorului | Aceasta este o opțiune de integrare pe partea serverului, care vă oferă controlul total asupra integrării, însă necesită cel mai înalt efort de integrare. Utilizați această opțiune dacă este necesar să personalizați interacțiunile prin API dintre browserul plătitorului și gateway. Trebuie să efectuați operațiunile necesare pentru gestionarea proceselor de integrare 3DS direct de la serverul dvs. de comerciant la serverul gateway-ului. API-ul de autentificare a plătitorului acceptă și sesiuni de plată (consultați Noțiuni de bază privind sesiunile). |
|
Integrarea mobilă | Încorporat în SDK | Dacă acceptați 3DS, puteți iniția autentificarea cu un apel de funcție, iar restul procesului este gestionat automat de SDK. |
|
Întrebări frecvente
Cum vizualizez detaliile de autentificare în Merchant Administration?
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.
Cum pot apela rezultatele autentificării 3DS?
Dacă doriți să apelați rezultatele autentificării în orice moment, utilizați operațiunea RETRIEVE TRANSACTION. Câmpurile utilizate numai în timpul autentificării, cum ar fi authentication.redirect.html
, nu rămân pe gateway și, prin urmare, nu vor fi returnate.
Cum trimit o solicitare de plată pre-autentificată?
Dacă ați folosit un MPI (plug-in comerciant) extern 3DS pentru a autentifica plătitorul, trebuie să transmiteți informații despre rezultatul autentificării în obiectul de autentificare al operațiunii AUTHORIZE sau PAY.
Deoarece starea tranzacției determină dacă anumite câmpuri v-au fost furnizate de către MPI 3DS extern, toate câmpurile sunt opționale. Cu toate acestea, dacă aveți datele, furnizați-le:
authentication.3ds.acsEci
Indicatorul de comerț electronic care a fost returnat în mesajul de răspuns de autentificare.
-
authentication.3ds.authenticationToken
Valoarea codificată base64 generată de emitentul cardului care v-a fost returnată în mesajul de răspuns de autentificare.
Rezultatul apelului la metoda ACS inițiat prin intermediul postării formularului nu este furnizat automat, iar aplicația dvs. trebuie să trimită solicitarea AUTHENTICATE PAYER pentru a obține un răspuns. -
authentication.3ds.transactionId
Un identificator unic al tranzacției, generat de gateway pentru autentificarea 3DS. Acest câmp corespunde cu identificatorul alocat de serverul de directoare al schemei.
-
authentication.3ds2.protocolVersion
Versiunea protocolului 3DS utilizată pentru a efectua autentificarea 3DS, în formatul specificat de EMVCo. De exemplu, 2.1.0.
-
authentication.3ds2.transactionStatus
Rezultatul autentificării plătitorului cu emitentul.
-
authentication.3ds2.statusReasonCode
Un cod care indică motivul pentru starea tranzacției, returnat în
authentication.3ds2.transactionStatus
. Acesta trebuie furnizat atunci cândauthentication.3ds2.transactionStatus
returneazăN
,U
sauR
. -
authentication.amount
Suma autentificării. Trebuie să completați acest câmp atunci când suma autentificării diferă de
order.amount
. Consultați-vă cu Your payment service provider (PSP) înainte de a utiliza acest câmp. -
authentication.time
Data și ora autentificării plătitorului. Consultați-vă cu PSP-ul dvs. înainte de a utiliza acest câmp.
Dacă sunteți un comerciant de comerț electronic cu o legătură achizitor mada din Regatul Arabiei Saudite și un plătitor complet autentificat prin 3DS în afara gateway-ului, trebuie să fiți integrat în API v76 sau o versiune ulterioară și să furnizați următoarele detalii de autentificare în operațiunea AUTHORIZE sau PAY pentru a trimite cu succes o tranzacție cu un card mada cu două branduri, un card mada cu un singur brand sau unul internațional:
-
authentication.3ds2.acsReference
Numărul de referință pe care EMVCo îl atribuie ACS-ului emitentului la aprobarea ACS. Acest câmp corespunde câmpului EMVCo
acsReferenceNumber
. -
authentication.3ds2.dsReference
Un număr de referință pe care EMVCo îl atribuie Directory Server (DS) după aprobarea DS. Acest câmp corespunde câmpului EMVCo dsReferenceNumber.
-
authentication.3ds2.acsTransactionId
Identificatorul unic al tranzacției pe care ACS îl atribuie pentru a identifica tranzacția 3DS.
-
authentication.time
Data și ora autentificării plătitorului. Acest câmp corespunde câmpului EMVCo
purchaseDate
. -
authentication.3ds.acsEci
Valoarea indicatorului de comerț electronic (ECI) pe care ACS-ul emitentului o oferă pentru a indica rezultatele încercării de autentificarea a plătitorului.
-
authentication.3ds.authenticationToken
Valoarea codificată base64 pe care o generează emitentul. Acest câmp corespunde valorii de autentificare.
-
authentication.3ds.transactionId
ID-ul de tranzacție. Acest câmp corespunde ID-ului tranzacției DS.
-
authentication.3ds2.protocolVersion
Versiunea protocolului 3DS care este utilizată pentru a efectua autentificarea 3DS. De exemplu, 2.1.0.
-
authentication.3ds2.transactionStatus
Starea tranzacției. Acest câmp corespunde câmpului EMVCo
transStatus
. -
authentication.3ds2.authenticationScheme
Schema de autentificare. Pentru tranzacțiile mada cu două branduri autentificate extern, trebuie să furnizați fie
MADA
,MASTERCARD
, fieVISA
pentru a specifica DS 3DS prin care tranzacția a fost autentificată. Pentru tranzacțiile mada cu brand unic autentificate extern, puteți furnizaMADA
sau puteți să nu completați acest câmp. Pentru alte carduri, puteți furniza schema de autentificare respectivă sau puteți să nu trimiteți acest câmp.
Cum puteți trimite o solicitare de autentificare fără plată?
Dacă doriți să efectuați autentificarea doar pentru a verifica identitatea plătitorului, fără procesarea unei plăți, trebuie să indicați scopul autentificării în solicitarea INITIATE AUTHENTICATION. De exemplu, dacă 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:
order.currency
Toate monedele acceptate de legăturile achizitor.authentication.purpose
- Contextul în care se solicită autentificarea plătitorului. Puteți specifica unul dintre următoarele elemente:
- ADD_CARD: Autentificarea efectuată înainte de stocarea cardului unui plătitor fie direct de către dvs., fie prin utilizarea funcției Tokenisation de pe gateway. O plată nu este procesată.
- MAINTAIN_CARD: Autentificarea efectuată înainte de actualizarea detaliilor cardului unui plătitor, stocate fie direct de către dvs., fie prin utilizarea funcției Tokenisation de pe gateway. O plată nu este procesată.
Dacă schema de autentificare nu acceptă scopul pe care l-ați solicitat, gateway-ul returnează AUTHENTICATION_NOT_SUPPORTED în câmpul de răspuns authenticationStatus. În mod implicit, gateway-ul setează acest câmp la PAYMENT_TRANSACTION pentru a permite autentificarea care va fi utilizată pentru o tranzacție de plată.
Cum să utilizați 3DS ca comerciant agregator?
Comercianții agregatori pot activa pe gateway utilizarea API-ului de autentificare a plătitorului 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 Agregator.
Cum sunt reprezentate interacțiunile 3DS pe gateway?
API-ul de autentificare plătitor înregistrează detaliile de autentificare a plătitorului folosind 3DS ca tranzacție AUTHENTICATION separată în cadrul comenzii. Pentru detalii despre tranzacțiile AUTHENTICATION, consultați lista de câmpuri de răspuns pentru operațiunea AUTHENTICATE PAYER.
Când apelați o comandă folosind operațiunea RETRIEVE ORDER sau primiți un răspuns Reporting API, acesta poate conține o tranzacție AUTHENTICATION suplimentară. De asemenea, dacă utilizați notificări Webhook, puteți primi o notificare suplimentară pentru tranzacția AUTHENTICATION.
Pot utiliza simboluri din rețea ca sursă de fonduri în autentificarea plătitorului?
Puteți utiliza simboluri din rețea pentru autentificarea plătitorului începând cu API v57. Pentru informații detaliate, consultați Crearea de simboluri de rețea.
Dacă PSP-ul dvs. v-a activat pentru Tokenisation de rețea, orice solicitare către gateway pentru un simbol de gateway încearcă, de asemenea, să genereze un simbol de rețea corespunzător pentru schemele activate, acolo unde acest lucru este acceptat de emitentul cardului. Gateway-ul încearcă, de asemenea, Tokenisation de rețea pentru orice card aplicabil deja stocat în depozitul de simboluri gateway. Solicitarea INITIATE AUTHENTICATION folosește simbolul de rețea, dacă este disponibil. În caz contrar, se utilizează Funding PAN (FPAN) stocat pentru simbolul gateway-ului. Acest model acceptă momentan doar simboluri MDES.
Pot utiliza simboluri de plată pentru dispozitive ca sursă de fonduri în autentificarea plătitorului?
Puteți utiliza simboluri ale plăților de pe dispozitiv pentru autentificarea plătitorului începând din API v55. Sunt acceptate numai simbolurile de plată obținute din SDK-ul Google Pay. Puteți furniza un simbol de plată criptat sau codul PAN obținut dintr-un simbol de plată decriptat pentru autentificarea plătitorului. Gateway-ul acceptă numai solicitările de autentificare care conțin un FPAN; cele care conțin coduri DPAN vor fi respinse. Pentru a furniza detaliile cardului prin simboluri de plată, completați câmpurile de mai jos:
-
order.walletProvider = GOOGLE_PAY
-
sourceOfFunds.provided.card.devicePayment.paymentToken
Simbolul criptat al plății obținut din SDK-ul Google Pay. Se aplică numai dacă simbolul de plată este decriptat de către gateway.
-
sourceOfFunds.provided.card.number
Google Pay JSON Key PAN. Se aplică doar dacă simbolul de plată este decriptat de către dvs.
Cum implementez integrările avansate ale sesiunilor 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 este parametrizată, permițându-vă să determinați rezultatul autentificării. Fiecare câmp 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 după cum urmează:
- Creați o sesiune utilizând operațiunea CREATE SESSION.
- Adăugați date relevante la ID-ul sesiunii (returnat în răspunsul CREATE SESSION) utilizând solicitarea UPDATE SESSION.
- Utilizați ID-ul de sesiune în solicitările INITIATE AUTHENTICATION și AUTHENTICATE PAYER.
- Redirecționarea browserului plătitorului către site-ul dvs. web conține detaliile de autentificare a plătitorului în câmpul
encryptedData
. Acesta este un obiect JSON criptat conținând datele de autentificare obținute în timpul procesului de autentificare. Acesta conține următoarele câmpuri:encryptedData.ciphertext
authentication.3ds.acsEci
authentication.3ds.authenticationToken
authentication.3ds.transactionId
authentication.3ds1.veResEnrolled
authentication.3ds1.paResStatus
authentication.3ds2.transactionStatus
authentication.3ds2.dsTransactionId
transaction.authenticationStatus
authentication.3ds2.statusReasonCode
sourceOfFunds.provided.card.number
sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.year
sourceOfFunds.token
order.id
transaction.id
encryptedData.nonce
encryptedData.tag
- Pentru a decripta conținutul returnat în câmpul
encryptedData.ciphertext
, utilizați valoarea din câmpulsession.aes256Key
(returnată în răspunsul CREATE SESSION) în modul GCM. Cheia codificată base64 este secretă și trebuie să fie cunoscută numai de dvs.
public final class SessionDataDecrypter { /** * The algorithm used for encryption/decryption */ private static final String SYMMETRIC_ALGORITHM = "AES/GCM/NoPadding"; /** * The algorithm to be associated with the secret key material */ private static final String SYMMETRIC_KEY_TYPE = "AES"; /** * The secret key associated with the session, as returned in the session.aes256Key in a Create Session response. */ private final byte[] key; /** * Constructs a new object with the given key. The key is Base64 encoded, as returned in the session.aes256Key * field in a Create Session response. This key must be kept secret, as it may be used to encrypt, decrypt and * authenticate data for that session. * * @param encodedKey Key to be used for decryption. */ public SessionDataDecrypter(String encodedKey) { key = Base64.getDecoder().decode(encodedKey); } /** * Performs decryption of the given ciphertext, using the key passed in the constructor and the associated nonce. * The tag is used to authenticate the ciphertext. * * @param ciphertext Encrypted and authenticated session data * @param nonce Nonce/Initialization vector associated with the ciphertext * @param tag Authentication tag * @return The decrypted session data * @throws AEADBadTagException if the data cannot be authenticated with the given tag * @throws InvalidKeyException if the key cannot be constructed properly. This may indicate that it has not been * correctly retrieved from the response field * @throws GeneralSecurityException other than {@link AEADBadTagException} and {@link InvalidKeyException}, should * not be thrown in a correctly set up environment */ public String decrypt(String ciphertext, String nonce, String tag) throws GeneralSecurityException { Key keySpec = new SecretKeySpec(key, SYMMETRIC_KEY_TYPE); // The Java crypto classes expect the ciphertext and tag to be a single input, so they need to be concatenated byte[] encryptedBytes = Base64.getDecoder().decode(ciphertext); byte[] tagBytes = Base64.getDecoder().decode(tag); byte[] input = new byte[encryptedBytes.length + tagBytes.length]; System.arraycopy(encryptedBytes, 0, input, 0, encryptedBytes.length); System.arraycopy(tagBytes, 0, input, encryptedBytes.length, tagBytes.length); // Configure the cipher with AES, using GCM parameter specifying the nonce/initialization vector byte[] iv = Base64.getDecoder().decode(nonce); GCMParameterSpec parameterSpec = new GCMParameterSpec(tagBytes.length * Byte.SIZE, iv); final Cipher decrypter = Cipher.getInstance(SYMMETRIC_ALGORITHM); decrypter.init(Cipher.DECRYPT_MODE, keySpec, parameterSpec); // Perform the decryption and return the value. byte[] decryptedBytes = decrypter.doFinal(input); return new String(decryptedBytes, StandardCharsets.UTF_8); } }
Ce pot face pentru a spori șansele unui traseu fără întreruperi?
Solicitarea AUTHENTICATE PAYER poate include 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 obiectul customer.account, ceea ce va permite ACS-ului emitentului să evalueze nivelul de risc asociat cu activitatea. În cazul plăților legitime, acest lucru ajută ACS să confirme că plătitorul este probabil titularul cardului.
- Plătitorul utilizează un cont existent?
customer.account.history.creationDate
- De când există contul respectiv?
-
customer.account.history.lastUpdated
-
customer.account.history.passwordLastChanged
-
- Care este frecvența cumpărăturilor plătitorului la dvs.?
-
customer.account.history.addCardAttempts
-
customer.account.history.annualActivity
-
customer.account.history.recentActivity
-
customer.account.history.shippingAddressDate
-
-
customer.account.history.issuerAuthentication.acsTransactionId
-
customer.account.history.issuerAuthentication.time
-
customer.account.history.issuerAuthentication.type
-
- Ați observat activitate suspectă (de exemplu, încercări eșuate de conectare) în cont?
-
customer.account.history.suspiciousActivity
-
customer.account.authentication.method
-
customer.account.authentication.time
-
Puteți, de asemenea, să furnizați următoarele câmpuri recomandate pentru fiecare schemă de carduri din solicitarea AUTHENTICATE PAYER. Această listă nu este definitivă și poate fi modificată.
Câmpuri recomandate pentru fiecare schemă de card în AUTHENTICATE PAYER
Câmp | Mastercard | Visa | American Express | Note |
---|---|---|---|---|
shipping.contact.email | - | - | Da | Necesar pentru calcularea riscului comerciantului |
shipping.method | - | - | Da | Necesar pentru calcularea riscului comerciantului |
order.valueTransfer.amount | - | - | Da | Necesar pentru calcularea riscului comerciantului. Se aplică numai cardurilor cadou |
order.valueTransfer.numberOfCards | - | - | Da | Necesar pentru calcularea riscului comerciantului. Se aplică numai cardurilor cadou. |
order.valueTransfer.currency | - | - | Da | Necesar pentru calcularea riscului comerciantului. Se aplică numai cardurilor cadou. |
order.supply.preorderAvailabilityDate | - | - | Da | Necesar pentru calcularea riscului comerciantului. |
order.supply.preorder | - | - | Da | Necesar pentru calcularea riscului comerciantului. |
order.supply.reorder | - | - | Da | Necesar pentru calcularea riscului comerciantului. |
order.valueTransfer.accountType | - | Da | - | Este impus de Visa și alte scheme pe anumite piețe (de ex., Brazilia). Nu se aplică dacă order.valueTransfer.accountType = NOT_A_TRANSFER . |
Cum pot determina starea autentificării?
Gateway-ul furnizează starea de autentificare în câmpul transaction.authenticationStatus
. Acest câmp poate returna una dintre următoarele valori, în funcție de etapa autentificării:
AUTHENTICATION_ATTEMPTED
S-a încercat autentificarea plătitorului și a fost obținută o dovadă a tentativei de autentificare.
AUTHENTICATION_AVAILABLE
Autentificarea plătitorului este disponibilă pentru metoda de plată furnizată.
AUTHENTICATION_FAILED
Plătitorul nu a fost autentificat. Nu continuați cu această tranzacție.
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ă.
Perioada de valabilitate a datelor de autentificare a plății poate depinde de cazul dvs. de utilizare. Contactați PSP-ul dacă aveți nevoie de clarificări.
Pentru a utiliza o tranzacție periodică cu autentificare, consultați Tranzacțiile cu acreditări stocate.
Cum să utilizați conversia valutară dinamică cu autentificarea plătitorului?
Înainte de a iniția autentificarea plătitorului, puteți obține o cotație de schimb Conversie valutară dinamică (DCC) de la furnizorul DCC prin trimiterea solicitării PAYMENT OPTIONS INQUIRY.
Dacă furnizorul DCC a făcut o ofertă și ați oferit această ofertă plătitorului, trebuie să indicați reacția plătitorului în solicitarea INITIATE AUTHENTICATION:
- Dacă plătitorul a acceptat oferta, utilizați:
currencyConversion.requestId
așa cum este returnat în răspunsul la PAYMENT OPTIONS INQUIRYcurrencyConversion.uptake = ACCEPTED
- Dacă plătitorul a refuzat oferta, utilizați:
currencyConversion.requestId
așa cum este returnat în răspunsul la PAYMENT OPTIONS INQUIRYcurrencyConversion.uptake = DECLINED
Dacă DCC nu este necesar pentru această tranzacție, trimiteți solicitarea INITIATE AUTHENTICATION cu currencyConversion.uptake = NOT_REQUIRED
.
Dacă sunteți configurat să utilizați DCC și nu furnizați currencyConversion.uptake
în solicitarea INITIATE AUTHENTICATION, răspunsul INITIATE AUTHENTICATION indică currencyConversion.uptake = NOT_REQUIRED
.
Dacă plătitorul acceptă oferta DCC, procesul de autentificare a plătitorului utilizează moneda plătitorului și suma plătitorului. În toate celelalte cazuri, procesul de autentificare a plătitorului utilizează valoarea comenzii și moneda comenzii.
Puteți utiliza informațiile DCC furnizate în solicitarea INITIATE AUTHENTICATION la solicitarea de plată ulterioară, făcând referire la tranzacția de autentificare (authentication.transactionId
). Informațiile DCC transmise în timpul autentificării plătitorului se aplică tranzacției dvs. de plată.
De asemenea, dacă doriți, puteți trimite aceleași informații DCC în tranzacțiile de plată ulterioare ca și în autentificare. Cu toate acestea, dacă tranzacția de plată ulterioară se referă la tranzacția de autentificare și conține informații DCC care diferă de autentificare, tranzacția de plată este respinsă.
authentication.purpose = REFRESH_AUTHENTICATION
).