- Linee guida per l'integrazione
- Funzionalità supportate (sicurezza)
- Autenticazione 3-D Secure
- Implementazione di un'integrazione 3DS utilizzando l'API JavaScript 3DS
Implementazione di un'integrazione 3DS utilizzando l'API JavaScript 3DS
Questa guida descrive tutti i passaggi necessari per aggiungere 3DS all'integrazione del gateway utilizzando l'API 3DS JavaScript (JS) e come utilizzare il risultato dell'autenticazione per elaborare un pagamento.
- Passaggio 1: Creazione e aggiornamento della sessione
- Passaggio 2: Inizializzazione dell'API
- Passaggio 3: Initiate Authentication
- Passaggio 4: Authenticate Payer
- Passaggio 5: Uso del risultato dell'autenticazione in un'operazione di pagamento
Passaggio 1: Creazione e aggiornamento della sessione
JS 3DS utilizza l'autenticazione basata sulla sessione. Il primo passaggio consiste nella creazione di una sessione, che è quindi possibile aggiornare con i campi e i valori delle richieste che si desidera archiviare nella sessione.
È possibile creare una sessione utilizzando la chiamata Create Session. Si tratta di una chiamata API lato server ed è un prerequisito per l'integrazione con l'API JS. Vengono restituiti i seguenti campi:
session.id
: un identificativo di sessione univoco che è necessario fornire nelle richieste successive per fare riferimento al contenuto della sessione.session.authenticationLimit
: Il limite al numero di richieste di transazione che il browser del pagante può inviare. È possibile fornire il valore nella richiesta o utilizzare il valore predefinito del gateway. Per impostazione predefinita, il gateway lo imposta su 5, ma è possibile fornire un valore fino a 25. Questo limite impedisce agli utenti malintenzionati di utilizzare la richiesta di autenticazione come potenziale attacco di carding e di eseguire attacchi Denial of Service (DoS) sul sito Web dell'esercente inviando di un elevato numero di transazioni (potenzialmente fatturabili).
Tenere presente che qualsiasi tentativo di autenticazione avviato verrà verificato rispetto al limite di autenticazione.session.aes256Key
: la chiave che può essere utilizzata per decrittografare i dati sensibili inviati al sito Web tramite il browser o il dispositivo mobile del pagante.session.version
: è possibile utilizzare questo campo per implementare il blocco ottimistico del contenuto della sessione.session.updateStatus
: un riepilogo del risultato dell'ultimo tentativo di modificare la sessione.
È possibile aggiungere o aggiornare i campi in una sessione utilizzando la chiamata Update Session. Consente di aggiungere dati di pagamento e del pagante a una sessione che possono successivamente diventare l'input per determinare il rischio associato a un pagante in un'operazione di autenticazione. In una sessione sono richiesti i seguenti campi:
Parametro | Esistenza | Descrizione |
---|---|---|
session.id o sourceOfFunds.provided.card.* oppure sourceOfFunds.token : |
Obbligatorio | i dettagli della carta usata per il pagamento. Tenere presente che è anche possibile usare token di rete e token di pagamento tramite dispositivo come origine di fondi nell'autenticazione del pagante. Per ulteriori informazioni, vedere le Domande frequenti. |
order.amount |
Obbligatorio | l'importo totale dell'ordine. |
order.currency |
Obbligatorio | la valuta dell'ordine. |
transaction.id |
Obbligatorio | un identificativo univoco per l'autenticazione di questo pagamento. |
order.id |
Obbligatorio | un identificativo univoco per questo ordine. |
authentication.channel |
Obbligatorio | il canale in cui viene avviata la richiesta di autenticazione. È possibile specificare uno dei seguenti elementi:
|
authentication.redirectResponseUrl |
Facoltativo | l'URL a cui si desidera reindirizzare il pagante dopo aver completato il processo Authenticate Payer. È necessario fornire questo URL, a meno che non si sia certi che non vi sarà alcuna interazione con il pagante. |
authentication.purpose |
Facoltativo | Per impostazione predefinita, questo campo è impostato su "PAYMENT_TRANSACTION" per indicare che l'autenticazione deve essere eseguita durante l'elaborazione di un pagamento con carta. Tuttavia, è possibile specificare uno scopo diverso per indicare l'autenticazione di mancato pagamento. Vedere Invia una richiesta di autenticazione di mancato pagamento. |
authentication.acceptVersions |
Facoltativo | le versioni 3DS che verranno accettate per questo pagamento. Se non si specifica una versione, verranno accettati sia 3DS1 che 3DS2. Il gateway utilizza 3DS2 (se supportato dall'issuer e dalla carta) e ricorre a 3DS1 solo se 3DS2 non è disponibile. Se entrambi non sono disponibili, l'autenticazione non avrà luogo. Tenere presente che gli scenari di fallback si applicheranno solo ai mercati con un'estensione 3DS1. |
order.merchantCategoryCode |
Facoltativo | Fornire il codice categoria dell'esercente se si desidera sovrascrivere il valore predefinito configurato sul collegamento all'acquirer. |
Passaggio 2: Inizializzazione dell'API
Fare riferimento all'API JS 3DS (threeDS.js
) dai server del gateway. Questo posizionerà un oggetto ThreeDS
nella finestra/spazio dei nomi globale.
Dopo aver creato una sessione, inizializzare l'API utilizzando il metodo configure( )
. Questo metodo deve essere chiamato durante il caricamento della pagina o quando il DOM è pronto. Dovrebbe essere chiamato solo una volta per il caricamento della pagina. Dopo aver chiamato questo metodo, JS 3DS fornirà i valori di configurazione come variabili del membro.
È possibile inizializzare l'API JS 3DS richiamando il metodo configure (), con i seguenti campi obbligatori come argomenti in un oggetto mappa:
merchantId
: il proprio ID esercente sul gateway.sessionId
: l'ID sessione creato utilizzando la chiamata Create Session.containerId
: L'ID <div> nel proprio html, dove l'API inietterà un iframe nascosto.callback
: Una funzione che verrà invocata dopo l'inizializzazione dell'API.configuration
: Valore JSON che supporta elementi di dati come userLanguage (opzionale), versione dell'API REST (wsVersion).
<html> <head> <script src="https://eu-gateway.mastercard.com/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>
Passaggio 3: Initiate Authentication
Una volta raccolti tutti i dati del pagante e di pagamento in una sessione, è possibile avviare l'autenticazione invocando il metodo initiateAuthentication()
. Determina le versioni dell'autenticazione del pagante disponibili per una determinata carta di credito, che si baseranno su quanto segue:
- le versioni 3DS configurate sul proprio profilo dell'esercente
- il tipo di carta
- preferenze indicate nella richiesta
- la versione di 3DS in cui è stata registrata la carta e
- le regole di filtro transazioni 3DS configurate dall'utente o dal your payment service provider.
L'operazione consente inoltre di eseguire qualsiasi attività in background (come una chiamata ACS 3DS2) per scopi quali la raccolta di ulteriori dati del pagante per supportare un successivo metodo authenticatePayer()
.
authenticatePayer()
, si consiglia di richiamare il metodo initiateAuthentication () non appena possibile nel processo di checkout e di agire immediatamente in base alla risposta. Ciò avviene in genere quando il pagante completa l'inserimento del proprio numero di carta di credito nella pagina di pagamento, ad esempio l'evento "onBlur" nel campo di immissione del numero della carta o quando seleziona una carta tra quelle registrate associate al proprio account, se il sito web dell'esercente dispone di funzionalità carta su file. Attendere almeno dieci secondi per il completamento della chiamata al metodo ACS.È possibile avviare l'autenticazione fornendo i seguenti campi obbligatori nel metodo initiateAuthentication()
:
- transactionId: l'identificativo univoco per l'autenticazione di questo pagamento.
- ID ordine: l'identificativo univoco per questo ordine.
- callback: la funzione di callback.
- optionalParams: argomento (facoltativo) con eventuali campi di richiesta aggiuntivi API REST Initiate Authentication, come correlationId.
Se l'autenticazione 3DS del pagante è disponibile, nell'argomento data
della funzione di callback vengono restituiti i seguenti campi. In caso contrario, la risposta includerà un errore.
data.restApiResponse
: Contiene una risposta non elaborata dalla chiamata API REST Initiate Authentication.data.correlationId
: L'ultimo ID di correlazione utilizzato per effettuare la chiamata API REST Initiate Authentication. Consente di abbinare la risposta alla richiesta.data.gatewayRecommendation
data.authenticationVersion
: Restituisce 3DS1 o 3DS2 se è disponibile l'autenticazione. Tenere presente che gli scenari di fallback si applicheranno solo ai mercati con un'estensione 3DS1.
Per determinare il passaggio successivo, controllare la raccomandazione del gateway fornita nel campo gatewayRecommendation. Nota: tale raccomandazione è basata solo sulle regole di filtro transazioni 3DS configurate dall'esercente o dal your payment service provider.
gatewayRecommendation |
Passaggio successivo |
---|---|
PROCEED | È possibile procedere all'autenticazione del pagante usando la chiamata con metodo authenticatePayer( ) . |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Chiedere al pagante dettagli di pagamento alternativi (ad esempio, una nuova carta o un'altra modalità di pagamento) e inviare nuovamente la richiesta con i nuovi dettagli. Non inviare nuovamente la stessa richiesta. |
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 "RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS": tryOtherPayment();//Card does not support 3DS and transaction filtering rules require 3DS on this transaction: Ask the payer to select a different 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" }, "result":"SUCCESS", "sourceOfFunds":{ "provided":{ "card":{ "number":"512345xxxxxx0008" } }, "type":"CARD" }, "transaction":{ "authenticationStatus":"AUTHENTICATION_AVAILABLE" }, "version":"72" }
Passaggio 4: Authenticate Payer
Se la risposta Initiate Authentication ha indicato che l'autenticazione è disponibile (transaction.authenticationStatus=AUTHENTICATION_AVAILABLE), è possibile invocare il metodo authenticatePayer()
. L'esercente dovrebbe richiamarla quando il pagante fa clic sul pulsante "Paga adesso" nella pagina di checkout.
È necessario invocare il metodo authenticatePayer()
fornendo i seguenti campi obbligatori:
orderId
: lo stesso orderId del metodoinitiateAuthentication()
che lo ha preceduto.transactionId
: lo stesso transactionId del metodoinitiateAuthentication()
che lo ha preceduto.callback
: la funzione di callback.optionalParams
: Argomento (facoltativo) con eventuali campi di richiesta API REST aggiuntivi Authenticate Payer come fatturazione e spedizione.
I seguenti campi sono restituiti nell'argomento data
della funzione di callback:
data.restApiResponse
: contiene una risposta non elaborata dalla chiamata API REST Authenticate Payerdata.correlationId
: l'ultimo ID di correlazione utilizzato per effettuare la chiamata API REST Authenticate Payer. Consente di abbinare la risposta alla richiesta.data.gatewayRecommendation
data.htmlRedirectCode
: il gateway restituisce sempre questo campo per l'inserimento nella pagina visualizzata al pagante.
Per determinare il passaggio successivo, controllare la raccomandazione del gateway fornita nel campo gatewayRecommendation
restituito nel callback. Nota: tale raccomandazione è basata solo sulle regole di filtro transazioni 3DS configurate dall'esercente o dal your payment service provider.
gatewayRecommendation |
Passaggio successivo |
---|---|
PROCEED | È possibile procedere per completare il processo di autenticazione (flusso di verifica) o procedere per completare il pagamento (flusso agevole). Se l'autorizzazione per il pagamento è andata a buon fine, procedere con l'acquisizione dei fondi e, se applicabile, spedire la merce. |
DO_NOT_PROCEED_ABANDON_ORDER | Non inviare nuovamente la stessa richiesta. Il provider di servizi di pagamento, il circuito o l'issuer richiedono di abbandonare l'ordine. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Chiedere al pagante dettagli di pagamento alternativi (ad esempio, una nuova carta o un'altra modalità di pagamento) e inviare nuovamente la richiesta con i nuovi dettagli. Non inviare nuovamente la stessa richiesta. |
Se il gateway consiglia PROCEED
, incollare il contenuto del campo di risposta htmlRedirectCode
nella pagina visualizzata al pagante.
Flusso senza intoppi
Questa opzione reindirizzerà il browser del pagante direttamente al sito web dell'esercente. È possibile procedere a inviare un successivo pagamento al gateway. Il gateway otterrà i dati di autenticazione relativi al pagamento e garantirà che i pagamenti vengano elaborati solo quando tutte le regole di filtro transazioni 3DS (configurate dall'esercente o dal your payment service provider) sono state superate.
Flusso di verifica
Questo reindirizzerà il browser del pagante all'ACS, dove verrà presentata l'interfaccia utente della verifica dell'issuer e successivamente il pagante verrà reindirizzato al sito web dell'esercente. Dopo il reindirizzamento al sito Web dell'esercente, nel callback vengono restituiti i seguenti campi:
- orderId
- transactionId
- gatewayRecommendation
- restApiResponse
È possibile determinare il risultato dell'autenticazione utilizzando il valore restituito nel campo gatewayRecommendation
. Nota: tale raccomandazione è basata solo sulle regole di filtro transazioni 3DS configurate dall'esercente o dal your payment service provider.
gatewayRecommendation |
Passaggio successivo |
---|---|
PROCEED | È possibile procedere con il pagamento poiché viene concessa l'autenticazione. Se l'autorizzazione per il pagamento è andata a buon fine, procedere con l'acquisizione dei fondi e, se applicabile, spedire la merce. |
DO_NOT_PROCEED_ABANDON_ORDER | Non inviare nuovamente la stessa richiesta. Il provider di servizi di pagamento, il circuito o l'issuer richiedono di abbandonare l'ordine. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Chiedere al pagante dettagli di pagamento alternativi (ad esempio, una nuova carta o un'altra modalità di pagamento) e inviare nuovamente la richiesta con i nuovi dettagli. Non inviare nuovamente la stessa richiesta. |
I campi restituiti in restApiResponse
dipendono dal flusso in atto (senza intoppi o con verifica) e da come è stata avviata la richiesta di autenticazione (authentication.channel).
Per una richiesta autenticata dalla sessione, la risposta viene filtrata per rimuovere i dati non correlati al pagante e vengono restituiti solo i campi autorizzati. Per ulteriori informazioni, vedere Operazioni con sessioni autenticate.
Integrazioni avanzate
La richiesta inviata dal browser del pagante al sito Web dell'esercente al completamento del metodo authenticatePayer()
verrà parametrizzata, consentendo di determinare il risultato dell'autenticazione. I singoli parametri di autenticazione, ad esempio, authentication.3ds2.transactionStatus.data
, possono essere utili in un'integrazione avanzata o se si ha la necessità di fornire i dati di autenticazione in un pagamento elaborato tramite un altro gateway. Vedere Integrazioni avanzate delle sessioni di pagamento.
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" }
Passaggio 5: Uso del risultato dell'autenticazione in un'operazione di pagamento
Quando il risultato del metodo authenticatePayer()
indica che è possibile procedere al pagamento (response.gatewayRecommendation=PROCEED) l'esercente può avviare un'operazione Authorize o Pay. Oltre ai campi standard, è necessario fornire i campi indicati di seguito:
- order.id: fornire il
orderId
fornito nei metodiinitiateAuthentication()
eauthenticatePayer()
. - authentication.transactionId: fornire il
transactionId
fornito nei metodiinitiateAuthentication()
eauthenticatePayer()
. Non è necessario includere alcun parametro del gruppo di parametri di autenticazione, in quanto il gateway utilizzerà authentication.transactionId per cercare i risultati dell'autenticazione archiviati quando si è chiesto al gateway di effettuare l'autenticazione. Il gateway inoltrerà le informazioni richieste all'acquirer.
URL | https://eu-gateway.mastercard.com/api/rest/version/<version>/merchant/<your_merchant_ID>/order/<your_order_ID>/transaction/<your_transaction_ID> |
Metodo 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" }
Domande frequenti
Per le domande frequenti generali su 3-D Secure, vedere Domande frequenti sull'autenticazione.
Test dell'integrazione
Per testare la propria integrazione è possibile utilizzare il proprio profilo dell'esercente di PROVA nell'ambiente di produzione. Consultare Test dell'integrazione.