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.
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.
Se recibirán dos claves privadas con el protocolo establecido por Redsys.
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.
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:
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
{"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"}
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==
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