CONEXIÓN POR REDIRECCIÓN.

Funcionamiento redirección

El siguiente esquema presenta el flujo general de una operación realizada con el TPV virtual.

descripcion general del flujo
  1. El titular selecciona los productos que desea comprar en el comercio.
  2. El comercio redirige la sesión del navegador del cliente a la URL de Redsys. En esta URL el cliente introduce los datos de tarjeta.
  3. El TPV virtual informa al comercio del resultado de la operación.
  4. Redsys devuelve la sesión del navegador del cliente al comercio para que continue navegando en su tienda web.

Formulario de envío de petición

El comercio deberá montar un formulario con los parámetros de la petición de pago que debe hacer llegar al TPV virtual a través del navegador del cliente. Éstos parámetros son:

  • Ds_MerchantParameters: Datos de la petición de pago.
  • Ds_SignatureVersion: Versión del algoritmo de firma.
  • Ds_Signature: Firma de los datos de la petición de pago.

Este formulario deberá ser enviado mediante el método "post" a la url que corresponda:

Entorno URL conexión
Pruebas https://sis-t.redsys.es:25443/sis/realizarPago
Real https://sis.redsys.es/sis/realizarPago

A continuación se detalla como se obtiene el valor de cada parámetro:

Ds_MerchantParameters

Se debe montar una cadena en formato JSON con todos los datos de la petición. El nombre de cada parámetro debe indicarse en mayúsculas o con estructura “CamelCase” (Por ejemplo: DS_MERCHANT_AMOUNT o Ds_Merchant_Amount). La lista de parámetros que se pueden incluir en la petición se puede ver aquí.

Para todas las peticiones se deben enviar los parámetros obligatorios. Los parámetros opcionales deben usarse si el comercio desea utilizar operativas especiales, como por ejemplo el “Pago por referencia” (Pago 1-Click). En este caso, se deberán incluir los parámetros específicos de este tipo de operativa en el parámetro "Ds_MerchantParameters".

A continuación, se muestran un ejemplo de la cadena en formato JSON:

							
{
  "DS_MERCHANT_AMOUNT": "145",
  "DS_MERCHANT_CURRENCY": "978",
  "DS_MERCHANT_MERCHANTCODE": "999008881",
  "DS_MERCHANT_MERCHANTURL": "http://www.prueba.com/urlNotificacion.php",
  "DS_MERCHANT_ORDER": "1446068581",
  "DS_MERCHANT_TERMINAL": "1",
  "DS_MERCHANT_TRANSACTIONTYPE": "0",
  "DS_MERCHANT_URLKO": "http://www.prueba.com/urlKO.php",
  "DS_MERCHANT_URLOK": "http://www.prueba.com/urlOK.php"
}   
							
						

Tras montar la cadena, es necesario codificarla en BASE64, y sin espacios en blanco. La cadena resultante de la codificación en BASE64 será el valor del parámetro "Ds_MerchantParameters":

							
								eyJEU19NRVJDSEFOVF9BTU9VTlQiOiAiMTQ1IiwiRFNfTUVSQ0hBTlRfQ1VSUkVOQ1kiOiAiOTc4IiwiRFNfTUVSQ0hBTlRfTUVSQ0hBTlRDT0RFIjogIjk5OTAwODg4MSIsIkRTX01FUkNIQU5UX01FUkNIQU5UVVJMIjogImh0dHA6Ly93d3cucHJ1ZWJhLmNvbS91cmxOb3RpZmljYWNpb24ucGhwIiwiRFNfTUVSQ0hBTlRfT1JERVIiOiAiMTQ0NjA2ODU4MSIsIkRTX01FUkNIQU5UX1RFUk1JTkFMIjogIjEiLCJEU19NRVJDSEFOVF9UUkFOU0FDVElPTlRZUEUiOiAiMCIsIkRTX01FUkNIQU5UX1VSTEtPIjogImh0dHA6Ly93d3cucHJ1ZWJhLmNvbS91cmxLTy5waHAiLCJEU19NRVJDSEFOVF9VUkxPSyI6ICJodHRwOi8vd3d3LnBydWViYS5jb20vdXJsT0sucGhwIn0=
							
						

Ds_SignatureVersion

En la petición se debe identificar la versión concreta de algoritmo que se está utilizando para la firma. Actualmente se utiliza el valor HMAC_SHA256_V1 para identificar la versión de todas las peticiones, por lo que este será el valor de éste parámetro.


Ds_Signature

La firma de la operación ("Ds_Signature") se calculará utilizando el parámetro "Ds_MerchantParameters" (ya codificado en BASE64), y la clave específica del terminal (clave del comercio). Ésta clave se puede obtener accediendo al Módulo de Administración, opción Consulta datos de Comercio, en el apartado “Ver clave”, tal y como se muestra en la siguiente imagen:

descripcion general del flujo
  1. Una vez obtenida la clave del comercio debe codificarse en BASE64.
  2. Diversificar la clave de firma realizando un cifrado 3DES entre esta clave codificada y el valor del número de pedido de la operación (Ds_Merchant_Order).
  3. Se realiza el cálculo del HMAC-256 con el parámentro "Ds_MerchantParameters" y la clave de firma diversificada.
  4. El valor del HMAC SHA256 debe codificarse en BASE64, siendo su resultado el valor de la firma.

    NOTA: Si la petición se hace mediante cURL o mediante el navegador Safari, puede que se conviertan los símbolos “+” en espacio en blanco. Para que esto no ocurra se deben sustituir los símbolos “+” de la firma por “%2B” (Valor URL encoded)

A continuación se muestra un ejemplo de formulario de petición de pago:

                      
<form name="from" action="https://sis-t.redsys.es:25443/sis/realizarPago" method="POST">
	<input type="hidden" name="Ds_SignatureVersion" value="HMAC_SHA256_V1"/>
	<input type="hidden" name="Ds_MerchantParameters" value="
		eyJEU19NRVJDSEFOVF9BTU9VTlQiOiAiMTQ1IiwiRFNfTUVSQ0hBTlRfQ1VSUkVOQ1kiOiAiOTc4IiwiRFNfTUVSQ0hBTlRfTUVSQ0hBTlRDT0RFIjogIjk5OTAwODg4MSIsIkRTX01FUkNIQU5UX01FUkNIQU5UVVJMIjogImh0dHA6Ly93d3cucHJ1ZWJhLmNvbS91cmxOb3RpZmljYWNpb24ucGhwIiwiRFNfTUVSQ0hBTlRfT1JERVIiOiAiMTQ0NjA2ODU4MSIsIkRTX01FUkNIQU5UX1RFUk1JTkFMIjogIjEiLCJEU19NRVJDSEFOVF9UUkFOU0FDVElPTlRZUEUiOiAiMCIsIkRTX01FUkNIQU5UX1VSTEtPIjogImh0dHA6Ly93d3cucHJ1ZWJhLmNvbS91cmxLTy5waHAiLCJEU19NRVJDSEFOVF9VUkxPSyI6ICJodHRwOi8vd3d3LnBydWViYS5jb20vdXJsT0sucGhwIn0="/>
	<input type="hidden" name="Ds_Signature" value="PqV2+SF6asdasMjXasKJRTh3UIYya1hmU/igHkzhC+R="/>	
</form>
          
                    
                    

Autenticación 3DSecure

Este tipo de integración permite realizar pagos con autenticación del titular mediante el protocolo 3DSecure definido por las marcas. Este tipo de integración está preparada para utilizar las diferentes versiones de dicho protocolo, tanto la versión 3DS v1 como la EMV 3DS 2.

Todos los comercios que utilizan este tipo de conexión con redirección a la página de pago, están preparados para realizar pagos con autenticación del titular mediante protocolo 3DS, versión 3DS v1 y por tanto están preparados para el cumplimiento de la normativa PSD2 (directiva europea que tiene como objetivo mejorar la seguridad y reforzar la autenticación del cliente en las operaciones de comercio electrónico).

Adicionalmente y, con el fin de mejorar la experiencia del usuario en el proceso de autenticación, se pueden añadir en la petición de pago los parámetros que han definido las marcas para la versión EMV3DS v2, que aportan datos adicionales del titular de la tarjeta y del dispositivo que está utilizando. En este caso el comercio tiene que añadir en la petición de pago y preautorización el parámetro de entrada DS_MERCHANT_EMV3DS tipo JSON.

Notificación Online

La notificación on-line es una función que permite a la tienda web recibir el resultado de una transacción de forma on-line y en tiempo real, una vez que el cliente ha completado el proceso de pago. El comercio debe capturar y validar todos los parámetros junto a la firma de la notificación on-line de forma previa a cualquier ejecución en su servidor.

                      
/*Importar el fichero principal de la librería, tal y como se muestra
a continuación. El comercio debe decidir si la importación desea hacerla con la
función “include” o “required”, según los desarrollos realizados.*/
  include_once 'redsysHMAC256_API_PHP_4.0.2/apiRedsys.php'; 

/*Definir un objeto de la clase principal de la librería, tal y como se
muestra a continuación:*/
  $miObj = new RedsysAPI; 

/*Capturar los parámetros de la notificación on-line:*/
  $version = $_POST["Ds_SignatureVersion"]; 
  $params = $_POST["Ds_MerchantParameters"]; 
  $signatureRecibida = $_POST["Ds_Signature"]; 

/*Decodificar el parámetro Ds_MerchantParameters. Para llevar
a cabo la decodificación de este parámetro, se debe llamar a la
función de la librería “decodeMerchantParameters()”, tal y como
se muestra a continuación:*/
  $decodec = $miObj->decodeMerchantParameters($params); 

/*Una vez se ha realizado la llamada a la función
“decodeMerchantParameters()”, se puede obtener el valor de
cualquier parámetro que sea susceptible de incluirse en la
notificación on-line. Para llevar a cabo la obtención del valor de un
parámetro se debe llamar a la función “getParameter()” de la
librería con el nombre de parámetro, tal y como se muestra a
continuación para obtener el código de respuesta:*/
  $codigoRespuesta = $miObj->getParameter("Ds_Response"); 

/** NOTA IMPORTANTE: Para garantizar la seguridad y el
origen de las notificaciones el comercio debe llevar a cabo
la validación de la firma recibida y de todos los parámetros
que se envían en la notificación.*/

/*Validar el parámetro Ds_Signature. Para llevar a cabo la
validación de este parámetro se debe calcular la firma y
compararla con el parámetro Ds_Signature capturado. Para ello
se debe llamar a la función de la librería
“createMerchantSignatureNotif()” con la clave obtenida del
módulo de administración y el parámetro
Ds_MerchantParameters capturado, tal y como se muestra a
continuación:*/
  $claveModuloAdmin = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7'; 
  $signatureCalculada = $miObj->createMerchantSignatureNotif($claveModuloAdmin, $params); 

/*Una vez hecho esto, ya se puede validar si el valor de la firma
enviada coincide con el valor de la firma calculada, tal y como se
muestra a continuación:*/
  if ($signatureCalculada === $signatureRecibida) { 
  echo "FIRMA OK. Realizar tareas en el servidor";
  } else { 
  echo "FIRMA KO. Error, firma inválida"; 
  }
                      
                      
                      
/*Importar la librería, tal y como se muestra a continuación:*/
  <%@page import = "sis.redsys.api.ApiMacSha256" %> 
  
/** El comercio debe incluir en la vía de construcción del proyecto
todas las librerías(JARs) que se proporcionan:*/
  

/* Definir un objeto de la clase principal de la librería, tal y como se
muestra a continuación:*/
  ApiMacSha256 apiMacSha256 = new ApiMacSha256(); 

/* Capturar los parámetros de la notificación on-line: */
  String version = request.getParameter("Ds_SignatureVersion"); 
  String params = request.getParameter("Ds_MerchantParameters"); 
  String signatureRecibida = request.getParameters("Ds_Signature"); 
  
/* Decodificar el parámetro Ds_MerchantParameters. Para llevar
a cabo la decodificación de este parámetro, se debe llamar a la
función de la librería “decodeMerchantParameters()”, tal y como
se muestra a continuación:*/
  String decodec = apiMacSha256.decodeMerchantParameters(params); 

/* Una vez se ha realizado la llamada a la función
“decodeMerchantParameters()”, se puede obtener el valor de
cualquier parámetro que sea susceptible de incluirse en la
notificación on-line. Para llevar a cabo la obtención del valor de un
parámetro se debe llamar a la función “getParameter()” de la
librería con el nombre de parámetro, tal y como se muestra a
continuación para obtener el código de respuesta:*/
  String codigoRespuesta = apiMacSha256.getParameter("Ds_Response"); 

/**NOTA IMPORTANTE: Para garantizar la seguridad y el
origen de las notificaciones el comercio debe llevar a cabo
la validación de la firma recibida y de todos los parámetros
que se envían en la notificación.*/

/* Validar el parámetro Ds_Signature. Para llevar a cabo la
validación de este parámetro se debe calcular la firma y
compararla con el parámetro Ds_Signature capturado. Para ello
se debe llamar a la función de la librería
“createMerchantSignatureNotif()” con la clave obtenida del
módulo de administración y el parámetro
Ds_MerchantParameters capturado, tal y como se muestra a
continuación:*/
  String claveModuloAdmin = "sq7HjrUOBfKmC576ILgskD5srU870gJ7"; 
  String signatureCalculada = apiMacSha256.createMerchantSignatureNotif(claveModuloAdmin, params); 

/* Una vez hecho esto, ya se puede validar si el valor de la firma
enviada coincide con el valor de la firma calculada, tal y como se
muestra a continuación:*/
  if (signatureCalculada.equals(signatureRecibida)) { 
  System.out.println("FIRMA OK. Realizar tareas en el servidor");
  } else { 
  System.out.println("FIRMA KO. Error, firma inválida"); 
  }
                      
									
									
									
										
										
										
										
										
										
										
										
										
										
										
                      
                          
/* Importar la librería RedsysAPI y Newronsoft.Json en su proyecto y, a continuación, se capturan
 los parámetros de la notificación on-line: */
  RedsysAPI  r = new RedsysAPI() 


  if (Request.Form["Ds_SignatureVersion"] != null) { 
  version = Request.Form["Ds_SignatureVersion"]; 
  } 

  if (Request.Form["Ds_MerchantParameters"] != null) { 
  data = Request.Form["Ds_MerchantParameters"]; 
  } 

  if (Request.Form["Ds_Signature"] != null) { 
  signatureReceived = Request.Form["Ds_Signature"]; 
  } 

/*Decodificar el parámetro Ds_MerchantParameters. Para llevar
a cabo la decodificación de este parámetro, se debe llamar a la
función de la librería “decodeMerchantParameters()” que genera
la cadena (tipo string) JSON de la respuesta, tal y como se
muestra a continuación:*/
  string deco = r.decodeMerchantParameters(data);
  
/** NOTA IMPORTANTE: Para garantizar la seguridad y el
origen de las notificaciones el comercio debe llevar a cabo
la validación de la firma recibida y de todos los parámetros
que se envían en la notificación.*/

/* Validar el parámetro Ds_Signature. Para llevar a cabo la
validación de este parámetro se debe calcular la firma y
compararla con el parámetro Ds_Signature capturado. Para ello
se debe llamar a la función de la librería
“createMerchantSignatureNotif()” con la clave obtenida del
módulo de administración y el parámetro
Ds_MerchantParameters capturado, tal y como se muestra a
continuación:*/
  string kc = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev"; 
  string notif  =  r.createMerchantSignatureNotif(kc, data); 

/* Una vez hecho esto, ya se puede validar si el valor de la firma
enviada coincide con el valor de la firma calculada, tal y como se
muestra a continuación:*/
  string text = ""; 
  if (notif.Equals(signatureReceived) && notif != "") { 
  text = "SIGNATURE OK";
  } else { 
  text = "SIGNATURE KO"; 
  } 
                          
                        

Retorno navegación

Una vez que el cliente ha realizado el proceso de pago, se redirige la navegación hacia a la tienda web. Este retorno a la web de la tienda se realiza hacia la URL comunicada como parámetro en la llamada inicial al TPV virtual o en su defecto, se obtiene de la configuración del terminal en el módulo de administración del TPV virtual. Se pueden disponer de URLs de retorno distintas según el resultado de la transacción (URL OK y URL KO). El comercio debe capturar y validar, en caso de que la configuración de su comercio así lo requiera (Parámetro en las URLs = SI), los parámetros del retorno de control de navegación previo a cualquier ejecución en su servidor. La utilización de las librerías de ayuda proporcionadas por Redsys para la captura y validación de los parámetros del retorno de control de navegación, se expone a continuación.

                      
/*Importar el fichero principal de la librería, tal y como se muestra
a continuación. El comercio debe decidir si la importación desea hacerla con la
función “include” o “required”, según los desarrollos realizados.*/
  include_once 'redsysHMAC256_API_PHP_4.0.2/apiRedsys.php'; 

/*Definir un objeto de la clase principal de la librería, tal y como se
muestra a continuación:*/
  $miObj = new RedsysAPI; 
  
/*Capturar los parámetros de la notificación on-line:*/
  $version = $_GET["Ds_SignatureVersion"]; 
  $params = $_GET["Ds_MerchantParameters"]; 
  $signatureRecibida = $_GET["Ds_Signature"]; 

/*Decodificar el parámetro Ds_MerchantParameters. Para llevar
a cabo la decodificación de este parámetro, se debe llamar a la
función de la librería “decodeMerchantParameters()”, tal y como
se muestra a continuación:*/
  $decodec = $miObj->decodeMerchantParameters($params); 

/*Una vez se ha realizado la llamada a la función
“decodeMerchantParameters()”, se puede obtener el valor de
cualquier parámetro que sea susceptible de incluirse en la
notificación on-line. Para llevar a cabo la obtención del valor de un
parámetro se debe llamar a la función “getParameter()” de la
librería con el nombre de parámetro, tal y como se muestra a
continuación para obtener el código de respuesta:*/
  $codigoRespuesta = $miObj->getParameters("Ds_Response"); 

/** NOTA IMPORTANTE: Es importante llevar a cabo la
validación de todos los parámetros que se envían en la
comunicación. Para actualizar el estado del pedido de
forma on-line NO debe usarse esta comunicación, sino la
notificación on-line descrita en los otros apartados, ya que
el retorno de la navegación depende de las acciones del
cliente en su navegador.*/

/*Validar el parámetro Ds_Signature. Para llevar a cabo la
validación de este parámetro se debe calcular la firma y
compararla con el parámetro Ds_Signature capturado. Para ello
se debe llamar a la función de la librería
“createMerchantSignatureNotif()” con la clave obtenida del
módulo de administración y el parámetro
Ds_MerchantParameters capturado, tal y como se muestra a
continuación:*/
  $claveModuloAdmin = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7'; 
  $signatureCalculada = $miObj->createMerchantSignatureNotif($claveModuloAdmin, $params); 

/*Una vez hecho esto, ya se puede validar si el valor de la firma
enviada coincide con el valor de la firma calculada, tal y como se
muestra a continuación:*/
  if ($signatureCalculada === $signatureRecibida) { 
  echo "FIRMA OK. Realizar tareas en el servidor";
  } else { 
  echo "FIRMA KO. Error, firma inválida"; 
  }
                      
                      
                      
/* Importar libreria, tal y como se muestra a continuación: */
  <%@page import="sis.redsys.api.ApiMacSha256" %> 

/*El comercio debe incluir en la vía de construcción del proyecto
todas las librerías(JARs) que se proporcionan:*/

/*Definir un objeto de la clase principal de la librería, tal y como se
muestra a continuación:*/
  ApiMacSha256 apiMacSha256 = new ApiMacSha256(); 

/*Capturar los parámetros del retorno de control de navegación:*/
  String version = request.getParameter("Ds_SignatureVersion"); 
  String params = request.getParameter("Ds_MerchantParameters"); 
  String signatureRecibida = request.getParameters("Ds_Signature"); 

/*Decodificar el parámetro Ds_MerchantParameters. Para llevar
a cabo la decodificación de este parámetro, se debe llamar a la
función de la librería “decodeMerchantParameters()”, tal y como
se muestra a continuación:*/
  String decodec = apiMacSha256.decodeMerchantParameters(params);

/*Una vez se ha realizado la llamada a la función
“decodeMerchantParameters()”, se puede obtener el valor de
cualquier parámetro que sea susceptible de incluirse en la
retorno de control de navegación. Para llevar a cabo la obtención del
valor de un parámetro se debe llamar a la función
“getParameter()” de la librería con el nombre de parámetro, tal y
como se muestra a continuación para obtener el código de
respuesta:*/
  String codigoRespuesta = apiMacSha256.getParameter("Ds_Response"); 

/**NOTA IMPORTANTE: Es importante llevar a cabo la
validación de todos los parámetros que se envían en la
comunicación. Para actualizar el estado del pedido de
forma on-line NO debe usarse esta comunicación, sino la
notificación on-line descrita en los otros apartados, ya que
el retorno de la navegación depende de las acciones del
cliente en su navegador.*/

/*Validar el parámetro Ds_Signature. Para llevar a cabo la
validación de este parámetro se debe calcular la firma y
compararla con el parámetro Ds_Signature capturado. Para ello
se debe llamar a la función de la librería
“createMerchantSignatureNotif()” con la clave obtenida del
módulo de administración y el parámetro
Ds_MerchantParameters capturado, tal y como se muestra a
continuación:*/
  String claveModuloAdmin = "sq7HjrUOBfKmC576ILgskD5srU870gJ7"; 
  String signatureCalculada = apiMacSha256.createMerchantSignatureNotif(claveModuloAdmin, params); 

/*Una vez hecho esto, ya se puede validar si el valor de la firma
enviada coincide con el valor de la firma calculada, tal y como se
muestra a continuación:*/
  if (signatureCalculada.equals(signatureRecibida)) { 
  System.out.println("FIRMA OK. Realizar tareas en el servidor");
  } else { 
  System.out.println("FIRMA KO. Error, firma inválida"); 
  }
                      
                      
                          
/*Importar la librería, tal y como se muestra a continuación:*/
  using RedsysAPIPrj; 

/*Definir un objeto de la clase principal de la librería, tal y como se muestra a
continuación:*/
  RedsysAPI  r = new RedsysAPI() 

/*Capturar los parámetros del retorno de control de navegación:*/
  string version = Request.QueryString["Ds_SignatureVersion"]; 
  string params = Request.QueryString["Ds_MerchantParameters"]; 
  string signatureRecibida = Request.QueryString["Ds_Signature"]; 

/** NOTA IMPORTANTE: Es importante llevar a cabo la
validación de todos los parámetros que se envían en la
comunicación. Para actualizar el estado del pedido de
forma on-line NO debe usarse esta comunicación, sino la
notificación on-line descrita en los otros apartados, ya que
el retorno de la navegación depende de las acciones del
cliente en su navegador.*/

/*Validar el parámetro Ds_Signature. Para llevar a cabo la
validación de este parámetro se debe calcular la firma y
compararla con el parámetro Ds_Signature capturado. Para ello
se debe llamar a la función de la librería
“createMerchantSignatureNotif()” con la clave obtenida del
módulo de administración y el parámetro
Ds_MerchantParameters capturado, tal y como se muestra a
continuación:*/
  string kc = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev"; 
  string signatureCalculada  =  r.createMerchantSignatureNotif(kc, params); 

/*Una vez hecho esto, ya se puede validar si el valor de la firma
enviada coincide con el valor de la firma calculada, tal y como se
muestra a continuación:*/
  if(signatureRecibida == signatureCalculada) {
    result.InnerHTML = "FIRMA OK. Realizar tareas en el servidor."
  } else {
    result.InnerHTML = "FIRMA KO. Error, firma inválida."
  }

                          
                        

Utilización de librerías de ayuda

De forma opcional, Redsys suministra librerias (disponibles en PHP, JAVA y .NET) que simplifican la integración por parte del comercio. En este apartado se explica cómo se utilizan éstas librerias.

                      	
       /* Importar el fichero principal de la librería, tal y como se muestra a
continuación: */
include_once 'redsysHMAC256_API_PHP_4.0.2/apiRedsys.php';
//El comercio debe decidir si la importación desea hacerla con la función
“include” o “required”, según los desarrollos realizados.
/* Definir un objeto de la clase principal de la librería, tal y como se
muestra a continuación: */
$miObj = new RedsysAPI;
/* Calcular el parámetro Ds_MerchantParameters. Para llevar a cabo el cálculo
de este parámetro, inicialmente se deben añadir todos los parámetros de la
petición de pago que se desea enviar, tal y como se muestra a continuación: */
$miObj->setParameter("DS_MERCHANT_AMOUNT", $amount);
$miObj->setParameter("DS_MERCHANT_ORDER", $id);
$miObj->setParameter("DS_MERCHANT_MERCHANTCODE", $fuc);
$miObj->setParameter("DS_MERCHANT_CURRENCY", $moneda);
$miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE", $trans);
$miObj->setParameter("DS_MERCHANT_TERMINAL", $terminal);
$miObj->setParameter("DS_MERCHANT_MERCHANTURL", $url);
$miObj->setParameter("DS_MERCHANT_URLOK", $urlOK);
$miObj->setParameter("DS_MERCHANT_URLKO", $urlKO);
/*Por último, para calcular el parámetro Ds_MerchantParameters, se debe
llamar a la función de la librería “createMerchantParameters()”, tal y como
se muestra a continuación: */
$params = $miObj->createMerchantParameters();
/* Calcular el parámetro Ds_Signature. Para llevar a cabo el cálculo de
este parámetro, se debe llamar a la función de la librería
“createMerchantSignature()” con la clave SHA-256 del comercio (obteniendola
en el panel del módulo de administración), tal y como se muestra a
continuación: */
$claveSHA256 = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';
$firma = $miObj->createMerchantSignature($claveSHA256);
/* Una vez obtenidos los valores de los parámetros Ds_MerchantParameters y
Ds_Signature , se debe rellenar el formulario de pago con dichos valores, tal
y como se muestra a continuación: */
<form action="https://sis.redsys.es/sis/realizarPago" method="POST"
target="_blank">
<input type="text" name="Ds_SignatureVersion" value="HMAC_SHA256_V1"/>
<input type="text" name="Ds_MerchantParameters" value="<?php echo $params;
?>"/>
<input type="text" name="Ds_Signature" value="<?php echo $firma; ?>"/>
<input type="submit" value="Realizar Pago"/>
</form>
                      	  
                      
                      	  
/* Importar la librería, tal y como se muestra a continuación */
<%@page import = "sis.redsys.api.ApiMacSha256" %>
/* Definir un objeto de la clase principal de la librería, tal y como se
muestra a continuación */
ApiMacSha256 apiMacSha256 = new ApiMacSha256();
/* Calcular el parámetro Ds_MerchantParameters. Para llevar a cabo el
cálculo de este parámetro, inicialmente se deben añadir todos los
parámetros de la petición de pago que se desea enviar, tal y como se
muestra a continuación: */
apiMacSha256.setParameter("DS_MERCHANT_AMOUNT", amount)
apiMacSha256.setParameter("DS_MERCHANT_ORDER", id)
apiMacSha256.setParameter("DS_MERCHANT_MERCHANTCODE", fuc)
apiMacSha256.setParameter("DS_MERCHANT_CURRENCY", moneda)
apiMacSha256.setParameter("DS_MERCHANT_TRANSACTIONTYPE", trans)
apiMacSha256.setParameter("DS_MERCHANT_TERMINAL", terminal)
apiMacSha256.setParameter("DS_MERCHANT_MERCHANTURL", url)
apiMacSha256.setParameter("DS_MERCHANT_URLOK", urlOK)
apiMacSha256.setParameter("DS_MERCHANT_URLKO", urlKO)
/* Por último se debe llamar a la función de la librería
“createMerchantParameters()”, tal y como se muestra a continuación: */
String params = apiMacSha256.createMerchantParameters()
/* Calcular el parámetro Ds_Signature. Para llevar a cabo el cálculo de
este parámetro, se debe llamar a la función de la librería
“createMerchantSignature()” con la clave SHA-256 del comercio
(obteniendola en el panel del módulo de administración), tal y como se
muestra a continuación: */
String claveSHA256 = "sq7HjrUOBfKmC576ILgskD5srU870gJ7v";
String firma = apiMacSha256.createMerchantSignature(claveSHA256);
/* Una vez obtenidos los valores de los parámetros Ds_MerchantParameters
y Ds_Signature , se debe rellenar el formulario de pago con los valores
obtenidos, tal y como se muestra a continuación: */
<form action="https://sis.redsys.es/sis/realizarPago" method="POST"
target="_blank">
<input type="text" name="Ds_SignatureVersion" value="HMAC_SHA256_V1"/>
<input type="text" name="Ds_MerchantParameters" value= "<%= params
%>"/>
<input type="text" name="Ds_Signature" value= "<%= firma %>"/>
<input type="submit" value= "Realizar Pago"/>
</form>
                         
                     
                          
      /* Importar la librería RedsysAPI y Newronsoft.Json en su proyecto */
<%@ Import namepace="sis.redsys.api.ApiMacSha256" %>
/* Calcular el parámetro Ds_MerchantParameters. Para llevar a cabo el cálculo
de este parámetro, inicialmente se deben añadir todos los parámetros de la
petición de pago que se desea enviar, tal y como se muestra a continuación: */
RedsysAPI r = new RedsysAPI()
r.setParameter ("DS_MERCHANT_AMOUNT", amount);
r.setParameter("DS_MERCHANT_ORDER", id);
r.setParameter("DS_MERCHANT_MERCHANTCODE", fuc);
r.setParameter("DS_MERCHANT_CURRENCY", moneda);
r.setParameter("DS_MERCHANT_TRANSACTIONTYPE", trans);
r.setParameter("DS_MERCHANT_TERMINAL", terminal);
r.setParameter("DS_MERCHANT_MERCHANTURL", url);
r.setParameter("DS_MERCHANT_URLOK", urlOK);
r.setParameter("DS_MERCHANT_URLKO", urlKO);
/* Por último se debe llamar a la función de la librería
“createMerchantParameters()” para crear los parámetros y asignar dicho valor a
la etiqueta Ds_MerchantrParameters, tal y como se muestra a continuación: */
string params = r.createMerchantParameters();
Ds_MerchantParameters.value = params;
/* Calcular el parámetro Ds_Signature. Para llevar a cabo el cálculo de este
parámetro, se debe llamar a la función de la librería
“createMerchantSignature()” con la clave SHA-256 del comercio (obteniendola en
el panel del módulo de administración), tal y como se muestra a continuación:
*/
string kcSHA256 = 'Mk9m98IfEblmPfrpsawt7BmxObt98Jev';
string firma = r.createMerchantSignature(kcSHA256);
Ds_Signature.value = firma;
/* Una vez obtenidos los valores de los parámetros Ds_MerchantParameters y
Ds_Signature , se debe rellenar el formulario de pago con los valores
obtenidos, tal y como se muestra a continuación: */
<form action ="https://sis.redsys.es/sis/realizarPago" method="post">
<input runat="server" type="text" id="Ds_SignatureVersion"
name="Ds_SignatureVersion" value="" />
<input runat="server" size="100" type="text" id="Ds_MerchantParameters"
name="Ds_MerchantParameters" value= "" />
<input runat="server" type="text" size="50" id="Ds_Signature" name=
"Ds_Signature" value= "" />
<input runat="server" type= "submit" value = "Realizar Pago" />
</form>
                          
                     

Herramienta de personalización

De forma opcional, el TPV virtual de Redsys, permite de forma rápida y sencilla, adaptar el diseño de la página de pago a la imagen del comercio

La herramienta ofrece tres niveles de personalización y la posibilidad de presentar la página de pago en varios idiomas, lo que posibilita ofrecer a cada cliente la página de pago en su propio idioma.

Además, esta herramienta incluye funcionalidades destinadas a ayudar a optimizar el ratio de conversión del comercio, ya que permite al comercio establecer la comparativa entre dos diseños diferentes. El comercio puede seleccionar el diseño que se quiere utilizar en cada operación (por ej, según el tipo de dispositivo), en función de un parámetro que se envía en la petición de pago, o bien en base a unos porcentajes que se configuran en la propia herramienta de personalización.

Crear y editar una nueva personalización.

Para comenzar a crear una personalización el comercio debe pulsar sobre el icono de la imagen. Si no dispone de él deberá solicitar que se le asigne el permiso para poder visualizarlo. Esta herramienta está disponible en los siguientes idiomas: Castellano, Catalán, Inglés y Francés.

Personalización 1

Una vez que se selecciona la opción de Personalización en el menú, se accede a la siguiente pantalla:

Personalización 2

Para crear una nueva personalización, habrá que pulsar en el botón “Nueva”. El formulario que aparecerá será como el que se muestra en la siguiente figura:

Personalización 3

Los campos del formulario son los siguientes:

  • DATOS COMERCIO
    • Terminal: Terminal sobre el que se quiere hacer la personalización, con un máximo de 2 personalizaciones por terminal. En caso de intentar añadir una tercera personalización, se mostrará un mensaje de error.

  • DATOS PERSONALIZACIÓN
    • Nombre de la personalización.
    • Crear copia de personalización: Se podrá elegir entre esta opción o la siguiente (Personalización básica del SIS) y permitirá al comercio crear una nueva personalización partiendo de una ya existente. Para ello tendrá que introducir el código de comercio, el terminal y el código de la personalización.
    • Personalización básica SIS: Se podrán elegir entre 1 y 3 opciones que permitirán hacer lo siguiente:
      • Nivel 1: Personalización de colores principales, botones y elementos de la página. Con esta opción se podrán cambiar algunos colores de fondo o el de la letra, así como mostrar u ocultar botones y diversas partes de la pantalla.
      • Nivel 2: Personalizar logo a mostrar. Esta opción permite subir un logo personalizado al portal.
      • Nivel 3: Empleo de fichero CSS propio. Con esta opción podremos mediante un fichero CSS que se suba crear un estilo completamente personalizado*.

      • *: Hay que tener en cuenta que no se podrán aplicar personalizaciones de colores principales, botones y elementos de la página si se usa esta opción.

Una vez dada de alta, se volverá al listado de personalizaciones creadas, ahora aparecerá la información de la personalización que se acaba de crear:

Personalización 4

Operaciones que permite realizar la herramienta:

  • Visualizar: Permite ver la personalización, pero sin poder editar.
  • Editar: Permite editar la personalización.
  • Eliminar: Permite borrrar la personalización.
  • Validar: Permite solicitar a la entidad que valide la personalización.
  • Histórico: Permite ver los pasos por los que ha pasado la

Cuando acceda a la pantalla de edición aparecerá una pantalla como la que la siguiente imagen. En función de los niveles que se hayan seleccionado al crear la personalización, el menú de la izquierda tendrá más o menos elementos. En cualquier caso, siempre tendrá el botón “Aplicar” que permitirá que los cambios que se realicen sobre la personalización surtan efecto.

Personalización 5

Pantallas.

Se muestran cuatro pantallas diferentes en función de la fase del proceso de pago. La herramienta permite ver la imagen de cada una de ellas, para cambiar de una a otra hay que pulsar el botón de “Siguiente pantalla” situado en la parte superior.

Pantalla de Pago.

Muestra la página de pago que se presenta al cliente para que introduzca los datos de la tarjeta.

Personalización 6

Error genérico.

Se mostrará para cualquier otro tipo de error en el proceso de pago.

Personalización 9

Tamaños de Pantallas.

La aplicación también permite ver la imagen de la página de pago personalizada en los diferentes dispositivos (teléfono o Tablet). Para ello, solamente hay que seleccionar los botones de la parte inferior de la pantalla.

Personalización 10

Colores.

Los colores permitirán modificar el fondo y el texto de algunas de las partes de la pantalla.

Personalización 11
  • Color principal: Número de los pasos y botones.
  • Color de fondo.
  • Color de fondo de las tablas: De "Pago con Tarjeta" y de "Otras formas de Pago"
  • Color de fuente: Todo el texto de las tablas.

Botones.

Personalización 12

En la opción de botones se permite mostrar u ocultar los siguientes:

  • Botón "Imprimir": Aparece en la fase de "Operación Autorizada".
  • Botón "Cancelar": Aparece en la primera fase de introducción de los datos de la tarjeta.

Contenidos.

La parte de contenidos permite mostrar u ocultar partes de la pantalla principal. Las diferentes opciones son:

  • Logo de la Entidad: Se mostrará o no el logo de la entidad en la parte superior.
  • Logo del Esquema:Se mostrará o no el logo del esquema en la parte inferior.
  • Información de la operación: Se mostrará o no la tabla con todos los datos de la operación.
  • Pasos del proceso: Se mostrará o no los diferentes pasos de la operación.
Personalización 13

Logo.

El logo que se suba a la plataforma para mostrarlo durante el proceso de pago no puede superar los 30Kb.

Personalización 14

CSS.

Como última opción, se permite subir un css propio mediante el cual se podrá añadir un nivel más alto de personalización de la página de pago. Para facilitar un punto de partida, existe la opción de descargar una plantilla css que se ajustaría con el diseño original de la pantalla en caso de no haber hecho ninguna modificación. Para subir un css propio, se pulsa en el campo de texto tras lo cual aparecerá un cuadro de dialogo para seleccionar el fichero que se desea subir. Una vez seleccionado se podrá pulsar el botón para subir el fichero. En todo momento, se podrá ver el contenido del css que esté subido o eliminarlo.

Personalización 15

Validar, publicar, activar/desactivar, despublicar, eliminar

Validación

Una vez terminada la edición de la personalización, se podrá solicitar la validación de esta por parte de la entidad. Para ello, hay que volver a la pantalla Lista de personalizaciones y pulsar el botón de “Solicitar validación”. Tras confirmar el mensaje, la personalización pasará a estado “Pendiente de validar”.

Personalización 16

Cuando el comercio solicita la validación de la personalización, el sistema envía un e.mail a la Entidad notificando la solicitud de validación. Una vez que la Entidad ha realizado la validación de la personalización, el comercio recibirá, en la dirección de correo del comercio informado en el módulo de administración, un correo con el resultado de la validación y los comentarios de la Entidad.

  • Un ejemplo de correo recibido sería el siguiente:
    Personalización 17

  • Y el estado de la validación quedaría como sigue:
    Personalización 18

En caso de que la validación haya sido rechazada, en el histórico de personalización podrá comprobar el motivo del rechazo. Si la personalización ha sido validada, podrá continuar con el siguiente paso.

Publicar.

Tras ser validada la personalización, el usuario del comercio podrá publicar dicha personalización. Para ello, solamente tiene que pulsar en el botón correspondiente.

Personalización 19

La solicitud quedará enviada y un proceso interno del servidor realizará la publicación. Cuando esté publicada, el estado de la personalización pasará a “Publicada, pendiente de activar”.

  • NOTA: Hay que tener en cuenta que este proceso se ejecuta en el servidor en segundo plano cada cierto tiempo, con lo que la publicación no será inmediata.

Activar o desactivar.

Publicar la personalización no es el último paso para que ésta se vea en la pasarela de pago del cliente. Para que se pueda poner o quitar en cualquier momento se permite la opción de Activar o desactivar la personalización.

Personalización 20

Personalización 21

Despublicar.

Cualquier personalización que esté publicada y no esté activa se podrá despublicar pulsando el botón correspondiente. En ese caso, la personalización podrá editarse nuevamente.

Personalización 22

Eliminar.

En cualquier momento, salvo cuando la personalización esté activa, se podrá eliminar la personalización, borrando con ello todo lo que se haya hecho.

Personalización múltiple.

Se ofrece a los comercios la posibilidad de activar 2 personalizaciones realizadas con la herramienta. Para su explotación, existen varias opciones:

  • Asignación por porcentaje: En el panel principal de la herramienta de personalización el comercio podrá asignar la frecuencia con la que se utilizará cada personalización. En la siguiente imagen, se puede observar la nueva columna introducida para la gestión de las personalizaciones múltiples:
    Personalización 23
    Cuando un terminal solamente disponga de una personalización activa, se mostrará como valor por defecto el texto “AUTO”, mientras que cuando existan 2 personalizaciones activas para un terminal virtual, se podrán gestionar sus porcentajes de utilización con los siguientes controles visibles en la captura.

    Por defecto, al activar dos personalizaciones, se establecerá un porcentaje de uso de 50% para cada una de ellas. A partir de ahí el comercio podrá modificarlas a su gusto. Para realizar la gestión de estos porcentajes únicamente será necesario modificar una de ellas, ya que al guardar, la otra personalización ajustará su porcentaje de forma automática.

  • Asignación directa por parte del comercio: En cada operación individual el comercio podrá informar el número de la personalización a utilizar. Informará dicho número de personalización en el parámetro Ds_Merchant_PersoCode.
    Si no se informa dicho parámetro o el valor que se informa no corresponde con un número de personalización activa existente, se aplicarán los porcentajes de utilización definidos en la herramienta de personalización.

  • Consulta y exportación de la personalización utilizada: En la consulta de operaciones, en el portal de administración del tpv virtual, se indicará en cada operación la personalización que ha sido presentada, así el comercio puede analizar las ventas y abandonos en función de la personalización presentada.
    Esta información también se mostrará en la exportación de los datos de la consulta de operaciones a un fichero en formato .xls
    Personalización 25