### Preauthorization REST Request (Ds_MerchantParameters only) Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-moto JSON payload for a MOTO preauthorization request via REST. Requires the Ds_Merchant_DirectPayment parameter set to 'MOTO' and Ds_Merchant_TransactionType set to '1'. The example shows the Ds_MerchantParameters field without encoding. ```json { "DS_MERCHANT_AMOUNT": "1000", "DS_MERCHANT_CURRENCY": "978", "DS_MERCHANT_CVV2": "123", "DS_MERCHANT_DIRECTPAYMENT": "MOTO", "DS_MERCHANT_EXPIRYDATE": "XXXX", "DS_MERCHANT_MERCHANTCODE": "999008881", "DS_MERCHANT_ORDER": "1524494336", "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ", "DS_MERCHANT_TERMINAL": "872", "DS_MERCHANT_TRANSACTIONTYPE": "1" } ``` -------------------------------- ### Integración inSite: formulario con redsysV3.js y getInSiteForm Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-insite Ejemplo de integración inSite que carga el script redsysV3.js de sandbox, registra un listener para recibir el ID de operación mediante storeIdOper y llama a getInSiteForm con un número de pedido generado aleatoriamente. Incluye una función de validación propia (merchantValidationEjemplo) que debe devolver true para continuar. Todos los parámetros de la llamada JavaScript deben ser cadenas (string). ```html
``` -------------------------------- ### Authorization REST Request (Ds_MerchantParameters only) Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-moto JSON payload for a MOTO authorization request via REST. Requires the Ds_Merchant_DirectPayment parameter set to 'moto' and Ds_Merchant_TransactionType set to '0'. The example shows the Ds_MerchantParameters field without encoding. ```json { "DS_MERCHANT_AMOUNT": "1000", "DS_MERCHANT_CURRENCY": "978", "DS_MERCHANT_CVV2": "123", "DS_MERCHANT_DIRECTPAYMENT": "moto", "DS_MERCHANT_EXPIRYDATE": "XXXX", "DS_MERCHANT_MERCHANTCODE": "999008881", "DS_MERCHANT_ORDER": "1524494336", "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ", "DS_MERCHANT_TERMINAL": "872", "DS_MERCHANT_TRANSACTIONTYPE": "0" } ``` -------------------------------- ### Integración por redirección simple con Redsys (PHP y Java) Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Ejemplo mínimo de integración por redirección simple al TPV Virtual para un pago de 2,49€. Inicializa el merchant con una API key de prueba, define el importe y un número de pedido aleatorio, y genera la redirección de autorización. En Java, el formulario resultante debe renderizarse en la página. ```php require_once "lib/autoload.php"; $token = "TEST_OTk5MDA4ODgxXzAwMV9zcTdIanJVT0JmS21DNTc2SUxnc2tENXNyVTg3MGdKNw"; $merchant = \Redsys\Merchant::initWithApiKey($token); $params = new \Redsys\Parameters(); $params->amount = 249; $params->order = \Redsys\Utils::randomString(); \Redsys\Redirect::authorisation($merchant, $params); ``` ```java package demo.examples.redirect; import es.redsys.lib.*; public class AuthorisationRedirectExample { public static void main() { final String token = "TEST_OTk5MDA4ODgxXzAwMV9zcTdIanJVT0JmS21DNTc2SUxnc2tENXNyVTg3MGdKNw"; final Merchant merchant = Merchant.initWithApiKey(token); final Parameters params = new Parameters(); params.setAmount("249"); params.setOrder(Utils.randomString(12)); final string redirectForm = GenerateRedirectForm.authorisation(merchant, params); //Rederizar redirectForm. } } ``` -------------------------------- ### PayGold REST Request - Ds_MerchantParameters only (uncoded) Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-paygold/paygold-rest Example REST request for PayGold with the mandatory Ds_Merchant_TransactionType set to 'F' and optional customer contact fields. The Ds_Merchant_P2F_XMLData field contains placeholders for customer name, address, free text, and email subject. ```json 1| { ---|--- 2| "DS_MERCHANT_AMOUNT": "145", 3| "DS_MERCHANT_CURRENCY": "978", 4| "DS_MERCHANT_CUSTOMER_MAIL": "Email.prueba@redsys.es ", 5| "DS_MERCHANT_CUSTOMER_MOBILE": "666555444", 6| "DS_MERCHANT_MERCHANTCODE": "999008881", 7| "DS_MERCHANT_MERCHANTURL": "http://comercio.es/notificacion", 8| "DS_MERCHANT_ORDER": "1453971987", 9| "DS_MERCHANT_P2F_XMLDATA": { 10| "NOMBRE DEL COMPRADOR 11| DIRECCION DEL COMPRADOR 12| TEXTO LIBRE 13| ASUNTO EMAIL"}, 14| "DS_MERCHANT_TERMINAL": "999", 15| "DS_MERCHANT_TRANSACTIONTYPE": "F" 16| } ``` -------------------------------- ### POST /sis/rest/trataPeticionREST (Pago manual) Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-moto Realiza un pago manual (MOTO) mediante una conexión REST al TPV Virtual. Requiere el permiso de operación manual y los parámetros Ds_Merchant_TransactionType=0 y Ds_Merchant_DirectPayment=MOTO. ```APIDOC ## POST /sis/rest/trataPeticionREST ### Description Realiza un pago manual (MOTO) mediante una conexión REST al TPV Virtual. Requiere el permiso de operación manual y los parámetros Ds_Merchant_TransactionType=0 y Ds_Merchant_DirectPayment=MOTO. ### Method POST ### Endpoint https://sis-t.redsys.es:25443/sis/rest/trataPeticionREST (Sandbox) / https://sis.redsys.es/sis/rest/trataPeticionREST (Live) ### Parameters #### Request Body - **DS_MERCHANT_AMOUNT** (string) - Required - Importe de la operación en unidades mínimas. - **DS_MERCHANT_CURRENCY** (string) - Required - Código ISO 4217 de la moneda. - **DS_MERCHANT_CVV2** (string) - Required - CVV de la tarjeta. - **DS_MERCHANT_DIRECTPAYMENT** (string) - Required - Valor "MOTO" para indicar pago manual. - **DS_MERCHANT_EXPIRYDATE** (string) - Required - Fecha de caducidad de la tarjeta (XXXX si no se usa). - **DS_MERCHANT_MERCHANTCODE** (string) - Required - Código de comercio. - **DS_MERCHANT_ORDER** (string) - Required - Número de pedido. - **DS_MERCHANT_PAN** (string) - Required - Número de tarjeta. - **DS_MERCHANT_TERMINAL** (string) - Required - Número de terminal. - **DS_MERCHANT_TRANSACTIONTYPE** (string) - Required - Tipo de transacción (0 para pago). ### Request Example { "DS_MERCHANT_AMOUNT": "1000", "DS_MERCHANT_CURRENCY": "978", "DS_MERCHANT_CVV2": "123", "DS_MERCHANT_DIRECTPAYMENT": "moto", "DS_MERCHANT_EXPIRYDATE": "XXXX", "DS_MERCHANT_MERCHANTCODE": "999008881", "DS_MERCHANT_ORDER": "1524494336", "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ", "DS_MERCHANT_TERMINAL": "872", "DS_MERCHANT_TRANSACTIONTYPE": "0" } ### Response #### Success Response (200) - **Ds_Amount** (string) - Importe de la operación. - **Ds_AuthorisationCode** (string) - Código de autorización. - **Ds_CardNumber** (string) - Número de tarjeta enmascarado. - **Ds_Card_Brand** (string) - Marca de la tarjeta. - **Ds_Card_Country** (string) - País de la tarjeta. - **Ds_Currency** (string) - Moneda. - **Ds_Language** (string) - Idioma. - **Ds_MerchantCode** (string) - Código de comercio. - **Ds_MerchantData** (string) - Datos de comercio. - **Ds_Order** (string) - Número de pedido. - **Ds_Response** (string) - Código de respuesta (0000 = éxito). - **Ds_SecurePayment** (string) - Indica si el pago es seguro. - **Ds_Terminal** (string) - Terminal. - **Ds_TransactionType** (string) - Tipo de transacción. #### Response Example { "Ds_Amount": "1000", "Ds_AuthorisationCode": "088767", "Ds_CardNumber": "454881********04", "Ds_Card_Brand": "2", "Ds_Card_Country": "840", "Ds_Currency": "978", "Ds_Language": "1", "Ds_MerchantCode": "999008881", "Ds_MerchantData": "", "Ds_Order": "1524494336", "Ds_Response": "0000", "Ds_SecurePayment": "0", "Ds_Terminal": "872", "Ds_TransactionType": "0" } ``` -------------------------------- ### Crear ApplePaySession y llamar a begin Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-otros-metodos-de-pago/otros-metodos-de-pago-apple-pay Código para crear el objeto ApplePaySession con la versión 3 y el request, y llamar al método begin para iniciar la validación del comercio. Se añade a la función buttonClicked. ```javascript // Create ApplePaySession const session = new ApplePaySession(3, request); session.begin(); ``` -------------------------------- ### POST /trataPeticion Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-operativa/preautorizaciones-y-confirmaciones Documentación de la petición REST para confirmar una preautorización en el TPV Virtual de Redsys. ```APIDOC ## POST /trataPeticion ### Description Envía una petición REST al TPV Virtual para confirmar una preautorización. El valor del parámetro Ds_Merchant_TransactionType debe ser 2. Se debe utilizar el mismo número de pedido de la operación de preautorización. ### Method POST ### Endpoint /trataPeticion ### Parameters #### Request Body - **DS_MERCHANT_ORDER** (string) - Requerido - Número de pedido de la operación a confirmar. - **DS_MERCHANT_MERCHANTCODE** (string) - Requerido - Código de comercio. - **DS_MERCHANT_TERMINAL** (string) - Requerido - Número de terminal. - **DS_MERCHANT_TRANSACTIONTYPE** (string) - Requerido - Tipo de transacción, debe ser "2" para confirmación. - **DS_MERCHANT_CURRENCY** (string) - Requerido - Código de moneda (ISO 4217). - **DS_MERCHANT_AMOUNT** (string) - Requerido - Importe de la operación. ### Request Example ```json { "DS_MERCHANT_ORDER": "1680071984", "DS_MERCHANT_MERCHANTCODE": "999008881", "DS_MERCHANT_TERMINAL": "1", "DS_MERCHANT_TRANSACTIONTYPE": "2", "DS_MERCHANT_CURRENCY": "978", "DS_MERCHANT_AMOUNT": "0000002000" } ``` ### Response #### Success Response (200) - **Ds_Amount** (string) - Importe de la operación. - **Ds_Currency** (string) - Código de moneda. - **Ds_Order** (string) - Número de pedido. - **Ds_MerchantCode** (string) - Código de comercio. - **Ds_Terminal** (string) - Número de terminal. - **Ds_Response** (string) - Código de respuesta. "0900" indica confirmación correcta. - **Ds_AuthorisationCode** (string) - Código de autorización. - **Ds_TransactionType** (string) - Tipo de transacción. - **Ds_SecurePayment** (string) - Indicador de pago seguro. - **Ds_Language** (string) - Idioma. - **Ds_MerchantData** (string) - Datos del comercio. - **Ds_Card_Country** (string) - País de la tarjeta. - **Ds_Card_Brand** (string) - Marca de la tarjeta. - **Ds_ProcessedPayMethod** (string) - Método de pago procesado. - **Ds_Control_1680100010873** (string) - Control adicional. #### Response Example ```json { "Ds_Amount": "2000", "Ds_Currency": "978", "Ds_Order": "1680071984", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_Response": "0900", "Ds_AuthorisationCode": "439764", "Ds_TransactionType": "2", "Ds_SecurePayment": "2", "Ds_Language": "1", "Ds_MerchantData": "", "Ds_Card_Country": "724", "Ds_Card_Brand": "1", "Ds_ProcessedPayMethod": "78", "Ds_Control_1680100010873": "1680100010873" } ``` ``` -------------------------------- ### Crear iframe oculto para 3DSMethod con formulario POST Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-funcionalidades-avanzadas/operativa-dcc Formulario oculto que envía el campo threeDSMethodData mediante HTTP POST a la URL devuelta en iniciaPeticion. Incluye un iframe oculto y la función ejecutar3DSMethod que envía el formulario. Debes sustituir la URL y el valor del campo con los datos reales de tu TPV Virtual y llamar a la función cuando tengas los datos necesarios. ```html ``` -------------------------------- ### Asignar método de pago con PaymentMethod (Java) Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Asigna el método de pago Bizum usando setPayMethod con la constante PaymentMethod.BIZUM. ```Java params.setPayMethod(PaymentMethod.BIZUM); ``` -------------------------------- ### Asignar parámetros con la clase Parameters (PHP) Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Crea una instancia de \Redsys\Parameters y asigna valores a propiedades como 'amount' o al nombre técnico 'DS_MERCHANT_ORDER'. Los valores deben seguir la guía de Parámetros y Respuestas del TPV Virtual. ```PHP $params = new \Redsys\Parameters(); $params->amount = "249"; $params->DS_MERCHANT_ORDER = "ABCD1234"; ``` -------------------------------- ### getInSiteForm Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-funcionalidades-avanzadas/operativa-dcc Función que genera el formulario de pago InSite y devuelve el idOper. Debe llamarse después de preparar el listener para la recepción de datos. ```APIDOC ## getInSiteForm ### Description Genera el formulario de pago InSite y devuelve el idOper. Debe llamarse después de preparar el listener para la recepción de datos. ### Method Función JavaScript ### Endpoint No aplica (función cliente) ### Parameters #### Parámetros de la función - **idContenedor** (string) - Requerido - ID del contenedor donde se generará el formulario. - **estiloBoton** (string) - Requerido - Estilo CSS para el botón de pago. - **estiloBody** (string) - Requerido - Estilo CSS para el cuerpo del formulario. - **estiloCaja** (string) - Requerido - Estilo CSS para la caja de introducción de datos. - **estiloInputs** (string) - Requerido - Estilo CSS para los campos de texto. - **textoBoton** (string) - Requerido - Texto a mostrar en el botón de pago. - **fuc** (string) - Requerido - Valor del FUC del terminal (número de comercio). - **terminal** (string) - Requerido - Identificador del terminal. - **merchantOrder** (string) - Requerido - Número de pedido (cadena alfanumérica de 4 a 12 posiciones). - **idioma** (string) - Opcional - Código de idioma según ISO 639-1. Si no se indica o es erróneo, se usa castellano. - **mostrarLogo** (boolean) - Opcional - Indica si se muestra el logo de la entidad (true) o no (false). ### Request Example ```javascript getInSiteForm('card-form', estiloBoton, estiloBody, estiloCaja, estiloInputs, 'Pagar con Redsys', fuc, terminal, merchantOrder, 'ES', true); ``` ### Response #### Success Response - **idOper** (string) - ID de operación generado, almacenado en el elemento indicado por _idToken_. #### Response Example No se proporciona ejemplo de respuesta en la documentación. ### Notes - El _merchantOrder_ utilizado en la carga del iframe y generación del idOper debe reutilizarse en la posterior petición de autorización. - El proceso de autenticación tiene el mismo formato que una autorización REST, sustituyendo los datos de la tarjeta por el idOper. - Se debe preparar un listener para recibir el idOper y los errores de validación. ``` -------------------------------- ### Rest::genericInit Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Función genérica de la clase Rest para realizar operaciones REST no contempladas específicamente en la librería. Recibe la variable Merchant, los parámetros de la operación y el tipo de transacción. ```APIDOC ## Rest::genericInit ### Description Función genérica de la clase Rest para realizar operaciones REST no contempladas específicamente en la librería. Recibe la variable Merchant, los parámetros de la operación y el tipo de transacción. ### Method static ### Endpoint \Redsys\Rest::genericInit($merchant, $parameters, $transactionType) ### Parameters - **merchant** (Merchant) - Requerido - Variable inicializada de la clase Merchant. - **parameters** (Parameters) - Requerido - Variable completada con los parámetros requeridos para operar. - **transactionType** (string) - Requerido - Tipo de transacción a realizar (ej. "3"). ### Request Example ```php $response = \Redsys\Rest::genericInit($merchant, $parameters, "3"); ``` ```java response = Rest.genericInit(merchant, params, "3"); ``` ### Response #### Success Response - **response** (Response) - Objeto de la clase Response con los datos de la respuesta del TPV Virtual. ``` -------------------------------- ### \Redsys\Redirect::generic Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Documentación de la función genérica de la clase Redirect para operaciones de redirección. ```APIDOC ## \Redsys\Redirect::generic ### Description Función genérica de la clase Redirect para realizar cualquier tipo de transacción no soportada de manera nativa por la biblioteca. Realiza la redirección de forma automática. ### Método - `generic(Merchant $merchant, Parameters $parameters, TransactionType $transactionType)` - Ejecuta una transacción genérica. ### Parámetros - `$merchant` (Merchant) - Instancia de la clase Merchant. - `$parameters` (Parameters) - Instancia de la clase Parameters con los parámetros requeridos. - `$transactionType` (TransactionType) - Tipo de transacción. Ejemplo: `\Redsys\TransactionType::$authentication`. ### Ejemplo de uso ```php \Redsys\Redirect::generic($merchant, $parameters, \Redsys\TransactionType::$authentication); ``` ### Notas - También se puede asignar el tipo de transacción durante la recogida de parámetros y omitirlo en la llamada a la función genérica. ``` -------------------------------- ### POST /sis/rest/trataPeticionREST (Preautorización) Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-moto Realiza una preautorización mediante una conexión REST al TPV Virtual. Requiere el permiso de preautorización y los parámetros Ds_Merchant_TransactionType=1 y Ds_Merchant_DirectPayment=MOTO. ```APIDOC ## POST /sis/rest/trataPeticionREST ### Description Realiza una preautorización mediante una conexión REST al TPV Virtual. Requiere el permiso de preautorización y los parámetros Ds_Merchant_TransactionType=1 y Ds_Merchant_DirectPayment=MOTO. ### Method POST ### Endpoint https://sis-t.redsys.es:25443/sis/rest/trataPeticionREST (Sandbox) / https://sis.redsys.es/sis/rest/trataPeticionREST (Live) ### Parameters #### Request Body - **DS_MERCHANT_AMOUNT** (string) - Required - Importe de la operación en unidades mínimas. - **DS_MERCHANT_CURRENCY** (string) - Required - Código ISO 4217 de la moneda. - **DS_MERCHANT_CVV2** (string) - Required - CVV de la tarjeta. - **DS_MERCHANT_DIRECTPAYMENT** (string) - Required - Valor "MOTO" para indicar pago manual. - **DS_MERCHANT_EXPIRYDATE** (string) - Required - Fecha de caducidad de la tarjeta (XXXX si no se usa). - **DS_MERCHANT_MERCHANTCODE** (string) - Required - Código de comercio. - **DS_MERCHANT_ORDER** (string) - Required - Número de pedido. - **DS_MERCHANT_PAN** (string) - Required - Número de tarjeta. - **DS_MERCHANT_TERMINAL** (string) - Required - Número de terminal. - **DS_MERCHANT_TRANSACTIONTYPE** (string) - Required - Tipo de transacción (1 para preautorización). ### Request Example { "DS_MERCHANT_AMOUNT": "1000", "DS_MERCHANT_CURRENCY": "978", "DS_MERCHANT_CVV2": "123", "DS_MERCHANT_DIRECTPAYMENT": "MOTO", "DS_MERCHANT_EXPIRYDATE": "XXXX", "DS_MERCHANT_MERCHANTCODE": "999008881", "DS_MERCHANT_ORDER": "1524494336", "DS_MERCHANT_PAN": " XXXXXXXXXXXXXXXXXX ", "DS_MERCHANT_TERMINAL": "872", "DS_MERCHANT_TRANSACTIONTYPE": "1" } ### Response #### Success Response (200) - **Ds_Amount** (string) - Importe de la operación. - **Ds_AuthorisationCode** (string) - Código de autorización. - **Ds_CardNumber** (string) - Número de tarjeta enmascarado. - **Ds_Card_Brand** (string) - Marca de la tarjeta. - **Ds_Card_Country** (string) - País de la tarjeta. - **Ds_Currency** (string) - Moneda. - **Ds_Language** (string) - Idioma. - **Ds_MerchantCode** (string) - Código de comercio. - **Ds_MerchantData** (string) - Datos de comercio. - **Ds_Order** (string) - Número de pedido. - **Ds_Response** (string) - Código de respuesta (0000 = éxito). - **Ds_SecurePayment** (string) - Indica si el pago es seguro. - **Ds_Terminal** (string) - Terminal. - **Ds_TransactionType** (string) - Tipo de transacción. #### Response Example { "Ds_Amount": "1000", "Ds_AuthorisationCode": "088767", "Ds_CardNumber": "454881********04", "Ds_Card_Brand": "2", "Ds_Card_Country": "840", "Ds_Currency": "978", "Ds_Language": "1", "Ds_MerchantCode": "999008881", "Ds_MerchantData": "", "Ds_Order": "1524494336", "Ds_Response": "0000", "Ds_SecurePayment": "0", "Ds_Terminal": "1", "Ds_TransactionType": "1" } ``` -------------------------------- ### POST /realizarPago Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/parametros-de-entrada-y-salida Documentación del endpoint de pago del TPV Virtual, incluyendo los parámetros de entrada y sus condiciones. ```APIDOC ## [POST] /realizarPago ### Description Realiza un pago en el TPV Virtual. Este endpoint permite procesar transacciones de pago con tarjeta, incluyendo operaciones de autorización, preautorización, devolución y otras según el tipo de operación indicado. ### Method POST ### Endpoint /realizarPago ### Parameters #### Request Body - **DS_MERCHANT_AMOUNT** (12 / N) - Obligatorio - Importe de la operación. Las últimas posiciones hacen referencia a los decimales de la moneda. Ejemplo: En el caso del EURO 43,45 Euros habría que indicar 4345. - **DS_MERCHANT_AUTHORISATIONCODE** (6 / AN) - Opcional - Código de autorización necesario para identificar de manera inequívoca la transacción original sobre la que se desea realizar la devolución. No se trata de un valor único por transacción, se puede repetir. Este parámetro tiene sentido en aquellos comercios que permiten repetir el número de pedido. - **DS_MERCHANT_COF_INI** (1 / AN) - Opcional - Obligatorio para operativa COF Visa y MC. Valores posibles: "S": Sí es primera transacción COF (almacenar credenciales), "N": No es primera transacción COF. Cualquier otro valor no se tendrá en cuenta y la operación no se procesará como COF. - **DS_MERCHANT_COF_TXNID** (15 / AN) - Opcional - Identificador de transacción COF. Este identificador es devuelto en la respuesta de la primera operación COF (almacenamiento de credenciales), y deberá enviarse en transacciones sucesivas realizadas con las credenciales que generaron este mismo Id_txn. - **DS_MERCHANT_COF_TYPE** (1 / AN) - Opcional - Tipo de transacción COF. Valores posibles: "I": Installments, "R": Recurring, "H": Reauthorization, "E": Resubmission, "D": Delayed, "M": Incremental, "N": No Show, "C": Otras. - **DS_MERCHANT_CONSUMERLANGUAGE** (3 / N) - Opcional - Idioma del titular. - **DS_MERCHANT_CURRENCY** (4 / Núm.) - Obligatorio - Código numérico de la moneda según el ISO-4217. - **DS_MERCHANT_CVV2** (3-4 / N) - Condicional - Código CVV2 de la tarjeta. Opcional si se envía el parámetro DS_MERCHANT_PAN y en función de la configuración del comercio. - **DS_MERCHANT_DIRECTPAYMENT** (4 / N) - Opcional - Indicador de pago sin autenticación. Valores posibles: "true": identifica la intención de realizar la operación sin autenticación. Este valor no se tendrá en cuenta si la tarjeta está afectada por PSD2. (En test ya está activo este control). "moto": identifica la operación como pago MOTO. - **DS_MERCHANT_EMV3DS** (Variable / JSON Object) - Opcional - Contiene toda la información necesaria para autenticación EMV3DS (V1 o V2). Con el fin de mejorar la experiencia del usuario en el proceso de autenticación, se recomienda añadir en la petición de pago los siguientes parámetros definidos en la versión EMV 3DS v2 (Recomendación que aportan datos adicionales del titular de la tarjeta y del dispositivo que se está utilizando. ### Request Example { "DS_MERCHANT_AMOUNT": "4345", "DS_MERCHANT_CURRENCY": "978", "DS_MERCHANT_CVV2": "123", "DS_MERCHANT_DIRECTPAYMENT": "true" } ### Response #### Success Response (200) - **DS_MERCHANT_COF_TXNID** (15 / AN) - Identificador de transacción COF devuelto en la respuesta de la primera operación COF. #### Response Example { "DS_MERCHANT_COF_TXNID": "123456789012345" } ``` -------------------------------- ### Preautorización MOTO por redirección Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-moto Realiza una preautorización de pago manual (MOTO) enviando una petición al TPV Virtual. Se debe indicar DS_MERCHANT_TRANSACTIONTYPE=1 y DS_MERCHANT_DIRECTPAYMENT=MOTO. ```APIDOC ## [POST] https://sis-t.redsys.es:25443/sis/realizarPago (Sandbox) / https://sis.redsys.es/sis/realizarPago (Live) ### Description Realiza una preautorización de pago manual (MOTO) mediante redirección al TPV Virtual. Requiere permiso de preautorización y los parámetros DS_MERCHANT_TRANSACTIONTYPE=1 y DS_MERCHANT_DIRECTPAYMENT=MOTO. ### Method POST ### Endpoint https://sis-t.redsys.es:25443/sis/realizarPago (Sandbox) / https://sis.redsys.es/sis/realizarPago (Live) ### Parameters #### Request Body - **DS_MERCHANT_ORDER** (string) - Requerido - Número de pedido. - **DS_MERCHANT_MERCHANTCODE** (string) - Requerido - Código de comercio. - **DS_MERCHANT_TERMINAL** (string) - Requerido - Número de terminal. - **DS_MERCHANT_CURRENCY** (string) - Requerido - Código de moneda (ej. 978 para EUR). - **DS_MERCHANT_DIRECTPAYMENT** (string) - Requerido - Valor "MOTO" para pago manual. - **DS_MERCHANT_TRANSACTIONTYPE** (string) - Requerido - Valor "1" para preautorización. - **DS_MERCHANT_AMOUNT** (string) - Requerido - Importe en céntimos. - **DS_MERCHANT_MERCHANTURL** (string) - Requerido - URL de notificación. - **DS_MERCHANT_URLOK** (string) - Requerido - URL de éxito. - **DS_MERCHANT_URLKO** (string) - Requerido - URL de fallo. ### Request Example { "DS_MERCHANT_ORDER": "1552565870", "DS_MERCHANT_MERCHANTCODE": "999008881", "DS_MERCHANT_TERMINAL": "999", "DS_MERCHANT_CURRENCY": "978", "DS_MERCHANT_DIRECTPAYMENT": "MOTO", "DS_MERCHANT_TRANSACTIONTYPE": "1", "DS_MERCHANT_AMOUNT": "1000", "DS_MERCHANT_MERCHANTURL": "http://www.prueba.com/urlNotificacion.php", "DS_MERCHANT_URLOK": "http://www.prueba.com/urlOK.php", "DS_MERCHANT_URLKO": "http://www.prueba.com/urlKO.php" } ### Response #### Success Response (200) - **Ds_Date** (string) - Fecha de la operación. - **Ds_Hour** (string) - Hora de la operación. - **Ds_SecurePayment** (string) - Indicador de pago seguro. - **Ds_Card_Type** (string) - Tipo de tarjeta. - **Ds_Card_Country** (string) - País de la tarjeta. - **Ds_Amount** (string) - Importe. - **Ds_Currency** (string) - Moneda. - **Ds_Order** (string) - Número de pedido. - **Ds_MerchantCode** (string) - Código de comercio. - **Ds_Terminal** (string) - Terminal. - **Ds_Response** (string) - Código de respuesta (0000 = éxito). - **Ds_MerchantData** (string) - Datos de comercio. - **Ds_TransactionType** (string) - Tipo de transacción. - **Ds_ConsumerLanguage** (string) - Idioma del consumidor. - **Ds_AuthorisationCode** (string) - Código de autorización. - **Ds_Card_Brand** (string) - Marca de la tarjeta. #### Response Example { "Ds_Date": "10%2F5%2F2019", "Ds_Hour": "09%3A41", "Ds_SecurePayment": "0", "Ds_Card_Type": "D", "Ds_Card_Country": "724", "Ds_Amount": "1000", "Ds_Currency": "978", "Ds_Order": "1575967259", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_Response": "0000", "Ds_MerchantData": "", "Ds_TransactionType": "0", "Ds_ConsumerLanguage": "1", "Ds_AuthorisationCode": "372663", "Ds_Card_Brand": "2" } ``` -------------------------------- ### Asignar parámetros con la clase Parameters (Java) Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Crea una instancia de Parameters y usa setAmount y setParam para asignar valores. setParam permite usar nombres técnicos como 'DS_MERCHANT_ORDER'. ```Java final Parameters params = new Parameters(); params.setAmount("249"); params.setParam("DS_MERCHANT_ORDER", "ABCD1234"); ``` -------------------------------- ### Respuesta del TPV Virtual con Ds_EMV3DS (ChallengeRequest) Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-operativa/operacion-autenticacion Respuesta del TPV Virtual (SIS) al enviar la petición de pago. Contiene el parámetro Ds_EMV3DS con threeDSInfo=ChallengeRequest, acsURL y creq, que se usan para la autenticación del titular. ```json { "Ds_Amount": "2000", "Ds_Currency": "978", "Ds_Order": "1681384778", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_TransactionType": "7", "Ds_EMV3DS": { "threeDSInfo": "ChallengeRequest", "protocolVersion": "2.2.0", "acsURL": "https://sis-d.redsys.es/sis-simulador-web/authenticationRequest.jsp", "creq": "eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6Ijc4NGEyZWIxLWRjN2EtNGJlZi05MjFiLWFjNzdmMTI0NmE5YSIsImFjc1RyYW5zSUQiOiIyYTZiOTAyZS1lN2YyLTQyNjYtYTkzOS0yYjE2MTdhYzlhZDYiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0" } } ``` -------------------------------- ### Asignar método de pago con PaymentMethod (PHP) Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Asigna el método de pago Bizum a la propiedad paymethod de la instancia de Parameters usando la variable estática de la clase PaymentMethod. ```PHP $params->paymethod = \Redsys\PaymentMethod::$bizum ``` -------------------------------- ### POST /procesaPago Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-funcionalidades-avanzadas/tokenizacion/tokenizacion-cit Operación de pago inicial para crear una referencia de tarjeta (tokenización) gestionada por Redsys. Envía el parámetro Ds_Merchant_Identifier con valor "REQUIRED" para que el TPV-Virtual genere y devuelva la referencia en la respuesta. ```APIDOC ## [POST] /procesaPago ### Description Operación de pago inicial para crear una referencia de tarjeta (tokenización) gestionada por Redsys. Envía el parámetro Ds_Merchant_Identifier con valor "REQUIRED" para que el TPV-Virtual genere y devuelva la referencia en la respuesta. ### Method POST ### Endpoint /procesaPago ### Parameters #### Request Body - **Ds_Merchant_Identifier** (string) - Required - Debe enviarse con valor "REQUIRED" para solicitar la creación de la referencia. ### Request Example ```json { "Ds_Merchant_Identifier": "REQUIRED" } ``` ### Response #### Success Response (200) - **Ds_Merchant_Identifier** (string) - Referencia generada que debe almacenarse y enviarse en futuras operaciones. - **Ds_ExpiryDate** (string) - Fecha de caducidad de la tarjeta en formato AAMM (ej. 2912 para diciembre de 2029). - **Ds_Merchant_Cof_Txnid** (string) - Identificador de la operación original. Opcional guardarlo, el TPV-Virtual lo incorpora automáticamente si no se especifica. - **Ds_Card_Number** (string) - Número de tarjeta con asteriscos (ej. 454881******0003). Solo si se ha configurado la recepción de datos de tarjeta. - **Ds_Card_Last4** (string) - Últimos 4 dígitos de la tarjeta real. Se informa cuando el pago se ha realizado con un token. #### Response Example ```json { "Ds_Amount": "145", "Ds_Currency": "978", "Ds_Order": "9722vBXOv5O", "Ds_MerchantCode": "999008881", "Ds_Terminal": "1", "Ds_Response": "0000", "Ds_AuthorisationCode": "381927", "Ds_TransactionType": "0", "Ds_SecurePayment": "0", "Ds_Language": "1", "Ds_Card_Number": "454881******0003", "Ds_ExpiryDate": "3412", "Ds_Merchant_Identifier": "120c14ed9f7264383434fc1154559f1e2bcc2b1c", "Ds_Card_Last4": "9123", "Ds_MerchantData": "", "Ds_Card_Country": "724", "Ds_Card_Brand": "1", "Ds_Merchant_Cof_Txnid": "2006031152000" } ``` ``` -------------------------------- ### Cargar redsysV3.js en Producción Source: https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-tipos-de-integracion/desarrolladores-insite Incluye el fichero JavaScript de Redsýs para operar en el entorno real de producción. Debe añadirse como primer paso para integrar los campos de pago en la página web. ```html ``` -------------------------------- ### Clase Parameters Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Documentación de la clase Parameters de la librería de integración con el TPV Virtual. ```APIDOC ## \Redsys\Parameters ### Description Clase que concentra la mayoría de los parámetros necesarios para la integración con el TPV Virtual. Los valores se asignan directamente sobre la instancia de la clase, utilizando propiedades equivalentes a los campos estándar del TPV Virtual. También se pueden usar los nombres técnicos de los parámetros (ej. DS_MERCHANT_AMOUNT). ### Constructor - `new \Redsys\Parameters()` - Crea una nueva instancia de la clase Parameters. ### Propiedades - `amount` (string) - Importe de la operación. Ejemplo: "249". - `DS_MERCHANT_ORDER` (string) - Número de pedido. Ejemplo: "ABCD1234". - `paymethod` (string) - Método de pago. Se puede asignar usando la clase PaymentMethod o directamente el valor. ### Métodos - `setAmount(string $amount)` - Establece el importe. - `setParam(string $name, mixed $value)` - Establece un parámetro por su nombre técnico. - `setPayMethod(string $payMethod)` - Establece el método de pago. ### Notas - Para parámetros que son arrays (ej. DS_MERCHANT_EMV3DS), no se pueden alterar los atributos del array directamente desde el parámetro; se debe extraer el array a una variable auxiliar, modificar y volver a asignar. ### Ejemplo de uso ```php $params = new \Redsys\Parameters(); $params->amount = "249"; $params->DS_MERCHANT_ORDER = "ABCD1234"; ``` ``` -------------------------------- ### Java: Procesar notificación con Parameters.digest() Source: https://pagosonline.redsys.es/desarrolladores-inicio/integrate-con-nosotros/librerias-de-integracion Ejemplo de endpoint Java que recibe la notificación HTTP del TPV Virtual. Utiliza Parameters.digest() para verificar la firma y procesar la respuesta; si la firma es incorrecta, digest() lanzará una excepción. ```java package demo.examples.redirect; import es.redsys.lib.*; public class AuthorisationNotificationExample { public static void handle(HttpExchange exchange) throws Exception { final Merchant merchant = Merchant.initWithApiKey("TEST_OTk5MDA4ODgxXzAwMV9zcTdIanJVT0JmS21DNTc2SUxnc2tENXNyVTg3MGdKNw"); final Map receivedParams = Server.getFormParams(exchange); final Parameters params = Parameters.digest(merchant, receivedParams); if(Interger.parseInt(params.getCodResponse()) == 0) { //Lógica cuando la operación es correcta. } else { //Lógica cuando la operación no es correcta. } } } ```