Autentificarea 3-D Secure
Autentificarea 3-D Secure (3DS) este concepută pentru a proteja achizițiile online împotriva fraudei cu cardul de credit, permițându-vă să autentificați plătitorul înainte de a trimite o tranzacție AUTHORIZE sau PAY. Caracteristica 3DS a gateway-ului și autentificarea în cadrul Mobile SDK sunt limitate doar la 3DS2. Dacă 3DS nu este disponibil, autentificarea nu continuă. Puteți, însă, continua cu plata dacă gateway-ul recomandă acest lucru. Pentru mai multe informații despre caracteristica 3DS a gateway-ului în general, consultați Autentificarea 3D Secure.
- Pentru a autentifica plătitorul:
- Utilizați serverul pentru a actualiza sesiunea cu toate detaliile relevante care pot facilita autentificarea.
- Solicitați SDK-ului să efectueze autentificarea.
- Interpretați rezultatele returnate de SDK.
Actualizarea sesiunii cu detalii de autentificare
Când efectuați autentificarea Mobile SDK (verificați identitatea unui deținător de card într-o aplicație mobilă), Mobile SDK colectează valorile dispozitivului pentru a le trimite către gateway împreună cu informațiile despre tranzacție.
Furnizați cât mai multe informații posibil despre plătitor și tranzacție pentru a mări probabilitatea ca autentificarea să aibă succes. Puteți adăuga câmpurile din următorul tabel la sesiunea dvs. cu o solicitare UPDATE SESSION.
Câmpuri opționale pentru UPDATE SESSION
| Câmp | Descriere |
|---|---|
order.merchantCategoryCode | Codul categoriei comerciantului. Această valoare este necesară numai dacă diferă de codul definit pentru legătura achizitor în profilul dvs. de comerciant. |
Obiectul billing.address | 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 | Adresa la care va fi expediată aceasta comandă. Este recomandat cu insistență să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil. |
Obiectul customer | Informațiile asociate cu contul plătitorului. Este recomandat cu insistență să îl includeți în solicitarea dvs. în măsura în care acest lucru este posibil. |
device definit în Referința API este relevant numai pentru plăți bazate pe browser. Nu îl utilizați pentru autentificarea plătitorilor pe dispozitive mobile.Câmpurile de mai sus ajută sistemul să determine dacă titularul cardului trebuie autentificat și cum trebuie autentificat acesta. În timpul autentificării, utilizatorul trece printr-unul dintre următoarele fluxuri de autentificare:
- Procesul fluidizat:
Serverul de control al accesului (ACS) a colectat suficiente informații despre deținătorul cardului pentru a-l autentifica. Nicio altă acțiune nu este necesară din partea utilizatorului.
- Fluxul de testare:
ACS solicită titularului cardului să efectueze un pas suplimentar de autentificare, respectiv să introducă o parolă de unică folosință, să se autentifice la banca emitentă sau o altă acțiune similară. Mobile SDK încorporat gestionează afișarea unei interfețe native a dispozitivului pentru această testare. Interfața cu utilizatorul pentru aceste ecrane poate fi personalizată prin trecerea câmpurilor de personalizare a interfeței cu utilizatorul în Mobile SDK în timpul inițializării.
Pentru mai multe informații, consultați Procesul de autentificare 3DS.
Efectuarea autentificării
Autentificarea plătitorului este considerată tranzacție separată pe gateway și, prin urmare, necesită un ID unic de tranzacție.
Dacă colectați o plată pentru o comandă:
- Puteți corela o plată și o tranzacție de autentificare folosind același ID de comandă pentru fiecare tranzacție (de exemplu, UUID).
- Fiecare tranzacție este afișată ca o tranzacție separată în Merchant Administration.
Pentru a începe procesul de autentificare în SDK, apelați funcția authenticate().
Exemplu de cod pentru iOS
let request = AuthenticationRequest (navController: navController,
apiVersion: apiVersion,
sessionId: sessionId,
orderId: orderId,
transactionId: authenticationTxnId)
AuthenticationHandler.shared.authenticate(request) { (response) in
// handle response
}
authenticationTxnId este un ID unic pentru această tranzacție, care distinge tranzacția de toate celelalte tranzacții din cadrul aceleiași comenzi. Când trimiteți solicitarea reală de tranzacție de plată (cum ar fi PAY), gateway-ul folosește acest ID pentru a căuta rezultatele autentificării care sunt stocate atunci când solicitați SDK să autentifice plătitorul. Gateway-ul transmite achizitorului rezultatele autentificării împreună cu solicitarea de tranzacție de plată.Exemplu de cod pentru Android
AuthenticationHandler.authenticate(activityContext, session, "your-auth- transaction-id", callback)
your-auth-transaction-id este un ID unic pentru această tranzacție, care distinge tranzacția de toate celelalte tranzacții din cadrul aceleiași comenzi. Când trimiteți solicitarea reală de tranzacție de plată (cum ar fi PAY), gateway-ul folosește acest ID pentru a căuta rezultatele autentificării care sunt stocate atunci când solicitați SDK să autentifice plătitorul. Gateway-ul transmite achizitorului rezultatele autentificării împreună cu solicitarea de tranzacție de plată.Interpretarea răspunsului
Funcția authenticate returnează un obiect AuthenticationResponse care conține:
- Informații importante despre rezultat
- Acțiunile efectuate în timpul operației.
Cel mai important câmp de verificat este response.recommendation. Poate conține următoarele valori:
- PROCEED: Puteți continua cu o plată sau o autorizare.
- DO_NOT_PROCEED: Ceva a eșuat în timpul operației de autentificare. Utilizați obiectul
AuthenticationErrorpentru a afla mai multe.
Din API-ul gateway-ului versiunea 70 și versiunile ulterioare, puteți obține următoarele erori:
AuthenticationError.recommendation_ResubmitWithAlternativePaymentDetails: Trebuie să solicitați plătitorului detalii alternative de plată – de exemplu, un card nou sau altă metodă de plată – și să retrimiteți solicitarea cu noile detalii.AuthenticationError.recommendation_AbandonOrder: Furnizorul de servicii de plată (PSP), schema sau emitentul vă solicită să abandonați comanda.AuthenticationError.recommendation_DoNotProceed: Gateway-ul respinge solicitarea și nu există nicio modalitate ca această tranzacție să reușească.
Dacă autentificarea eșuează, puteți examina și response.error pentru mai multe informații despre orice alte erori trimise de gateway.
Exemplu de cod pentru iOS
AuthenticationHandler.shared.authenticate(request) { (response) in
DispatchQueue.main.async {
switch response.recommendation {
case .doNotProceed:
if let error = response.error {
print ("SDK Error:\(error.localizedDescription)")
if let authError = error as? AuthenticationError,
authError ==
.recommendation_ResubmitWithAlternativePaymentDetails {
//"Authentication not successful, re-enter card details"
}
}
// "Authentication not successful"
case .proceed:
// Proceed to submit the payment, authorization etc
}
}
}
Exemplu de cod pentru Android
AuthenticationHandler.authenticate(activityContext, session, "your-auth-transaction-id") { response ->
when(response.recommendation) {
AuthenticationRecommendation.PROCEED -> {
// continue to payment/authorization
}
AuthenticationRecommendation.DO_NOT_PROCEED -> {
if (response.error !=null) {
if (response.error is AuthenticationError.RecommendationResubmitWithAlternativePaymentDetails) {
// "Authentication not successful, re-enter card details
}
} else {
// "Authentication not successful"
}
}
}
}