A continuación se presentan los pasos que debe seguir un comercio para la utilización de las librerías proporcionadas por Banco Sabadell:
1. Importar la librería, tal y como se muestra a continuación:
include(“./apiRedsys.php”); // El comercio debe decidir si la importación desea hacerla con la función “include” o “required”, según los desarrollos realizados.
<%@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*/ lib apiSha256.jar bcprov - jdk15on-1.4.7.jar commons - codec - 131.3.jar org.json.jar
Using RedsysAPIPrj;
2. Definir un objeto de la clase principal de la librería, tal y como se muestra a continuación:
$miObj = new RedsysAPI;
ApiMacSha256 apiMacSha256 = new ApiMacSha256();
RedsysAPI r = new RedsysAPI();
3. Capturar los parámetros de la notificación on-line:
$version = $_GET[“Ds_SignatureVersion”]; $params = $_GET[“Ds_MerchantParameters”]; $firmaRecibida = $_GET[“Ds_Signature”];
String version = request.getParameter(“Ds_SignatureVersion”); String params = request.getParameter(“Ds_MerchantParameters”); String signatureRecibida = request.getParameter(“Ds_Signature”);
string version = Request.QueryString[“Ds_SignatureVersion”]; string parms = Request.QueryString[“Ds_MerchantParameters”]; string firmaRecibida = Request.QueryString[“Ds_Signature”];
4. 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 de comercio facilitada y el parámetro Ds_MerchantParameters capturado, tal y como se muestra a continuación:
$clave = ‘sq7HjrUOBfKmC576ILgskD5srU870gJ7’; $firma = $miObj->createMerchantSignatureNotif($clave,$datos);
String clave = “sq7HjrUOBfKmC576ILgskD5srU870gJ7”; String signatureCalculada = apiMacSha256.createMerchantSignatureNotif(clave, params);
string clave = “sq7HjrUOBfKmC576ILgskD5srU870gJ7”; string firmaCalculada = r.createMerchantSignatureNotif( clave, parms);
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) { //FIRMA OK. Realizar tareas de servidor } else { //FIRMA KO. Error, firma inválida. }
if (signatureCalculada.equals(signatureRecibida)) { System.out.println(“FIRMA OK. Realizar tareas en el servidor”); } else { System.out.println(“FIRMA KO. Firma inválida”); }
If (firmaRecibida == firma Calculada) { //FIRMA OK. Mostrar mensaje en la URLOK } Else { //FIRMA KO. Mostrar mensaje en la URLKO }
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, tal y como se muestra en el apartado Respuesta online. 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”);
String codigoRespuesta = ApiMacSha256.getParameter(“DS_Response”);