Integración para PSP

 

Si eres un agregador de comercio o PSPs hay una integración específica para que, de esta forma, con clave secreta para PSP puedan operar en nombre de los comercios a nivel de terminal.

Para estas peticiones los parámetros a enviar son los mismos que en la petición habitual de comercios, pero estos tendrán una versión de firma y firma en ANSI X9.19.

No se definen flujos específicos para PSP. Los parámetros de entrada y salida así como los códigos de error se podrán ver en Parámetros de entrada y salida y Códigos de error.

NOTA: para realizar esta integración se requiere activación por parte de la Entidad.

 

1. Configuración

 

Los comercios-terminales deberán estar asociados y configurados para poder enviar peticiones desde un PSP. Esta configuración debe solicitársela el comercio a su entidad.

 

2. Solicitud y recepción de claves

 

Se recibirán dos claves privadas con el protocolo establecido por Redsys.

  • Clave para realizar cifrado 3DES del campo DS_MERCHANT_PAN
  • Clave para firmar la petición (DS_MERCHANTPARAMETERS) según la normal 19

 

3. Envío de petición al TPV Virtual

 

Al igual que en la petición de pago enviada por un comercio, el PSP tiene los campos siguientes variando como hemos comentado antes la firma y su versión de firma.

  • Ds_SignatureVersion: Constante que indica la versión de firma que se está utilizando. Para esta integración de PSP el valor a utilizar será
  • Ds_MerchantParameters: Cadena en formato JSON con todos los parámetros de la petición codificada en Base 64 y sin retornos de carro (En la sección de anexos se incluye la lista de parámetros que se pueden enviar en una solicitud de pago). Si se envía el campo DS_MERCHANT_PAN este debe estar firmado con
  • Ds_Signature: Firma de los datos Es el resultado del Mac X9.19 de la cadena JSON codificada en Base 64 enviada en el parámetro anterior. El valor a enviar en el campo Ds_Signature se obtiene convirtiendo a hexadecimal la Mac obtenida en el paso anterior y cogiendo los 4 primeros bytes (8 caracteres) iniciando por la izquierda del resultado.

 

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/trataPeticionPSPREST
  • Real: https://sis.redsys.es/sis/rest/trataPeticionPSPREST

 

4. Recepción del resultado

 

La recepción del resultado será firmada de la misma forma que la petición de envío, según la norma ANSI x9.19

 

5. Ejemplo de peticiones

 

Cadena en JSON

{"DS_MERCHANT_AMOUNT":"145","DS_MERCHANT_ORDER":"1446068581","DS_MERCHANT_MERCHANTCODE":"999008881","DS_MERCHANT_CURRENCY":"978","DS_MERCHANT_TRANSACTIONTYPE":"0","DS_MERCHANT_TERMINAL":"1","DS_MERCHANT_MERCHANTURL":"http:\/\/www.prueba.com\/urlNotificacion.php","DS_MERCHANT_PAN":"454881********04", "DS_MERCHANT_EXPIRYDATE":"1512","DS_MERCHANT_CVV2":"123"}

 

Ciframos en 3DES el parámetro DS_MERCHANT_PAN

Número de Tarjeta:454881********04

Número de tarjeta hexadecimal cifrado en 3DES modo CBC sin vector, clave F180E06B7A89A88F4A2A52C8EC1C5D1C:377f34989cf0ae79857a70aa45f3e4c3

 

Cadena en JSON con PAN cifrado:

{"DS_MERCHANT_AMOUNT":"145","DS_MERCHANT_ORDER":"1446068581","DS_MERCHANT_MERCHANTCODE":"999008881","DS_MERCHANT_CURRENCY":"978","DS_MERCHANT_TRANSACTIONTYPE":"0","DS_MERCHANT_TERMINAL":"1","DS_MERCHANT_MERCHANTURL":"http:\/\/www.prueba.com\/urlNotificacion.php","DS_MERCHANT_PAN":"377f34989cf0ae7985 7a70aa45f3e4c3","DS_MERCHANT_EXPIRYDATE":"1512","DS_MERCHANT_CVV2":"123"}

 

A    continuación,   se    muestra    el    objeto    JSON   codificado   en      BASE64,          campo DS_MERCHANT_PARAMETERS:

eyJEU19NRVJDSEFOVF9BTU9VTlQiOiIxNDUiLCJEU19NRVJDSEFOVF9PUkRFUiI6IjE0NDYwNjg1ODEiLCJEU19NRVJDSEFOVF9NR VJDSEFOVENPREUiOiI5OTkwMDg4ODEiLCJEU19NRVJDSEFOVF9DVVJSRU5DWSI6Ijk3OCIsIkRTX01FUkNIQU5UX1RSQU5TQUN USU9OVFlQRSI6IjAiLCJEU19NRVJDSEFOVF9URVJNSU5BTCI6IjEiLCJEU19NRVJDSEFOVF9NRVJDSEFOVFVSTCI6Imh0dHA6XC9cL

3d3dy5wcnVlYmEuY29tXC91cmxOb3RpZmljYWNpb24ucGhwIiwiRFNfTUVSQ0hBTlRfUEFOIjoiMzc3ZjM0OTg5Y2YwYWU3OTg 1N2E3MGFhNDVmM2U0YzMiLCJEU19NRVJDSEFOVF9FWFBJUllEQVRFIjoiMTUxMiIsIkRTX01FUkNIQU5UX0NWVjIiOiIxMjMif Q==

 

Firmar los datos de la petición

Sobre toda la cadena obtenida en el paso anterior (DS_MERCHANT_PARAMETERS) se calcula la firma completa en base a la norma x9.19.

Obtenemos      la       MAC      5D823A402DE70705     con      la       clave      de       cifrado 269289DA6EAD0B20928C8F2F2F6BC752 y el ds_merchant_parameters.

 

El campo ds_signature será cogiendo los 4 primeros bytes (8 caracteres) iniciando por la izquierda del resultado del MAC del paso anterior 5D823A40

Formar el mensaje de la petición

  • Ds_SignatureVersion: T25V1
  • Ds_MerchantParameters: eyJEU19NRVJDSEFOVF9BTU9VTlQiOiIxNDUiLCJEU19NRVJDSEFOVF9PUkRFUiI6IjE0NDYwNjg1ODEiLCJEU19NRVJD SEFOVF9NRVJDSEFOVENPREUiOiI5OTkwMDg4ODEiLCJEU19NRVJDSEFOVF9DVVJSRU5DWSI6Ijk3OCIsIkRTX01FUk NIQU5UX1RSQU5TQUNUSU9OVFlQRSI6IjAiLCJEU19NRVJDSEFOVF9URVJNSU5BTCI6IjEiLCJEU19NRVJDSEFOVF9NR VJDSEFOVFVSTCI6Imh0dHA6XC9cL3d3dy5wcnVlYmEuY29tXC91cmxOb3RpZmljYWNpb24ucGhwIiwiRFNfTUVSQ0h BTlRfUEFOIjoiMzc3ZjM0OTg5Y2YwYWU3OTg1N2E3MGFhNDVmM2U0YzMiLCJEU19NRVJDSEFOVF9FWFBJUllEQV RFIjoiMTUxMiIsIkRTX01FUkNIQU5UX0NWVjIiOiIxMjMifQ==
  • Ds_Signature: 5D823A40