Peticiones para realizar una transacción con autenticación 3DSecure 1.0

 

Iniciar Petición

 

Esta petición permite obtener el tipo de autenticación 3D Secure que se puede realizar.

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:

  • Ds_SignatureVersion: Constante que indica la versión de firma que se está
  • Ds_MerchantParameters: Cadena en formato JSON con todos los parámetros de la petición codificada en Base 64 y sin retornos de carro (Consultar Parámetros de entrada y salida).
  • Ds_Signature: Firma de los datos enviados. Es el resultado del HMAC SHA256 de la cadena JSON codificada en Base 64 enviada en el parámetro anterior

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:

  • Pruebas: https://sis-t.redsys.es:25443/sis/rest/iniciaPeticionREST
  • Real: https://sis.redsys.es/sis/rest/iniciaPeticionREST

 

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:

  • Ds_SignatureVersion: Constante que indica la versión de firma que se está
  • Ds_MerchantParameters: Cadena en formato JSON con todos los parámetros de la respuesta codificada en Base 64 y sin retornos de
  • Ds_Signature: Firma de los datos Resultado del HMAC SHA256 de la cadena JSON codificada en Base 64 enviada en el parámetro anterior. El comercio es responsable de validar el HMAC enviado por el TPV Virtual para asegurarse de la validez de la respuesta. Esta validación es necesaria para garantizar que los datos no han sido manipulados y que el origen es realmente el TPV Virtual.

 

 A continuación, se describen los datos de 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":"NO_3DS_V2"
},
"Ds_Card_PSD2":"Y"
}

 

El parámetro Ds_EMV3DS estará compuesto únicamente por el siguiente campo:

  • protocolVersion: siempre indicará el número de versión mayor permitido en la operación. En el caso de que la versión exija realizar autenticación con 3DSecure 1.0 se indicará el valor “NO_3DS_V2”.

 

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.

 

 

Solicitar autorización

 

Esta petición permite indicar al comercio que quiere solicitar una transacción realizando la autenticación 3DSecure 1.0 si procede.

La solicitud 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:

  • Ds_SignatureVersion: Constante que indica la versión de firma que se está
  • Ds_MerchantParameters: Cadena en formato JSON con todos los parámetros de la petición codificada en Base 64 y sin retornos de carro (Consultar Parámetros de entrada y salida).
  • Ds_Signature: Firma de los datos Es el resultado del HMAC SHA256 de la cadena JSON codificada en Base 64 enviada en el parámetro anterior

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:

  • Pruebas: https://sis-t.redsys.es:25443/sis/rest/trataPeticionREST
  • Real: https://sis.redsys.es/sis/rest/trataPeticionREST

 

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:

  • Ds_SignatureVersion: Constante que indica la versión de firma que se está
  • Ds_MerchantParameters: Cadena en formato JSON con todos los parámetros de la respuesta codificada en Base 64 y sin retornos de
  • Ds_Signature: Firma de los datos Resultado del HMAC SHA256 de la cadena JSON codificada en Base 64 enviada en el parámetro anterior. El comercio es responsable de validar el HMAC enviado por el TPV Virtual para asegurarse de la validez de la respuesta. Esta validación es necesaria para garantizar que los datos no han sido manipulados y que el origen es realmente el TPV Virtual.

A continuación, se describen los datos que debe incluir el Ds_MerchantParameters para enviar una petición de autenticación al Servicio REST:

{
"DS_MERCHANT_ORDER":1552642885, "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":"1.0.2",
"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"
}
}

 

Como respuesta se obtendrá lo siguiente:

{
"Ds_Order":"1552642885",
"Ds_MerchantCode":"999008881", "Ds_Terminal":"2", "Ds_Currency":"978", "Ds_Amount":"1000", "Ds_TransactionType":"0", "Ds_EMV3DS": {
"threeDSInfo":"ChallengeRequest", "protocolVersion":"1.0.2",
"acsURL": "https://sis.redsys.es/sis-simulador-web/authenticationRequest.jsp", "PAReq":"eJxVUttygjAQ/RWG95KEooKzpkPVjj7QOpZ+QBp2KlYuDVDx77tRqS0zmdmzJ+zlnMBDXxycbzRNX
pUzV3jcdbDUVZaXHzP3LX26C90HCenOIC5eUXcGJSTYNOoDnTybuU1Rq7zPsFGlFmIU+mOfi4j7vrAfn3DOw9HYlbCJt/gl 4dpKUifPBzZAqmn0TpWtBKW/HtfPMhgFYSiAXSEUaNYL+brcJstNnCy381X8nAK7pKFUBcp5RUjnlZOhU5sO35XzZFSXIb AzD7rqytac5MQPgA0AOnOQu7atp4wdj0fPYNacGk9XBTBLAbvNtuls1FCpPs9kso/7lzQ+Jftln6R09p88WcRHOjNg9gZkqk U5KOIIPhVi6kfAznlQhZ1BintPcNr0gqC2TeKBsszfDJAHhiw6yWgS0hYDAuzrqkS6QbL+xkDOaEY73Cafr6zGuiXZ/lololEYW LnPjK2WkzhBJC7lLABm/2VXJ9n1GVD073n8AOa7wW0=",
"MD":"cd164a6d0b77c96f7ef476121acfa987a0edf602"
}
}

 

 

Ejecución de la autenticación

 

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ía 3 parámetros necesarios para la autenticación:

  • PaReq, cuyo valor se obtiene del parámetro PAReq obtenido en la respuesta de la petición de autorización
  • MD, cuyo valor se obtiene del parámetro MD obtenido en la respuesta de la petición de autorización
  • TermUrl, que identifica la URL a la que entidad Emisora hará un POST con el resultado de autenticación. Dicho formulario enviará un único parámetro PARes, que contiene el resultado de la autenticación y que deberá ser recogido por el comercio para su posterior envío en la petición de confirmación de autorización.

 

 

Confirmación de autorización 3DSecure 1.0 posterior al Challenge

 

A continuación, se describen los datos que debe incluir el Ds_MerchantParameters para enviar una petición de confirmación de autorización 3DSecure 1.0 al Servicio REST:

{
"DS_MERCHANT_ORDER":1552642885, "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":"1.0.2",
"PARes":"eJzFWNmSo0iyfecrymoeNVVsWqBNmWPBKlaJVcAbmwBJLALE9vWDlJVZWT3VNn3vw70yyRR4u Dvu ESeOu8X2X0N+/dLFdZOVxctX9Dvy9UtchGWUFcnLV8vkvhFf//W6NdM6jhkjDu91/LpV4qbxk/hL …..",
"MD":"035535127d549298f11d7d2fc1b0d4e9300f93f1"
}
}

 

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

{
"Ds_Amount":"1000", "Ds_Currency":"978", "Ds_Order":"1552642885",
"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_Card_Country":"724", "Ds_Card_Brand":"1"
}