Come ben saprai, la PSD2 è arrivata quasi un anno fa ed è qui per restare. Oggi è totalmente obbligatorio che il nostro terminale abbia attiva la PSD2. Cosa succede? Che su Redsys non è attiva per impostazione predefinita, quando creano un nuovo terminale, devono configurare tutto, incluso tutto ciò che rappresenta la PSD2.
La PSD2 deve essere attiva per non avere problemi con i pagamenti, poiché, altrimenti, i possessori di carte come Visa o MasterCard non potranno completare i loro pagamenti, poiché non verrà richiesta l’autenticazione, la sfida non sarà quella indicata o il flusso non sarà corretto.
Questo si aggrava ulteriormente quando utilizziamo InSite o pagamento con 1 clic, poiché si verificano errori nel sito stesso.
Come possiamo sapere se abbiamo tutto attivo in modo corretto? È molto semplice, anche se desideriamo utilizzare InSite, dovremo effettuare un test preliminare con reindirizzamento. In realtà con InSite si può anche vedere, ma entrano in gioco così tanti fattori, che è meglio utilizzare il reindirizzamento per la verifica.
Poiché il problema si verificherà sempre con carte v2.1 e v2.2 soggette alla PSD2, utilizzeremo una carta di prova di questo tipo, quindi quando arriveremo a Redsys, inseriremo la carta 4548816131164386 con data di scadenza 12/32 e CVV 123. Una volta inserita, ci porterà alla sfida, quando arriveremo alla schermata della sfida, vedremo se il nostro terminale è configurato correttamente o meno. Attenzione, con le carte v.1.0.2 non deve apparire nemmeno questa schermata di V1, solo che il pagamento non fallirà.
Se non è configurato correttamente, ci apparirà in rosso e lampeggiante «Simulatore di autenticazione V1»

Se ci appare questo, possiamo già contattare la banca, perché sicuramente avranno molti clienti da pagare.
Nel caso della carta v2.2 che vi ho indicato, dovrebbe apparire questa schermata.

Puoi vedere chiaramente che nell’autenticazione indica la versione della carta.
Se la carta è un V1.0.2, dovrebbe apparire l’autenticazione Finanet

Vedi che è abbastanza semplice controllare nel terminale di prova, e con reindirizzamento se tutto il tema della PSD2 sta funzionando o meno.
Ma, come faccio a sapere se è configurato correttamente tramite InSite o tokenizzazione? Per questo dovremo fare riferimento ai log.
Logicamente potrai controllare se i log sono attivi e se è con il mio plugin premium per Redsys, non conosco il livello di debug offerto dagli altri plugin.
Fai attenzione a questo log inserendo una carta v2.2 in un terminale che non è configurato correttamente:
12-02-2021 @ 12:29:28 - /****************************
12-02-2021 @ 12:29:28 - The XML
12-02-2021 @ 12:29:28 - /****************************
12-02-2021 @ 12:29:28 -
12-02-2021 @ 12:29:28 - <REQUEST><DATOSENTRADA><DS_MERCHANT_AMOUNT>3685</DS_MERCHANT_AMOUNT><DS_MERCHANT_ORDER>100000000058</DS_MERCHANT_ORDER><DS_MERCHANT_MERCHANTCODE>XXXXXXXXXXXXXXX</DS_MERCHANT_MERCHANTCODE><DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL><DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE><DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY><DS_MERCHANT_IDOPER>XXXXXXXXXXXXXXXXXXXXXXX</DS_MERCHANT_IDOPER><DS_MERCHANT_EMV3DS>{"threeDSInfo":"CardData"}</DS_MERCHANT_EMV3DS></DATOSENTRADA><DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION><DS_SIGNATURE>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</DS_SIGNATURE></REQUEST>
12-02-2021 @ 12:29:28 - $XML_RETORNO 14 IniciaPeticion: SimpleXMLElement Object
(
[CODIGO] => 0
[INFOTARJETA] => SimpleXMLElement Object
(
[Ds_Order] => 100000000058
[Ds_MerchantCode] => 036763159
[Ds_Terminal] => 1
[Ds_TransactionType] => 0
[Ds_EMV3DS] => {"protocolVersion":"NO_3DS_v2","threeDSInfo":"CardConfiguration"}
[Ds_Card_PSD2] => Y
[Ds_Signature] => E0KE/r+s7nNE9G3uXwBXvd6TTM1NDQoG6RV9EwfINxY=
)
)
12-02-2021 @ 12:29:28 - $respuesta: stdClass Object
(
[protocolVersion] => NO_3DS_v2
[threeDSInfo] => CardConfiguration
)
12-02-2021 @ 12:29:28 - $respuesta->protocolVersion: NO_3DS_v2Nel primo passo, chiediamo a Redsys che tipo di carta è
<DS_MERCHANT_EMV3DS>{“threeDSInfo”:”CardData”}</DS_MERCHANT_EMV3DS>
Questo lo facciamo poiché dobbiamo sapere che carta è, poiché a seconda della versione della carta, dovremo procedere in un modo o nell’altro.
In questo caso possiamo vedere la risposta $respuesta->protocolVersion: NO_3DS_v2 dove ci dice che è una NO_3DS_v2. Quindi già iniziamo male. Ci sono anche molti numeri che non saremo in grado di completare il pagamento.
Se facciamo lo stesso in un terminale ben configurato, otterremo quanto segue:
12-02-2021 @ 16:46:42 - /****************************
12-02-2021 @ 16:46:42 - The XML
12-02-2021 @ 16:46:42 - /****************************
12-02-2021 @ 16:46:42 -
12-02-2021 @ 16:46:42 - <REQUEST><DATOSENTRADA><DS_MERCHANT_AMOUNT>10000</DS_MERCHANT_AMOUNT><DS_MERCHANT_ORDER>100000003156</DS_MERCHANT_ORDER><DS_MERCHANT_MERCHANTCODE>XXXXXXXXXXXX</DS_MERCHANT_MERCHANTCODE><DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL><DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE><DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY><DS_MERCHANT_IDOPER>XXXXXXXXXXXXXXXXXXXXXXX</DS_MERCHANT_IDOPER><DS_MERCHANT_EMV3DS>{"threeDSInfo":"CardData"}</DS_MERCHANT_EMV3DS></DATOSENTRADA><DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION><DS_SIGNATURE>XXXXXXXXXXXXXXXXXXXXXXXXX</DS_SIGNATURE></REQUEST>
12-02-2021 @ 16:46:42 - $XML_RETORNO 14 IniciaPeticion: SimpleXMLElement Object
(
[CODIGO] => 0
[INFOTARJETA] => SimpleXMLElement Object
(
[Ds_Order] => 100000003156
[Ds_MerchantCode] => 349567461
[Ds_Terminal] => 1
[Ds_TransactionType] => 0
[Ds_EMV3DS] => {"protocolVersion":"2.2.0","threeDSServerTransID":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","threeDSInfo":"CardConfiguration"}
[Ds_Card_PSD2] => Y
[Ds_Signature] => XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
)
)
12-02-2021 @ 16:46:42 - $respuesta: stdClass Object
(
[protocolVersion] => 2.2.0
[threeDSServerTransID] => XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[threeDSInfo] => CardConfiguration
)
12-02-2021 @ 16:46:42 - $respuesta->protocolVersion: 2.2.0Possiamo già vedere che la risposta è $respuesta->protocolVersion: 2.2.0 quindi si vede molto rapidamente la differenza. E ci apparirà anche la schermata di Challenge v2.2

Ma c’è di più. Come ho detto, ci sono varie configurazioni che devono essere attive nel sito, e se qualcuna di esse non è attiva, può portare a problemi. Quindi potrebbe essere che questo punto fosse corretto, e restituisse che il protocollo da utilizzare è il 2.2, con cui il mio plugin inizierebbe a eseguire tutti i passaggi per il protocollo 2.2.
In uno dei passaggi, se il terminale non fosse configurato correttamente dalla nostra banca, potremmo trovarci con questa risposta come questa (accorciata):
acctInfo: : {"threeDSInfo":"AuthenticationData","protocolVersion":"2.1.0","browserAcceptHeader":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","browserColorDepth":"24","browserIP":"80.XX.XX.XX",...}}
11-05-2021 @ 13:22:18 - trattaPeticion 10: <REQUEST><DATOSENTRADA><DS_MERCHANT_AMOUNT>900</DS_MERCHANT_AMOUNT><DS_MERCHANT_ORDER>100000000136</DS_MERCHANT_ORDER><DS_MERCHANT_MERCHANTCODE>XXXXXXXXXXXX</DS_MERCHANT_MERCHANTCODE><DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL><DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE><DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY><DS_MERCHANT_IDOPER>XXXXXXXXXXXXXXXXXXXXXXXX</DS_MERCHANT_IDOPER><DS_MERCHANT_EXCEP_SCA>LWV</DS_MERCHANT_EXCEP_SCA><DS_MERCHANT_EMV3DS>{"threeDSInfo":"AuthenticationData","protocolVersion":"2.1.0",...}</DS_MERCHANT_EMV3DS></DATOSENTRADA><DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION><DS_SIGNATURE>Ckba7sIir5FtBpCyPRqisFVQaMngw3NPc6MbfBUJjBQ=</DS_SIGNATURE></REQUEST>
11-05-2021 @ 13:22:23 -
11-05-2021 @ 13:22:23 - $XML_RETORNO 13: SimpleXMLElement Object
(
[CODIGO] => 0
[OPERACION] => SimpleXMLElement Object
(
[Ds_Amount] => 900
[Ds_Currency] => 978
[Ds_Order] => 100000000136
[Ds_Signature] => gwkc5JNecdaPp9vuntavjIFg2urNiADau+hB1yv8Gws=
[Ds_MerchantCode] => 124770314
[Ds_Terminal] => 2
[Ds_TransactionType] => 0
[Ds_EMV3DS] => {"threeDSInfo":"ChallengeRequest","protocolVersion":"1.0.2","acsURL":"https://sas.redsys.es/sas/Secure","PAReq":"eJxVUttuwjAM/ZWq7yMXyrjIZOoo0/oQhqDbe5RG0AlSlrRb+fs5UHZ5SOJjW8f2ceChOx6iT+N8Vdt5zAY0jozVdVnZ3Tx+LZ7uJvGDgGLvjMm2RrfOCJDGe7UzUVXOY1d6VXVfyjNlNRsnCUs45YwxOkKLsymllN+zWMA63ZgPAX0tgaUGHMgNIqnTe2UbAUp/POYrMWKUsiGQHsLRuDwT2+VGLtepXG4Wz+mqAHJ1g1VHIxYvcr1Jo7d8mxfpFsjFCbpubePOYswTIDcArTuIfdOc/IyQprVmV+uq9nipw8CaBkhIAPLb1roNlkfCriqFfE/Pslh2MnvtVll+lu+SySz9wjMHEjKgVI0RNzEiNpxxPuM40MUP6hg6EdMBpTjjFcAp1Ej7SAj8dQCq73A5ZzEdT3CSGwLTnWprMAP1/LGhNF7jAP3z2/3iOUisG1Tt76b4EDc1YjwZJ5NkEmS/pATyCvXilA4v7AEACSSk3yjp/wNa//7JN5c+wi4=","MD":"8098f2fb1bf6c7988c026be7944cd61e7231b05f"}Fai attenzione al codice precedente. È un log vecchio e non ho trovato uno della v2.2, ma è la 2.1 e il problema è lo stesso, quindi va bene per mostrarlo. All’inizio di tutto vedrai questo {“threeDSInfo”:”AuthenticationData”,”protocolVersion”:”2.1.0″... poiché è una carta 2.1 (ricordo che questo lo abbiamo ottenuto nel primo passo che ho mostrato). Ma fai attenzione più in basso nel $XML_RETORNO 13, possiamo vedere che anche se a Redsys stiamo dicendo che è una 2.1, ci indica una sfida per una 1.0.2 {“threeDSInfo”:”ChallengeRequest”,”protocolVersion”:”1.0.2“,”acsURL”:… quindi non sta facendo le cose come dovrebbe.
Attenzione, quanto sopra può succedere per due motivi diversi, uno è che avete modificato il checkout in qualche modo, e non vengono inviati una serie di dati necessari poiché non sono stati in grado di ottenerli, provocando un fallback dalla 2.1.0 (o 2.2) alla 1.0.2. E la seconda ragione è un errore nella configurazione di Redsys.
E ti starai chiedendo, e come richiedo questo a Redsys per non avere problemi? Dovrai richiedere 3 cose, due in realtà sono le stesse, ma ci sono banche che lo comprendono in modo diverso. Dovete richiedere:
- Attivazione della PSD2
- Attivazione del protocollo EMV 3DS.
- Attivazione del Flusso PSD2.
Se ti attivano correttamente quanto sopra, non dovresti avere problemi con nessun tipo di carta, né con il reindirizzamento, né con InSite, né con il pagamento con 1 clic. Se qualcosa non è corretto, i tuoi clienti avranno errori.
Personalmente non riesco a capire il motivo per cui questo non sia attivo per impostazione predefinita su Redsys e debba essere attivato manualmente, ma è così e bisogna stare attenti.
Sai già che come utente del mio plugin premium, hai supporto e include che te lo installi, configuri e testi e in molte occasioni entro nei thread di email con Redsys, poiché è il modo più veloce per risolverlo. Quindi anche se qui hai una spiegazione di tutto, apri un ticket e ti aiuterò senza problemi.







