Tipos de integración
Conexión por Redirección
Redirige a tus clientes a nuestra pasarela de pago, para que puedan abonar sus compras con toda la seguridad y con gran facilidad de implementación para ti.
Funcionamiento
Con la pasarela de pago por Redirección, enviarás a tus clientes a nuestra plataforma de pago para que puedan realizar el abono de sus compras, en un entorno seguro y fácilmente reconocible por el usuario. Con la integración vía Redirección, sólo tendrás que enviar los parámetros necesarios para identificar el pedido y poder generar los datos de pago. Este tipo de integración es la más sencilla de implementar, pues nosotros nos ocupamos de todo, tanto de la autorización como de la autenticación, sólo tendrás que procesar la notificación que se enviará desde a tu página web para informar del estado del pago.
La forma de funcionamiento es la siguiente, puedes ver cada paso en el esquema que se presenta en el costado izquierdo.
- El titular selecciona los productos que desee comprar en el comercio.
- El comercio redirige la sesión del navegador del cliente a la URL de entrada de Redsýs. En esta URL es donde el cliente introducirá los datos de su tarjeta. Al hacer la redirección, el comercio deberá enviar los parámetros identificativos de la operación, tal y como se explicará más adelante.
- El TPV Virtual de BBVA informará al comercio del resultado de la operación, con un procedimiento denominado notificación.
- BBVA devuelve la sesión del navegador del cliente al comercio para que continúe navegando en tu tienda web y pueda visualizar en esta misma tienda el resultado final de la operación.
En resumen, el cliente es redireccionado a la pasarela de pago de Redsýs para realizar el pago de los productos seleccionados en tu tienda. Una vez allí, debe rellenar los datos de su tarjeta para efectuar correctamente el pago. Cuando estos datos son introducidos, se muestra al cliente el resultado de la operación y se le redirige a tu tienda web de nuevo. Por detrás, se informa a tu plataforma del resultado de la operación.
La integración por redirección es un tipo de integración fácil de implementar en tu web, ya que sólo tendrás que preparar unos parámetros básicos y enviarlos de la forma correcta para que se pueda procesar la operación. A la vez, para tus clientes, será una experiencia ya conocida, al acceder a la misma pasarela que utilizan miles de comercios en España.
Características de la integración
- Es fácil de implementar, ya que con unos sencillos pasos podrás operar y recibir pagos con nuestra pasarela.
- Es una experiencia conocida para todos tus clientes, al utilizar la misma pasarela que han visto en otros comercios, todo con la garantía de BBVA.
- No tendrás que preocuparte del cumplimiento de ninguna directiva como PCI-DSS, ya que nosotros nos ocupamos de todo.
Pasos para realizar la integración
A continuación, se explicarán los pasos a seguir para poder realizar la integración de manera correcta. Se debe recordar que los ejemplos propuestos en esta guía son fragmentos de código explicativos y que nunca debes tomarla como la forma completa de realizar la integración ya que es muy probable que los fragmentos de código presentados requieran de adaptación a tu sitio web.
1
Formulario de envío de datos en la petición
Como primer paso, el comercio deberá montar un formulario con los parámetros de la petición de pago que deberá hacer llegar al TPV Virtual de BBVA a través del navegador del cliente durante la redirección. Los parámetros que deberá enviar son los siguientes:
- 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.
Cada uno de estos ítems se explicará más adelante. Este formulario deberá ser enviado mediante una petición POST a la URL que corresponda según se estén realizando pruebas u operando en REAL.
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 (DS_MERCHANT_AMOUNT) o con estructura CamelCase (Ds_Merchant_Amount). La lista de parámetros que se pueden incluir en la petición puede consultarse en la tabla de parámetros enviados por el comercio.
Para todas las peticiones se deben enviar, como mínimo, los parámetros obligatorios para poder realizar una operación estándar. Si se desea utilizar una operativa especial, como por ejemplo un pago por referencia o pago 1-clic, se deberán incluir en la petición los parámetros relacionados con esta operativa.
A continuación, se muestran un ejemplo de como quedaría la cadena en formato JSON para una operativa estándar.
{
"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"
}
Téngase en cuenta dos anotaciones: la primera, es que todos los parámetros son de tipo string, aunque sólo se esté enviando un número. Además, nótese que el total de la transacción, el monto, se expresa en céntimos, es decir, no se deben envíar decimales, sino que se debe de enviar el total ajustado para eliminar los decimales.
Una vez el objeto JSON está correctamente formado, se debe codificar en BASE64, y se debe comprobar que no queden espacios en blanco. La cadena resultante será el valor del parámetro Ds_MerchantParameters.
Ejemplo del objeto anterior codificado en BASE64
ew0KICAgICJEU19NRVJDSEFOVF9BTU9VTlQiOiAiMTQ1IiwNCiAgICAiRFNfTUVSQ0hBTlRfQ1VSUkVOQ1kiOiAiOTc4IiwNCiAgICAiRFNfTUVSQ0hBTlRfTUVSQ0hBTlRDT0RFIjogIjk5OTAwODg4MSIsDQogICAgIkRTX01FUkNIQU5UX01FUkNIQU5UVVJMIjogImh0dHA6Ly93d3cucHJ1ZWJhLmNvbS91cmxOb3RpZmljYWNpb24ucGhwIiwNCiAgICAiRFNfTUVSQ0hBTlRfT1JERVIiOiAiMTQ0NjA2ODU4MSIsDQogICAgIkRTX01FUkNIQU5UX1RFUk1JTkFMIjogIjEiLA0KICAgICJEU19NRVJDSEFOVF9UUkFOU0FDVElPTlRZUEUiOiAiMCIsDQogICAgIkRTX01FUkNIQU5UX1VSTEtPIjogImh0dHA6Ly93d3cucHJ1ZWJhLmNvbS91cmxLTy5waHAiLA0KICAgICJEU19NRVJDSEFOVF9VUkxPSyI6ICJodHRwOi8vd3d3LnBydWViYS5jb20vdXJsT0sucGhwIg0KfQ==
Ds_SignatureVersion
En la petición, se debe identificar la versión concreta del algoritmo que se está utilizando para la firma. Actualmente se utiliza el vamor HMAC_SHA256_V1 para identificar la versión de todas las peticiones, por lo que este será el valor de este parámetro.
Ds_Signature
Este parámetro es la firma de la operación, y esta se calculará utilizando el parámetro Ds_MerchantParameters ya codificado en BASE64, y la clave SHA-256 específica del terminal, la cual fue proporcionada por BBVA. El proceso a seguir puede ser fácilmente implementado usando las librerías de ayuda que se proporcionan en el área de descargas. A continuación, se detallan los pasos a seguir para la obtención de esta firma:
- Se codifica la clave SHA-256 en BASE64.
- Se diversifica la clave de firma realizando un cifrado 3DES entre esta clave codificada obtenida en el paso 1, y el valor del número de pedido de la operación Ds_Merchant_Order.
- Se realiza un cáclulo para obtener el HMAC-256 con el parámetro «Ds_MerchantParameters y la clave de firma diversificada obtenida en el paso 2.
- El resultado del paso 3, se debe codficiar en BASE64. El resultado de esta operación es el valor de la firma.
Si al petición se realiza mediante cURL o usando el navegador Safari, puede que los símbolos «+» se transformen en espacios en blanco. Para que esto no ocurra, se deben sustituir los símbolos «+» por el equivalente «%2B» antes de enviarlo.
Proceso de creación de firma en PHP
function createMerchantSignature($key) {
// Se decodifica la clave Base64
$key = $this->decodeBase64($key);
// Se genera el parámetro Ds_MerchantParameters
$ent = $this->createMerchantParameters();
// Se diversifica la clave con el Número de Pedido
$key = $this->encrypt_3DES($this->getOrder(), $key);
// MAC256 del parámetro Ds_MerchantParameters
$res = $this->mac256($ent, $key);
// Se codifican los datos Base64
return $this->encodeBase64($res);
}
Proceso de creación de firma en JAVA
public String createMerchantSignature(final String claveComercio) throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException, IllegalStateException, NoSuchPaddingException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {
String merchantParams = createMerchantParameters();
byte [] clave = decodeB64(claveComercio.getBytes("UTF-8"));
String secretKc = toHexadecimal(clave, clave.length);
byte [] secretKo = encrypt_3DES(secretKc, getOrder());
// Se hace el MAC con la clave de la operación "Ko" y se codifica en BASE64
byte [] hash = mac256(merchantParams, secretKo);
String res = encodeB64String(hash);
return res;
}
Estas funciones son extractos de las bibliotecas de ayuda que puedes encontrar en el área de descargas de Bibliotecas y SDKs.
A continuación, se muestra un ejemplo del formulario completo de petición de pago.
Formulario con los datos de la petición
<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>
2
Autenticación usando EMV3DS
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 autenticar utilizando EMV3DS V2.
Todos los comercios que utilizan este tipo de conexión con redirección a la página de pago deberán, con el fin de mejorar la experiencia del usuario en el proceso de autenticación, 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. Se puede obtener más información sobre este parámetro en la tabla de parámetros enviados por el comercio.
3
Procesamiento de la notificación online
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 autenticar utilizando EMV3DS V2.
Todos los comercios que utilizan este tipo de conexión con redirección a la página de pago deberán, con el fin de mejorar la experiencia del usuario en el proceso de autenticación, 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. Se puede obtener más información sobre este parámetro en la tabla de parámetros enviados por el comercio.
PHP
/*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";
}
Java
/*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");
}
.NET
/*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."
}
4
Retorno de 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.
PHP
/*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";
}
Java
/* 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");
}
.NET
/*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."
}
Herramienta de personalización
De forma opcional, el TPV virtual de BBVA 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 idioma de preferencia. El idioma en el que se muestran las pantallas de pago se puede determinar en el parámetro Ds_Merchant_ConsumerLanguage, y la personalización del TPV Virtual se puede ajustar desde el Panel de Administración del TPV Virtual.
Esta herramienta incluye funciones destinadas a ayudar a optimizar el ratio de conversión del comercio, ya que permite establecer la comparativa entre dos diseños diferentes para que el comercio pueda seleccionar qué tipo de personalización prefiere para cada tipo de dispositivo, por ejemplo.
Vista general
La herramienta de personalización posee una zona dedicada en el Portal de Administración del TPV Virtual. Esta herramienta, a priori, puede parecer un poco compleja, por ello en las siguientes imágenes podrás encontrar una guía visual sobre cómo realizar la personalización completa de un TPV Virtual por redirección.
Acceder al apartado de personalización
Para comenzar a crear una personalización, deberás pulsar sobre el icono de la imagen. Si detectas que no dispones de este icono en tu menu lateral en el Portal de Administración del TPV Virtual, deberás solicitar a BBVA la activación de esta función. Esta herramienta se encuentra disponible en Castellano, Catalán, Inglés y Francés.
Creando una nueva personalización
Una vez que se seleccione la personalización en el menú anterior, se llegará a la siguiente pantalla.
Para crear una nueva personalziación, se deberá pulsar sobre el botón «nueva». Hecho esto, aparecerá un formulario que se parecerá a este.
Parámetros de personalización
En dicho formulario, se deberán introducir una serie de datos para identificar la personalización y el terminal donde se va a aplicar dicha personalización.
- Datos del comercio.
- Terminal.
- Datos personalizados.
- Nombre de la personalización.
- Personalización básica del SIS: podrás personalizar prácticamente todos los aspectos de la página de pago. Estos aspectos se dividen en tres zonas.
- 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 de pago.
- Nivel 2: Personalización del logo que se muestra, con el que se podrá subir el logo del comercio personalizado.
- Nivel 3: En esta opción se podrá subir un fichero CSS propio con el que crear un estilo completamente personalizado.
- Crear copia de personalización: esta opción permite al comercio crear una 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.
Una vez dada de alta esta personalización, puedes observar como ahora se muestra en el listado de personalizaciones creadas la que se acaba de crear.
En esta pantalla, se permiten varias operaciones.
Visualizar
Permite ver la personalación, pero sin poder editar
Editar
Permite editar la personalización
Eliminar
Permite borrar la personalización
Validar
Permite solicitar a BBVA que valide la personalización
Histórico
Permite ver los pasos por los que ha pasado la personalización
Pantalla de personalización
Si se utiliza la segunda opción, se accederá al apartado de personalización en sí, donde podrás personalizar el TPV Virtual a tu gusto. En función de los niveles que se hayan selecionado al crear la personalización, el menú de la izquierda tendrá más o menos elementos. En cualquier caso, siempre se mostrará el boton «aplicar», que permitirá que los cambios se guarden. Recuerda que si no se pulsa este botón al finalizar de personalizar, esta no se aplicará a la pantalla de pago y se perderá.
Opciones de personalización
En el siguiente menú, podrás aprender sobre todas las opciones de personalización que permite nuestro TPV Virtual.
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
Error genérico
Tamaños de pantalla
Colores
Los colores se pueden modificar en varias opciones:
- Color principal: número de los pasos y botones.
- Color de fondo: fondo de la pantalla de pago.
- Color de fondo de las tablas: en la imagen superior, el blanco más claro, en «pago con tarjeta» y «otras formas de pago».
- Color de fuente: todo el texto de las tablas.
Botones
- Botón de imprimir: botón que aparece en la fase de «operación autorizada» y que permite imprimir el recibo de la operación.
- Botón de cancelar: botón que aparece en la fase de introducción de datos de tarjeta y que permite cancelar la operación.
Contenido
- Logo de la Entidad: se mostrará o no el logo de la entidad en la parte superior.
- Logo del esquema: esta configuración está obsoleta y se recomienda desactivar.
- 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 la barra de información de los pasos del proceso.
Logo
Nota: el logo que se suba a la plataforma no puede supear los 30 kB.
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.
Administración de la personalización
En esta sección, se explicarán los pasos a seguir para realizar operaciones de validación, publicación, eliminado, etc… De las personalizaciones que se hayan creado.
Validación
Una vez terminada la la edición de la personalización, se podrá solicitar su validación a BBVA. Para ello, se deberá acceder a la lista de personalizaciones y pulsar sobre el botón de «solicitar validación». Tras aceptar en el diálogo de confirmación, la personalización pasará a estado «pendiente de validar».
Cuando el comercio solicita la validación de la personalización a BBVA, el sistema nos envía un e-mail notificando la solicitud. Una vez que hemos realizado la validación de la personalización, el comercio recibirá en la dirección configurada en el Módulo de Administración del TPV Virtual, un correo con el resultado de la validación, cuyo formato será parecido al mostrado a continuación.
En caso de que la validación sea rechazada, en el histórico podrá comprobar el motivo del rechazo. Si es aceptada, se mostrará como sigue y podrá continuar con el siguiente paso.
Publicar
Tras ser validada la personalización, ya estarás listo para publicar dicha personalización pulsando el botón correspondiente tal y como se muestra en la siguiente imagen.
La solicitud quedará enviada y un proceso interno del servidor realizará la publicación. Cuando esté publicada, el estado de la personalziación será «Publicada, pendiente de activar».
- NOTA: Ten en cuenta que este proceso se ejecuta en nuestros servidores en segundo plano cada cierto tiempo, por 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 tener un cierto control sobre si quieres o no mostrar la personalización, se añade la opción de activar y desactivar. Los botones se pueden ver a continuación.
Despublicar y eliminar
Cualquier personalización que esté publicada, puede despublicarse previa desactivación. Esto es necesario para, por ejemplo, poder volver a editarla.
Además, cualquier personalización despublicada, puede eliminarse.
- NOTA: Procede con cuidado porque, una vez eliminada, ¡ya no podrás recuperarla!
Personalización múltiple
Nuestra herramienta de personalización te permite mantener dos personalizaciones activas al mismo tiempo, y tienes dos formas de gestionarlo.
- Asignación por porcentaje: en el panel principal de la herramienta de personalización, puedes asignar la frecuencia con la que se utilizará cada personalziación, y tal y como puedes observar en la imagen más adelante. Cuando un terminal sólamente disponga de una personalziación activa, se mostrará como valor por defecto el texto «AUTO», mientras que cuando existan dos personalizaciones activas de manera simultánea, se podrán gestionar sus valores en los campos de texto. Sólo deberás actualizar uno de los porcentajes, ya que al guardar, el otro se ajustará automáticamente hasta completar el 100%.
- Asignación directa por parte del comercio: En cada operación individual, puedes incluir el número o ID de personalización a utilizar usando el parámetro Ds_Merchant_PersoCode. Esto, tiene prioridad sobre los porcentajes indicados en el anterior método. Si no se informa este parámetro, se usarán los porcentajes configurados.