Peticiones para realizar una transacción con autenticación EMV3DS

 

Iniciar Petición

 

Esta petición permite obtener el tipo de autenticación 3D Secure que se puede realizar, además de la URL del 3DSMethod en caso de que exista.

El inicia petición se hace a través de una petición Webservice SOAP al TPV Virtual. En dicha petición deberá incluir los siguientes parámetros:

  • <DS_SIGNATUREVERSION>: Constante que indica la versión de firma que se está
  • <DATOSENTRADA>: Datos de la petición de pago (Consultar Parámetros de entrada y salida).
  • <DS_SIGNATURE>: Firma de los datos

 

Dichos parámetros deben enviarse a los siguientes URL dependiendo de si se quiere realizar una petición en el entorno de prueba u operaciones reales, llamando al método “iniciaPeticion”:

  • Pruebas: https://sis-t.redsys.es:25443/sis/services/SerClsWSEntradaV2
  • Real: https://sis.redsys.es/sis/services/SerClsWSEntradaV2

 

Una vez gestionada la petición, el TPV Virtual informará al servidor del comercio el resultado de la misma con la información del resultado incluida en un fichero XML (RETORNOXML). En él se incluirán los siguientes campos:

  • CODIGO: Código de respuesta o error SIS
  • OPERACION: Datos de respuesta de la operación. En este campo se incluirá el parámetro de salida Ds_Signature con la firma de la petición de

A continuación, se describen los datos que debe incluir el DATOSENTRADA para enviar un inicia petición:

<DATOSENTRADA>
<DS_MERCHANT_AMOUNT>1000</DS_MERCHANT_AMOUNT>
<DS_MERCHANT_ORDER>1552571678</DS_MERCHANT_ORDER>
<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
<DS_MERCHANT_TERMINAL>2</DS_MERCHANT_TERMINAL>
<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
<DS_MERCHANT_PAN> XXXXXXXXXXXXXXXXXX </DS_MERCHANT_PAN>
<DS_MERCHANT_EMV3DS>{'threeDSInfo':'CardData'}</DS_MERCHANT_EMV3DS>
</DATOSENTRADA>

 

Como respuesta se obtendrá lo siguiente:

<RETORNOXML>
<CODIGO>0</CODIGO>
<INFOTARJETA>
<Ds_Order>1553155286</Ds_Order>
<Ds_MerchantCode>999008881</Ds_MerchantCode>
<Ds_Terminal>2</Ds_Terminal>
<Ds_TransactionType>0</Ds_TransactionType>
<Ds_EMV3DS>{"protocolVersion":"2.1.0", "threeDSServerTransID":"8de84430-3336-4ff4-b18d-f073b546ccea ", "threeDSInfo":"CardConfiguration","threeDSMethodURL":"https://sis.redsys.es/sis-simulador-web/threeDsMethod.jsp"}</Ds_EMV3DS>
<Ds_Card_PSD2>Y</Ds_Card_PSD2>
<Ds_Signature>7155jJYTzqeO/FoKjIQwUrjRJU7CxiOLHlC00d5c/RU=</Ds_Signature>
</INFOTARJETA>
</RETORNOXML>

 

El parámetro Ds_EMV3DS estará compuesto por los siguientes campos:

  • protocolVersion: siempre indicará el número de versión mayor permitido en la operación. El comercio será responsable de utilizar el número de versión para el cual esté
  • threeDSServerTransID: identificador de la transacción
  • threeDSInfo:
  • threeDSMethodURL: URL del 3DSMethod.

 

El parámetro Ds_Card_PSD2 informará al comercio si la tarjeta informada en la petición está afectada o no por PSD2. Los valores posibles serán “Y” para indicar que la tarjeta está afectada por PSD2, o “N” para indicar lo contrario.

 

 

Ejecución del 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 y en el siguiente paso, al realizar la petición de autorización al TPV Virtual el comercio deberá 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:
    1. threeDSMethodURL: url del 3DSMethod
    2. threeDSServerTransID: Identificador de transacción EMV3DS

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

  1. Construir el JSON Object con los parámetros:
    1. threeDSServerTransID: valor recibido en la respuesta de consulta de tarjeta
    2. threeDSMethodNotificationURL: url del comercio a la que será notificada la finalización del 3DSMethod desde la entidad
  2. Codificar el JSON anterior en Base64url encode
  3. 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
  4. 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.
  5. Si el 3DSMethod se ha completado en menos de 10 segundos se enviará threeDSCompInd = Y en la autorización. Si no se ha completado en 10 segundos debe detener la espera y enviar la autorización con threeDSCompInd = N

 

Petición de autorización con datos EMV3DS

 

La petición de autorización se hace a través de una petición al TPV Virtual En dicha petición deberá incluir los siguientes parámetros:

  • <DS_SIGNATUREVERSION>: Constante que indica la versión de firma que se está
  • <DATOSENTRADA>: Datos de la petición de pago (Consultar Parámetros de entrada y salida).
  • <DS_SIGNATURE>: Firma de los datos

Dichos parámetros deben enviarse a los siguientes URL dependiendo de si se quiere realizar una petición en el entorno de prueba u operaciones reales, llamando al método “trataPeticion”:

  • Pruebas: https://sis-t.redsys.es:25443/sis/services/SerClsWSEntradaV2
  • Real: https://sis.redsys.es/sis/services/SerClsWSEntradaV2

 

Una vez gestionada la petición, el TPV Virtual informará al servidor del comercio el resultado de la misma con la información del resultado incluida en un fichero XML (RETORNOXML). En él se incluirán los siguientes campos:

  • CODIGO: Código de respuesta o error SIS
  • OPERACION: Datos de respuesta de la operación. En este campo se incluirá el parámetro de salida Ds_Signature con la firma de la petición de respuesta.

 

A continuación, se describen los datos de debe incluir el DATOSENTRADA para enviar una petición de autorización con autenticación 3DSecure v2:

<DATOSENTRADA>
<DS_MERCHANT_AMOUNT>1000</DS_MERCHANT_AMOUNT>
<DS_MERCHANT_ORDER>1552572812</DS_MERCHANT_ORDER>
<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
<DS_MERCHANT_TERMINAL>2</DS_MERCHANT_TERMINAL>
<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
<DS_MERCHANT_PAN> XXXXXXXXXXXXXXXXXX </DS_MERCHANT_PAN>
<DS_MERCHANT_EXPIRYDATE >XXXX</ DS_MERCHANT_EXPIRYDATE>
<DS_MERCHANT_CVV2>XXX</ DS_MERCHANT_CVV2>
<DS_MERCHANT_EMV3DS>{
"threeDSInfo":"AuthenticationData", "protocolVersion":"2.1.0",
"browserAcceptHeader":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,ap plication/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://comercio-inventado.es/recibe-respuesta-autenticacion", "threeDSCompInd":"Y"
}</DS_MERCHANT_EMV3DS>
</DATOSENTRADA>

 

Como respuesta se obtendrá:

  • Si se hace un Frictionless, se obtendrá directamente el resultado final de la operación:
<RETORNOXML>
<CODIGO>0</CODIGO>
<OPERACION>
<Ds_Amount>1000</Ds_Amount>
<Ds_Currency>978</Ds_Currency>
<Ds_Order>1552572812</Ds_Order>
<Ds_Signature>B4Ok6jJAEOWFE6XT1nvLvUMM1kwt9CAkkLJkCHFBrso=</Ds_Signature>
<Ds_MerchantCode>999008881</Ds_MerchantCode>
<Ds_Terminal>2</Ds_Terminal>
<Ds_TransactionType>0</Ds_TransactionType>
<Ds_Response>0000</Ds_Response>
<Ds_AuthorisationCode >694432</Ds_AuthorisationCode>
<Ds_SecurePayment>1</Ds_SecurePayment>
<Ds_Language >1</Ds_Language>
<Ds_CardNumber>454881******0004</Ds_CardNumber>
<Ds_Card_Type>C</Ds_Card_Type>
<Ds_MerchantData ></Ds_MerchantData>
<Ds_Card_Country>724</Ds_Card_Country>
<Ds_Card_Brand>1</Ds_Card_Brand>
</OPERACION>
</RETORNOXML>

 

  • Si se requiere Challenge, se obtendrán los datos para realizar el Challenge:
<RETORNOXML>
<CODIGO>0</CODIGO>
<OPERACION>
<Ds_Amount>1000</Ds_Amount>
<Ds_Currency>978</Ds_Currency>
<Ds_Order>1552572812</Ds_Order>
<Ds_Signature>B4Ok6jJAEOWFE6XT1nvLvUMM1kwt9CAkkLJkCHFBrso=</Ds_Signature>
<Ds_MerchantCode>999008881</Ds_MerchantCode>
<Ds_Terminal>2</Ds_Terminal>
<Ds_TransactionType>0</Ds_TransactionType>
<Ds_EMV3DS>{"threeDSInfo":"ChallengeRequest", "protocolVersion":"2.1.0",
"acsURL":"https://sis.redsys.es/sis-simulador-web/authenticationRequest.jsp", "creq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImU5OWMzYzI2LTFiZWItNGY4NS05ZmE3LTI3OTJiZjE5NDZl
MiIsImFjc1RyYW5zSUQiOiIyMTQzNDFhYi0wMjlhLTRmMGEtOTEyNi1iMDFkYmE5OTc2MTkiLCJtZXNzYWdlVHlwZSI6Ik NSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"}</Ds_EMV3DS>
</OPERACION>
</RETORNOXML>

 

Ejecución del Challenge

 

Describimos este proceso en 3 pasos:

Paso 1.- Conexión desde el comercio el ACS del banco emisor

El siguiente paso consiste en conectar desde el comercio con la entidad emisora para que el cliente se pueda autenticar. Esta conexión se hace enviando un formulario http POST a la url del ACS del banco. Para esta conexión utilizamos los datos recibidos en el parámetro <Ds_EMV3DS> del paso anterior (parámetros acsURL y creq):

<Ds_EMV3DS>{"threeDSInfo":"ChallengeRequest", "protocolVersion":"2.1.0",
"acsURL":"https://sis.redsys.es/sis-simulador-web/authenticationRequest.jsp", "creq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImU5OWMzYzI2LTFiZWItNGY4NS05ZmE3LTI3OTJiZjE5NDZl
MiIsImFjc1RyYW5zSUQiOiIyMTQzNDFhYi0wMjlhLTRmMGEtOTEyNi1iMDFkYmE5OTc2MTkiLCJtZXNzYWdlVHlwZSI6Ik NSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"}
</Ds_EMV3DS>

 

Con los datos recibidos en <Ds_EMV3DS> sería:

<form action="https://sis.redsys.es/sis-simulador-web/authenticationRequest.jsp" method="POST" enctype = "application/x-www-form-urlencoded">

<input type="hidden" name="creq" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImU5OWMzYzI2LTFiZWItNGY4NS05ZmE3LTI3OTJiZjE5NDZlMiIsImFjc1Ry YW5zSUQiOiIyMTQzNDFhYi0wMjlhLTRmMGEtOTEyNi1iMDFkYmE5OTc2MTkiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzY WdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0">
</form>

 

Paso 2.- Ejecución del challenge

El titular se autentica por los métodos que le exija su entidad emisora: OTP, contraseña estática, biometría, etc.

Paso 3.- Recepción del resultado de la autenticación

Una vez finalizado el challenge la entidad emisora enviará el resultado al comercio, haciendo un http POST a la url del parámetro notificationURL que el comercio envió previamente en la petición de autorización:

"notificationURL":" https://comercio-inventado.es/recibe-respuesta-autenticacion"

 

El comercio recibirá el parámetro “cres” que utlizará en la petición de autorización final que vemos en el siguiente apartado.

 

 

Confirmación de autorización EMV3DS posterior al Challenge

 

A continuación, se describen los datos de debe incluir DATOSENTRADA para enviar una petición de confirmación de autorización EMV3DS:

<DATOSENTRADA>
<DS_MERCHANT_AMOUNT>1000</DS_MERCHANT_AMOUNT>
<DS_MERCHANT_ORDER>1552572812</DS_MERCHANT_ORDER>
<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
<DS_MERCHANT_TERMINAL>2</DS_MERCHANT_TERMINAL>
<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
<DS_MERCHANT_PAN> XXXXXXXXXXXXXXXXXX </DS_MERCHANT_PAN>
<DS_MERCHANT_EXPIRYDATE >XXXX</ DS_MERCHANT_EXPIRYDATE>
<DS_MERCHANT_CVV2>XXX</ DS_MERCHANT_CVV2>
<DS_MERCHANT_EMV3DS>{"threeDSInfo":"ChallengeResponse", "protocolVersion":"2.1.0",
"cres":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYw NzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJ tZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidHJhbnNTdGF0dXMiOiJZIn0="}
</DS_MERCHANT_EMV3DS>
</DATOSENTRADA>

 

Como respuesta se obtendrá el resultado final de la operación:

<RETORNOXML>
<CODIGO>0</CODIGO>
<OPERACION>
<Ds_Amount>1000</Ds_Amount>
<Ds_Currency>978</Ds_Currency>
<Ds_Order>1552572812</Ds_Order>
<Ds_Signature>B4Ok6jJAEOWFE6XT1nvLvUMM1kwt9CAkkLJkCHFBrso=</Ds_Signature>
<Ds_MerchantCode>999008881</Ds_MerchantCode>
<Ds_Terminal>2</Ds_Terminal>
<Ds_TransactionType>0</Ds_TransactionType>
<Ds_Response>0000</Ds_Response>
<Ds_AuthorisationCode >694432</Ds_AuthorisationCode>
<Ds_SecurePayment>1</Ds_SecurePayment>
<Ds_Language >1</Ds_Language>
<Ds_CardNumber>454881******0004</Ds_CardNumber>
<Ds_Card_Type>C</Ds_Card_Type>
<Ds_MerchantData ></Ds_MerchantData>
<Ds_Card_Country>724</Ds_Card_Country>
<Ds_Card_Brand>1</Ds_Card_Brand>
</OPERACION>
</RETORNOXML>