Autenticación con 3DSecure

Protocolo de autenticación EMV3DS

Para realizar la autenticación es necesario incorporar en el flujo de pago varios pasos adicionales (excepto en el caso de integración por redirección). Los comercios que utilizan conexión REST y estén interesados en incluir el proceso de autenticación del titular mediante protocolo 3DSecure, tienen que incluir en el flujo de la transacción la mensajería de este protocolo de seguridad. Además deberán adaptarse a las dos versiones del protocolo (3DS v1 y EMV 3DS v2), puesto que la versión utilizada en cada operación dependerá de la versión del protocolo que soporte la tarjeta con la que se realiza la transacción.

El proceso de pago de una operación con autenticación en la conexión REST sigue los siguientes pasos:

1 - Inicia petición: El comercio deberá hacer una petición al TPV Virtual para obtener la versión de la tarjeta y poder iniciar el proceso de autenticación con el protocolo correspondiente.

2 - 3DSMethod (Si procede): El comercio ejecuta el 3DSMethod para que el emisor capture la información del dispositivo.

3 - Trata Petición (Solicitud de autorización): El comercio enviará la solicitud de autorización de la operación con el parámetro "Ds_Merchant_Emv3ds" con un valor en formato JSON donde se incluyen los valores del protocolo EMV3DS.

4 - Respuesta: Una vez enviada la petición, se puede recibir una respuesta "Frictionless" (respuesta final con el parámetro "Ds_Response") o "Challenge"(necesita continuar la autenticación).

5 - Autenticación (Si procede): La entidad emisora requiere de que el titular verifique su autenticidad (mediante OTP, contraseña estática, biometría, etc).

6 - Confirmación de autorización: El comercio enviará la autorización con el resultado del challenge al TPV Virtual para finalizar el proceso de autorización y recibir el parámetro "Ds_Response".

A continuación se muestra el flujo de autenticación con la V1:

descripcion flujo frictionless

1. El titular selecciona los productos que desea comprar e introduce los datos de tarjeta en un formulario mostrado por el comercio.

2. El comercio realiza un inicia petición enviando los datos al TPV Virtual.

3. El TPV Virtual comprueba la configuración de la tarjeta, y en la respuesta informará si la tarjeta soporta autenticación EMV3DS y la versión de protocolo EMV3DS que se aplica.

3.2 Si la tarjeta no permite EMV3DS v2 el comercio puede solicitar la autenticación con los datos de v1. Se recibirá un valor de protocolo NO_3DS_V2

4. El comercio envía la solicitud de autorización al TPV Virtual indicando que está preparado para EMV3DS v1.

5. El TPV Virtual comprueba la configuración del comercio y la tarjeta, y en la respuesta informará que la transacción requiere autenticación y la información para que el titular pueda realizar la autenticación con su banco emisor. Estas peticiones quedarán marcadas de la siguiente forma Versión 1.0.2 ( 8102).

6. El comercio redirige al titular vía browser para que conecte con su emisor.

7. El titular completa la autenticación.

8. La entidad emisora devuelve el resultado de la autenticación a la URL indicada facilitada por el comercio.

9. El comercio envía el resultado de la autenticación al TPV Virtual para finalizar el proceso de autorización.

10. Una vez realizado el pago, el TPV virtual responde con el resultado de la operación.

11. El comercio responde con la información del resultado del pago al titular.

Existen dos flujos posibles con la V2, dependiendo de la respuesta del TPV-Virtual:


descripcion flujo frictionless

1. El titular selecciona los productos que desea comprar e introduce los datos de tarjeta en un formulario mostrado por el comercio.

2. El comercio inicia petición enviando los datos al TPV Virtual.

3. El TPV Virtual comprueba la configuración de la tarjeta, y en la respuesta informará si la tarjeta soporta autenticación EMV3DS y la versión de protocolo EMV3DS que se aplica.

3.1 Si la tarjeta lo requiere ejecutar el 3DSMethod: se inicia conexión desde el browser con el ACS y este devuelve el resultado de la ejecución al comercio.

4. El comercio envía la solicitud de autorización con tarjeta que soporta EMV3DS v2. Además de los datos de pago es necesario enviar el resultado del 3DSMethod y los datos adicionales para la autenticación. El TPV Virtual inicia la autenticación, y el emisor, en base a los datos recibidos, autentica la operación sin necesidad de la intervención del titular. A continuación, el TPV Virtual procesará la autorización.

5. Una vez realizado el pago, el TPV virtual informa del resultado de la operación.

6. El comercio devuelve la información del resultado del pago al titular.

descripcion flujo frictionless

1. El titular selecciona los productos que desea comprar e introduce los datos de tarjeta en un formulario mostrado por el comercio.

2. El comercio realiza un inicia petición enviando los datos al TPV Virtual.

3. El TPV Virtual comprueba la configuración de la tarjeta, y en la respuesta informará si la tarjeta soporta autenticación EMV3DS y la versión de protocolo EMV3DS que se aplica.

3.1 Si la tarjeta lo requiere ejecutar el 3DSMethod: se inicia conexión desde el browser con el ACS y este devuelve el resultado de la ejecución al comercio

4. El comercio envía la solicitud de autorización con tarjeta que soporta EMV3DS v2. Además de los datos de pago es necesario enviar el resultado del 3DSMethod y los datos adicionales para la autenticación.

El TPV Virtual inicia la autenticación, y el emisor en base a los datos recibidos decide que el titular debe verificar su autenticidad (challenge)

5. El TPV Virtual devuelve la información para que el titular pueda realizar el challenge con su banco emisor. Según el protocolo con el que se deba autenticar estas peticiones quedarán marcadas de la siguiente forma. Versión 2.1.0 (8210)

6. El comercio redirige al titular vía browser para que conecte con su emisor

7. El titular completa el challenge

8. La entidad emisora devuelve el resultado del challenge a la url indicada por el comercio

9. El comercio envía el resultado del challenge al TPV Virtual para finalizar el proceso de autorización

10. Una vez realizado el pago, el TPV virtual responde con el resultado de la operación.

11. El comercio responde con la información del resultado del pago al titular

Inicia Petición

Esta petición permite obtener el tipo de autenticación 3D Secure ("Version 1.0.2", "Version 2.1.0" o "Version 2.2.0") que se puede realizar. Se debe enviar una peticion inicial rest a la siguiente URL:

EntornoURL conexión
Pruebashttps://sis-t.redsys.es:25443/sis/rest/iniciaPeticionREST
Realhttps://sis.redsys.es/sis/rest/iniciaPeticionREST

Dentro del elemento "Ds_MerchantParameters" deberá enviarse el parámetro "Ds_Merchant_Emv3ds", de tipo JSON, con la etiqueta y valor que vemos en el ejemplo:

							
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "CardData"
  },
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_CVV2": "123",
  "DS_MERCHANT_EXPIRYDATE": "1512",
  "DS_MERCHANT_ORDER": "1552571678",
  "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_TERMINAL": "999",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
					
				

Como resultado de la petición se devolverá en la respuesta un elemento "Ds_MerchantParameters" con un parámetro "Ds_EMV3DS", el cual tiene la información necesaria para proceder a la autenticación:



En esta caso se corresponde a un "protocolVersion": "1.0.2"
					
{
  "Ds_EMV3DS": {
    "protocolVersion": "NO_3DS_V2",
    "threeDSServerTransID": "8de84430-3336-4ff4-b18d-f073b546ccea",
    "threeDSInfo": "CardConfiguration",
    "threeDSMethodURL": "https://sis.redsys.es/sis-simulador-web/threeDsMethod.jsp"
  },
  "Ds_MerchantCode": "999008881",
  "Ds_Order": "1552571678",
  "Ds_Terminal": "2",
  "Ds_TransactionType": "0"
}
					
				

En este caso se corresponde a un "protocolVersion": "2.1.0" ó "2.2.0", en adelante "2.X.0" según la versión devuelta en el inicia:
					
{
  "Ds_EMV3DS": {
    "protocolVersion": "2.X.0",
    "threeDSServerTransID": "8de84430-3336-4ff4-b18d-f073b546ccea",
    "threeDSInfo": "CardConfiguration",
    "threeDSMethodURL": "https://sis.redsys.es/sis-simulador-web/threeDsMethod.jsp"
  },
  "Ds_MerchantCode": "999008881",
  "Ds_Order": "1552571678",
  "Ds_Terminal": "2",
  "Ds_TransactionType": "0"
}
					
				

Dentro del elemento "Ds_MerchantParameters" deberá enviarse el parámetro "Ds_Merchant_Emv3ds", de tipo JSON, con la etiqueta y valor que vemos en el ejemplo:

							
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "CardData"
  },
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552571678",
  "DS_MERCHANT_IDOPER": "9c75f357629acb672e0f5444401d138f02e834ad ",
  "DS_MERCHANT_TERMINAL": "999",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
					
				

Como resultado de la petición se devolverá en la respuesta un elemento "Ds_MerchantParameters" con un parámetro "Ds_EMV3DS", el cual tiene la información necesaria para proceder a la autenticación:



En esta caso se corresponde a un "protocolVersion": "1.0.2"
					
{
  "Ds_EMV3DS": {
    "protocolVersion": "NO_3DS_V2",
    "threeDSServerTransID": "8de84430-3336-4ff4-b18d-f073b546ccea",
    "threeDSInfo": "CardConfiguration",
    "threeDSMethodURL": "https://sis.redsys.es/sis-simulador-web/threeDsMethod.jsp"
  },
  "Ds_MerchantCode": "999008881",
  "Ds_Order": "1552571678",
  "Ds_Terminal": "2",
  "Ds_TransactionType": "0"
}
					
				
								En este caso se corresponde a un "protocolVersion": "2.1.0" ó "2.2.0", en adelante "2.X.0" según la versión devuelta en el inicia:
								
{ "Ds_EMV3DS": { "protocolVersion": "2.X.0", "threeDSServerTransID": "8de84430-3336-4ff4-b18d-f073b546ccea", "threeDSInfo": "CardConfiguration", "threeDSMethodURL": "https://sis.redsys.es/sis-simulador-web/threeDsMethod.jsp" }, "Ds_MerchantCode": "999008881", "Ds_Order": "1552571678", "Ds_Terminal": "2", "Ds_TransactionType": "0" }

3DSMethod

El 3DSMethod es un proceso que permite a la entidad emisora capturar la información del dispositivo que está utilizando el titular. Esta información, junto con los datos EMV3DS que son enviados en la autorización, será utilizada por la entidad para hacer una evaluación del riesgo de la transacción. En base a esto el emisor puede determinar que la transacción es confiable y por lo tanto no requerir la intervención del titular para verificar su autenticidad (frictionless).

La captura de datos del dispositivo se realiza mediante un iframe oculto en el navegador del cliente, que establecerá conexión directamente con la entidad emisora de forma transparente para el usuario. El comercio recibirá una notificación cuanto haya terminado la captura de información. En el siguiente paso, al solicitar la autorización al TPV Virtual se enviará el parámetro threeDSCompInd indicando la ejecución del 3DSMethod

Pasos para la ejecución del 3DSMethod:

1. En la respuesta recibida con la configuración de la tarjeta (iniciaPeticion) se recibe los datos siguientes para ejecutar el 3DSMethod:

a. threeDSMethodURL: url del 3DSMethod

b. threeDSServerTransID: Identificador de transacción EMV3DS

Si en la respuesta no se recibe threeDSMethodURL el proceso finaliza. En la autorización enviar

threeDSCompInd = N

2. Construir el JSON Object con los parámetros:

a. threeDSServerTransID: valor recibido en la respuesta de consulta de tarjeta

b. threeDSMethodNotificationURL: url del comercio a la que será notificada la finalización del 3DSMethod desde la entidad

3. Codificar el JSON anterior en Base64url encode

4. Debe incluirse un iframe oculto en el navegador del cliente, y enviar un campo threeDSMethodData con el valor del objecto json anterior, en un formulario http post a la url obtenida en la consulta inicial threeDSMethodURL

5. La entidad emisora interactúa con el browser para proceder a la captura de información. Al finalizar enviará el campo threeDSMethodData en el iframe html del navegador por http post a la url threeDSMethodNotificationURL (indicada en el paso 2), y el 3DSMethod termina.

6. Si el 3DSMethod se ha completado en menos de 10 segundos se enviará en la autorización:

threeDSCompInd = Y

Si no se ha completado en 10 segundos debe detener la espera y enviar la autorización con valor:

threeDSCompInd = N

Trata petición

Un vez recibida la respuesta del "Inicia Petición", deberá enviarse un "trata Petición" a la URL indicada. Esta petición deberá constar del parámetro "Ds_Merchant_Emv3ds", con los siguientes campos y valores correspondientes, los cuales dependen del valor del elemento "protocolVersion":

Ejemplo de petición para "protocolVersion": "1.0.2" ("NO_3DS_V2")

						  	
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_CVV2": "XXX",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "AuthenticationData",
    "protocolVersion": "1.0.2",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
  },
  "DS_MERCHANT_EXPIRYDATE": "XXXX",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552572812",
  "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
						  
				      

Ejemplo de petición para "protocolVersion": "2.X.0"

						
				    	 
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_CVV2": "XXX",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "AuthenticationData",
    "protocolVersion": "2.X.0",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
    "browserJavaEnabled": "false",
    "browserLanguage": "ES-es",
    "browserColorDepth": "24",
    "browserScreenHeight": "1250",
    "browserScreenWidth": "1320",
    "browserTZ": "52",
    "threeDSServerTransID": "8de84430-3336-4ff4-b18d-f073b546ccea",
    "notificationURL": "https://sis-d.redsys.es/sis-simulador-web/SisRESTCreqCres_3DSecureV2.jsp",
    "threeDSCompInd": "Y"
  },
  "DS_MERCHANT_EXPIRYDATE": "XXXX",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552572812",
  "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
					   
				    

Ejemplo de petición para "protocolVersion": "1.0.2" ("NO_3DS_V2")

						  	
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "AuthenticationData",
    "protocolVersion": "1.0.2",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
  },
  "DS_MERCHANT_IDOPER": "9c75f357629acb672e0f5444401d138f02e834ad ",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552572812",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
						  
				      

Ejemplo de petición para "protocolVersion": "2.X.0"

						
				    	 
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_IDOPER": "9c75f357629acb672e0f5444401d138f02e834ad ",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "AuthenticationData",
    "protocolVersion": "2.X.0",
    "browserAcceptHeader": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json",
    "browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
    "browserJavaEnabled": "false",
    "browserLanguage": "ES-es",
    "browserColorDepth": "24",
    "browserScreenHeight": "1250",
    "browserScreenWidth": "1320",
    "browserTZ": "52",
    "threeDSServerTransID": "8de84430-3336-4ff4-b18d-f073b546ccea",
    "notificationURL": "https://sis-d.redsys.es/sis-simulador-web/SisRESTCreqCres_3DSecureV2.jsp",
    "threeDSCompInd": "Y"
  },
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552572812",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
					   
				    

Respuesta

Como resultado del envío de esta petición, se pueden obtener dos tipos de respuesta, "frictionless" o "Challenge":

Para frictionless la operación habrá sido autorizada y finalizada. Se recibe el parámetro "Ds_Response"

						
{
  "Ds_Amount": "1000",
  "Ds_AuthorisationCode": "694432",
  "Ds_CardNumber": "454881******0004",
  "Ds_Card_Brand": "1",
  "Ds_Card_Country": "724",
  "Ds_Card_Type": "C",
  "Ds_Currency": "978",
  "Ds_Language": "1",
  "Ds_MerchantCode": "999008881",
  "Ds_MerchantData": "",
  "Ds_Order": "1552572812",
  "Ds_Response": "0000",
  "Ds_SecurePayment": "1",
  "Ds_Terminal": "2",
  "Ds_TransactionType": "0"
}
						
					

Para challenge la operación requerirá de autenticación del titular, se inicia el flujo challenge que dependerá del valor del parámetro "ProtocolVersion":

Ejemplo de petición para "protocolVersion": "1.0.2" ("NO_3DS_V2")

						  	
{
  "Ds_Amount": "1000",
  "Ds_Currency": "978",
  "Ds_EMV3DS": {
    "threeDSInfo": "ChallengeRequest",
    "protocolVersion": "1.0.2",
    "acsURL": "https://sis.redsys.es/sis-simulador-web/authenticationRequest.jsp",
    "PAReq": "eJxVUttygjAQ/RWG95KEooKzpkPVjj7QOpZ+QBp2KlYuDVDx77tRqS0zmdmzJ+zlnMBDXxycbzRNXpUzV3jcdbDUVZaXHzP3LX26C90HCenOIC5eUXcGJSTYNOoDnTybuU1Rq7zPsFGlFmIU+mOfi4j7vrAfn3DOw9HYlbCJt/gl4dpKUifPBzZAqmn0TpWtBKW/HtfPMhgFYSiAXSEUaNYL+brcJstNnCy381X8nAK7pKFUBcp5RUjnlZOhU5sO35XzZFSXIbAzD7rqytac5MQPgA0AOnOQu7atp4wdj0fPYNacGk9XBTBLAbvNtuls1FCpPs9kso/7lzQ+Jftln6R09p88WcRHOjNg9gZkqkU5KOIIPhVi6kfAznlQhZ1BintPcNr0gqC2TeKBsszfDJAHhiw6yWgS0hYDAuzrqkS6QbL+xkDOaEY73Cafr6zGuiXZ/lololEYWLnPjK2WkzhBJC7lLABm/2VXJ9n1GVD073n8AOa7wW0=",
    "MD": "cd164a6d0b77c96f7ef476121acfa987a0edf602"
  },
  "Ds_MerchantCode": "999008881",
  "Ds_Order": "1552572812",
  "Ds_Terminal": "2",
  "Ds_TransactionType": "0"
}
						  
				      

Ejemplo de petición para "protocolVersion": "2.X.0"

						
				    	 
{
  "Ds_Amount": "1000",
  "Ds_Currency": "978",
  "Ds_EMV3DS": {
    "threeDSInfo": "ChallengeRequest",
    "protocolVersion": "2.X.0",
    "acsURL": "https://sis.redsys.es/sis-simulador-web/authenticationRequest.jsp",
    "CReq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYwNzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"
  },
  "Ds_MerchantCode": "999008881",
  "Ds_Order": "1552572812",
  "Ds_Terminal": "2",
  "Ds_TransactionType": "0"
}
		
				    

Autenticación

En el caso que la operación no haya finalizado en el paso anterior (flujo frictionless), debejerá ejecutarse el flujo Challenge. El comercio deberá montar un formulario que envíe un POST a la URL del parámetro "acsURL" obtenido en la respuesta de la petición de autorización anterior. Dicho formulario envíar los parámetros "PaReq", "MD" y un tercer término "TermUrl" (si sigue el protocolo 1.0.2) o el parámetro "CReq" que se obtiene en la respuesta si es el protocolo 2.X.0 (2.1.0 ó 2.2.0) Este formulario redireccionará al titular a la página de autenticación de su banco, donde la entidad emisora requerirá que el titular verifique su autenticidad (mediante OTP, contraseña estática, biometría, etc).

Ejemplo de formulario HTML para "protocolVersion": "1.0.2"

						
				    	 
				    	 
				    	 
<form action="acsURL" method="post">
		<input type="hidden" name="MD" value="f5bdfa2779b2cea18fb63e76130930c0aa4bacaa" />
		<input type="hidden" name="PaReq" value="eJxVUl1v6jAM/StVr7S32yT9EC0zmTrotD1kQsB+QNRaoN..." />
		<input type="hidden" name="TermUrl" value="http://webdelcomercio.com/recibirRespuestaAutenticacion" />
</form>
	
	
		
				    

Ejemplo de formulario HTML para "protocolVersion": "2.X.0"

						
				    	 
				    	 
				    	 
<form action="acsURL" method="post">
		<input type="hidden" name="creq" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjA4MWQ1N2RlLWE4YTYtNGZkYi1hMzZj..." />
</form>
	
	
		
				    

Confirmación Autenticación

Como resultado de esta verificación, la entidad Emisora hará un POST a la URL indicada en el parámetro "TermUrl" (version 1.0.2) o a la "notificationURL" (version 2.X.0) del "trataPetición".

En esta url indicada se recibirá una respuesta que debe de ser capturada con los parámetros: "PARes" y "MD" (version 1.0.2) o el parámetro "cres" (version 2.X.0).

Para terminar la autenticación, debe enviarse otra petición rest con éstos valores dentro del parémetro "Ds_Merchant_Emv3ds" en formato JSON:

Ejemplo de respuesta para "protocolVersion": "1.0.2" ("NO_3DS_V2")

						  	
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_CVV2": "XXX",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "ChallengeResponse",
    "protocolVersion": "1.0.2",
    "PARes": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYwNzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJtZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidHJhbnNTdGF0dXMiOiJZIn0=",
    "MD": "035535127d549298f11d7d2fc1b0d4e9300f93f1"
  },
  "DS_MERCHANT_EXPIRYDATE": "XXXX",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552577128",
  "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
						  
				      

Ejemplo de respuesta para "protocolVersion": "2.X.0"

						
				    	 
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_CVV2": "XXX",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "ChallengeResponse",
    "protocolVersion": "2.X.0",
    "Cres": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYwNzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJtZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidHJhbnNTdGF0dXMiOiJZIn0="
  },
  "DS_MERCHANT_EXPIRYDATE": "XXXX",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552577128",
  "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
					   
				    

Ejemplo de respuesta para "protocolVersion": "1.0.2" ("NO_3DS_V2")

						  	
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "ChallengeResponse",
    "protocolVersion": "1.0.2",
    "PARes": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYwNzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJtZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidHJhbnNTdGF0dXMiOiJZIn0=",
    "MD": "035535127d549298f11d7d2fc1b0d4e9300f93f1"
  },
  "DS_MERCHANT_IDOPER": "9c75f357629acb672e0f5444401d138f02e834ad ",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552577128",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
						  
				      

Ejemplo de respuesta para "protocolVersion": "2.X.0"

						
				    	 
{
  "DS_MERCHANT_AMOUNT": "1000",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_EMV3DS": {
    "threeDSInfo": "ChallengeResponse",
    "protocolVersion": "2.X.0",
    "Cres": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYwNzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJtZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidHJhbnNTdGF0dXMiOiJZIn0="
  },
  "DS_MERCHANT_IDOPER": "9c75f357629acb672e0f5444401d138f02e834ad ",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_ORDER": "1552577128",
  "DS_MERCHANT_TERMINAL": "2",
  "DS_MERCHANT_TRANSACTIONTYPE": "0"
}
					   
				    

Como respuesta a esta petición, se obtendrá el resultado de la petición de Autorización (Ds_Response) y finaliza el proceso de compra con el TPV-Virtual.

							
{
  "Ds_Amount": "1000",
  "Ds_AuthorisationCode": "694432",
  "Ds_CardNumber": "454881******0004",
  "Ds_Card_Brand": "1",
  "Ds_Card_Country": "724",
  "Ds_Card_Type": "C",
  "Ds_Currency": "978",
  "Ds_Language": "1",
  "Ds_MerchantCode": "999008881",
  "Ds_MerchantData": "",
  "Ds_Order": "1552572812",
  "Ds_Response": "0000",
  "Ds_SecurePayment": "1",
  "Ds_Terminal": "2",
  "Ds_TransactionType": "0"
}
						
					

Gestión de exenciones EMV3DS

De acuerdo a la norma de PSD2 (entrada en vigor el 14 de septiembre de 2019), directiva europea que tiene como objetivo mejorar la seguridad y reforzar la autenticación del cliente en las operaciones de comercio electrónico se definen una serie de exenciones al uso de SCA que podrán venir marcadas en la petición de autorización.

La solicitud de exención se informará en el parámetro "DS_MERCHANT_EXCEP_SCA" siendo los siguientes los valores permitidos:

  • LWV: Exención por bajo importe (hasta 30 €, con máx. 5 ops. o 100 € acumulado por tarjeta, estos contadores son controlados a nivel de entidad emisora de la tarjeta).
  • TRA: Exención por utilizarse un sistema de análisis de riesgo (y considerarse bajo riesgo) por parte del adquirente/comercio.
  • MIT: Operación iniciada por el comercio (sin estar asociada a una acción o evento del cliente) que están fuera del alcance de la PSD2. Este es el caso de las operativas de pagos de subscripciones, recurrentes, etc. todas las que requieren el almacenamiento de las credenciales de pago del cliente (COF) o su equivalente mediante operativas de pagos programados tokenizados (uso funcionalidad “pago por referencia” en pagos iniciados por el comercio). Toda operativa de pago iniciada por el comercio (MIT) requiere que inicialmente cuando el cliente concede el permiso al comercio de uso de sus credenciales de pago, dicho “permiso o mandato” se haga mediante operación autenticada con SCA.
  • COR: Exención restringida a los casos de uso de un protocolo pago corporativo seguro.
  • ATD: Exención de autenticación delegada.
  • NDF: El comercio informa que no quiere aplicar ninguna exención por defecto, en caso de que aplique.

Es importante tener en cuenta que al marcar exenciones la responsabilidad del posible fraude de la operación recae en el comercio.


Para conocer las exenciones permitidas para el comercio, se podrá enviar un mensaje de "iniciaPeticion" con el parámetro "DS_MERCHANT_EXCEP_SCA" = "Y":

					
{
  "DS_MERCHANT_ORDER":"1552571678",
  "DS_MERCHANT_MERCHANTCODE":"999008881",
  "DS_MERCHANT_TERMINAL":"999",
  "DS_MERCHANT_CURRENCY":"978",
  "DS_MERCHANT_TRANSACTIONTYPE":"0",
  "DS_MERCHANT_AMOUNT":"1000",
  "DS_MERCHANT_EXCEP_SCA":"Y",
  "DS_MERCHANT_PAN":" XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_EMV3DS": {"threeDSInfo":"CardData"}
}
					
				

En la respuesta, el parámetro "Ds_Excep_SCA" nos marcará las excenciones que pueden usarse en el "TrataPetición".

					
{
  "Ds_Order":"1552571678",
  "Ds_MerchantCode":"999008881",
  "Ds_Terminal":"2",
  "Ds_TransactionType":"0",
  "Ds_EMV3DS": {
    "protocolVersion":"2.X.0",
    "threeDSServerTransID":"8de84430-3336-4ff4-b18d-f073b546ccea",
    "threeDSInfo":"CardConfiguration",
    "threeDSMethodURL":https://sis.redsys.es/sis-simulador-web/threeDsMethod.jsp},
  "Ds_Excep_SCA":"LWV;TRA[30.0];COR;MIT;ATD;WHL",
  "Ds_Card_PSD2":"Y"
}
						    
						

Se contemplan dos tipos de mensajes donde podemos marcar una exención:

  • TrataPetición con datos EMV3DS

Las exenciones marcadas en peticiones con envío de datos EMV3DS, se marcarán en la autenticación. Si esta exención no es aceptada se devolverá una petición de CHALLENGE para que el titular se autentique con SCA. De esta forma la petición no se pierde y continuará el flujo habitual, sin que el titular se vea afectado. SE RECOMIENDA ESTA OPCIÓN.


Ejemplo TrataPetición con autenticación EMV3DS vía Rest

					
{
  "DS_MERCHANT_ORDER":"1552572812",
  "DS_MERCHANT_MERCHANTCODE":"999008881",
  "DS_MERCHANT_TERMINAL":"2",
  "DS_MERCHANT_CURRENCY":"978",
  "DS_MERCHANT_TRANSACTIONTYPE":"0",
  "DS_MERCHANT_AMOUNT":"100",
  "DS_MERCHANT_PAN":" XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_EXPIRYDATE":"XXXX",
  "DS_MERCHANT_CVV2":"XXX",
  "DS_MERCHANT_EXCEP_SCA":"LWV",
  "DS_MERCHANT_EMV3DS":
  {
	 "threeDSInfo":"AuthenticationData",
	 "protocolVersion":"2.X.0",
	 "browserAcceptHeader":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json",
	 "browserUserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
	 "browserJavaEnabled":"false",
	 "browserJavaScriptEnabled":"false",
	 "browserLanguage":"ES-es",
	 "browserColorDepth":"24",
	 "browserScreenHeight":"1250",
	 "browserScreenWidth":"1320",
	 "browserTZ":"52",
	 "threeDSServerTransID":"8de84430-3336-4ff4-b18d-f073b546ccea",
	 "notificationURL":"https://comercio-inventado.es/recibe-respuesta-autenticacion",
	 "threeDSCompInd":"Y"
  }
}
					
				

Ejemplo TrataPetición con autenticación EMV3DS con InSite

										
{
  "DS_MERCHANT_ORDER":"1552572812",
  "DS_MERCHANT_MERCHANTCODE":"999008881",
  "DS_MERCHANT_TERMINAL":"2",
  "DS_MERCHANT_CURRENCY":"978",
  "DS_MERCHANT_TRANSACTIONTYPE":"0",
  "DS_MERCHANT_AMOUNT":"100",
  "DS_MERCHANT_IDOPER":"9c75f357629acb672e0f5444401d138f02e834ad",
  "DS_MERCHANT_EXCEP_SCA":"LWV",
  "DS_MERCHANT_EMV3DS":
  {
	 "threeDSInfo":"AuthenticationData",
	 "protocolVersion":"2.X.0",
	 "browserAcceptHeader":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json",
	 "browserUserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
	 "browserJavaEnabled":"false",
	 "browserJavaScriptEnabled":"false",
	 "browserLanguage":"ES-es",
	 "browserColorDepth":"24",
	 "browserScreenHeight":"1250",
	 "browserScreenWidth":"1320",
	 "browserTZ":"52",
	 "threeDSServerTransID":"8de84430-3336-4ff4-b18d-f073b546ccea",
	 "notificationURL":"https://comercio-inventado.es/recibe-respuesta-autenticacion",
	 "threeDSCompInd":"Y"
  }
}
					
				

  • TrataPetición sin datos EMV3DS

Las exenciones marcadas en las peticiones en las que no se han informado los datos EMV3DS, se marcarán en la autorización. Si esta exención no es aceptada se procederá a una denegación con nse = 0195 (Requiere SCA). Si se quiere volver a hacer la petición con datos EMV3DS se deberá enviar otra petición.

Ejemplo TrataPetición sin datos EMV3DS vía Rest

					
{
  "DS_MERCHANT_ORDER":"1552572812",
  "DS_MERCHANT_MERCHANTCODE":"999008881",
  "DS_MERCHANT_TERMINAL":"2",
  "DS_MERCHANT_CURRENCY":"978",
  "DS_MERCHANT_TRANSACTIONTYPE":"0",
  "DS_MERCHANT_AMOUNT":"100",
  "DS_MERCHANT_PAN":" XXXXXXXXXXXXXXXXXX ",
  "DS_MERCHANT_EXPIRYDATE":"XXXX",
  "DS_MERCHANT_CVV2":"XXX",
  "DS_MERCHANT_EXCEP_SCA":"LWV"
}					
					
					
					
				

Ejemplo TrataPetición sin datos EMV3DS con InSite

										
{
  "DS_MERCHANT_ORDER":"1552572812",
  "DS_MERCHANT_MERCHANTCODE":"999008881",
  "DS_MERCHANT_TERMINAL":"2",
  "DS_MERCHANT_CURRENCY":"978",
  "DS_MERCHANT_TRANSACTIONTYPE":"0",
  "DS_MERCHANT_AMOUNT":"100",
  "DS_MERCHANT_IDOPER":"9c75f357629acb672e0f5444401d138f02e834ad",
  "DS_MERCHANT_EXCEP_SCA":"LWV"
}