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 REST al TPV Virtual En dicha petición deberá incluir los siguientes parámetros:
Dichos parámetros deben enviarse a los siguientes endpoints dependiendo de si se quiere realizar una petición en el entorno de prueba u operaciones reales:
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 JSON. En él se incluirán los siguientes campos:
A continuación, se describen los datos que debe incluir el Ds_MerchantParameters para enviar un inicia petición al Servicio REST:
{ "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_PAN":" XXXXXXXXXXXXXXXXXX ", "DS_MERCHANT_EMV3DS": {"threeDSInfo":"CardData"} }
Como respuesta se obtendrá lo siguiente:
{ "Ds_Order":"1552571678", "Ds_MerchantCode":"999008881", "Ds_Terminal":"2", "Ds_TransactionType":"0", "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_Card_PSD2":"Y" }
El parámetro Ds_EMV3DS estará compuesto por los siguientes campos:
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.
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:
Si en la respuesta no se recibe threeDSMethodURL el proceso finaliza. En la autorización enviar threeDSCompInd = N
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
La petición de autorización se hace a través de una petición REST al TPV Virtual En dicha petición deberá incluir los siguientes parámetros:
Dichos parámetros deben enviarse a los siguientes endpoints dependiendo de si se quiere realizar una petición en el entorno de prueba u operaciones reales:
Una vez gestionada la consulta, el TPV Virtual informará al servidor del comercio el resultado de la misma con la información del resultado incluida en un fichero JSON. En él se incluirán los siguientes campos:
A continuación, se describen los datos de debe incluir el Ds_MerchantParameters para enviar una petición de autorización con autenticación EMV3DS al Servicio REST:
{ "DS_MERCHANT_ORDER":1552572812, "DS_MERCHANT_MERCHANTCODE":"999008881", "DS_MERCHANT_TERMINAL":"2", "DS_MERCHANT_CURRENCY":"978", "DS_MERCHANT_TRANSACTIONTYPE":"0", "DS_MERCHANT_AMOUNT":"1000", "DS_MERCHANT_PAN":" XXXXXXXXXXXXXXXXXX ", "DS_MERCHANT_EXPIRYDATE":"XXXX", "DS_MERCHANT_CVV2":"XXX", "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", "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" } }
Como respuesta se obtendrá:
{ "Ds_Amount":"1000", "Ds_Currency":"978", "Ds_Order":"1552572812", "Ds_MerchantCode":"999008881", "Ds_Terminal":"2", "Ds_Response":"0000", "Ds_AuthorisationCode":"694432", "Ds_TransactionType":"0", "Ds_SecurePayment":"1", "Ds_Language":"1", "Ds_CardNumber":"454881******0004", "Ds_Card_Type":"C", "Ds_MerchantData":"", "Ds_Card_Country":"724", "Ds_Card_Brand":"1" }
{ "Ds_Amount":"1000", "Ds_Currency":"978", "Ds_Order":"1552572812", "Ds_MerchantCode":"999008881", "Ds_Terminal":"2", "Ds_TransactionType":"0", "Ds_EMV3DS":{ "threeDSInfo":"ChallengeRequest", "protocolVersion":"2.1.0", "acsURL":"https://sis.redsys.es/sis-simulador-web/authenticationRequest.jsp", "creq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYwNzNiNTQ 2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJtZXNzYWdlVHlwZSI 6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0" } }
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.
A continuación, se describen los datos de debe incluir el Ds_MerchantParameters para enviar una petición de confirmación de autorización EMV3DS al Servicio REST:
{ "DS_MERCHANT_ORDER":1552577128, "DS_MERCHANT_MERCHANTCODE":"999008881", "DS_MERCHANT_TERMINAL":"2", "DS_MERCHANT_CURRENCY":"978", "DS_MERCHANT_TRANSACTIONTYPE":"0", "DS_MERCHANT_AMOUNT":"1000", "DS_MERCHANT_PAN":" XXXXXXXXXXXXXXXXXX ", "DS_MERCHANT_EXPIRYDATE":"XXXX", "DS_MERCHANT_CVV2":"XXX", "DS_MERCHANT_EMV3DS":{ "threeDSInfo":"ChallengeResponse", "protocolVersion":"2.1.0", "cres":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYw NzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJ tZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidHJhbnNTdGF0dXMiOiJZIn0=" } }
Como respuesta se obtendrá el resultado final de la operación:
{ "Ds_Amount":"1000", "Ds_Currency":"978", "Ds_Order":"1552572812", "Ds_MerchantCode":"999008881", "Ds_Terminal":"2", "Ds_Response":"0000", "Ds_AuthorisationCode":"694432", "Ds_TransactionType":"0", "Ds_SecurePayment":"1", "Ds_Language":"1", "Ds_CardNumber":"454881******0004", "Ds_Card_Type":"C", "Ds_MerchantData":"", "Ds_Card_Country":"724", "Ds_Card_Brand":"1" }