Commit ff243b87 authored by rubofvil's avatar rubofvil
Browse files

Update the Redsys api to avoid the function mcrypt

parent b6951da0
......@@ -7,6 +7,10 @@ http://book.civicrm.org/user/current/contributions/payment-processors/
## Release Notes ##
### v2.2 ###
- Update the Redsys api (redsysHMAC256_API_PHP_7.0.0), replacing the mcrypt to openssl
### v2.1 ###
- Copy the description "Financial type name" on Redsys description when is generated by drupal webform
......@@ -85,7 +89,7 @@ After installing and activating the extension, you'll need to configure your pay
* Add a new Payment Processor (Administer / System Settings / Payment Processor)
* Select Redsys Payment Processor as Payment Processor Type
* Configure it with your Mechant Account Id (número de comercio) and Encription Password (clave secreta de encriptación),
* Configure it with your Mechant Account Id (número de comercio) and Encription Password (clave secreta de encriptación),
* By default the test key is sq7HjrUOBfKmC576ILgskD5srU870gJ7
### Requirements ###
......
<?php
/**
* NOTA SOBRE LA LICENCIA DE USO DEL SOFTWARE
*
*
* El uso de este software está sujeto a las Condiciones de uso de software que
* se incluyen en el paquete en el documento "Aviso Legal.pdf". También puede
* obtener una copia en la siguiente url:
* http://www.redsys.es/wps/portal/redsys/publica/areadeserviciosweb/descargaDeDocumentacionYEjecutables
*
*
* Redsys es titular de todos los derechos de propiedad intelectual e industrial
* del software.
*
*
* Quedan expresamente prohibidas la reproducción, la distribución y la
* comunicación pública, incluida su modalidad de puesta a disposición con fines
* distintos a los descritos en las Condiciones de uso.
*
*
* Redsys se reserva la posibilidad de ejercer las acciones legales que le
* correspondan para hacer valer sus derechos frente a cualquier infracción de
* los derechos de propiedad intelectual y/o industrial.
*
*
* Redsys Servicios de Procesamiento, S.L., CIF B85955367
*/
......@@ -25,7 +25,7 @@ class RedsysAPI{
/****** Array de DatosEntrada ******/
var $vars_pay = array();
/****** Set parameter ******/
function setParameter($key,$value){
$this->vars_pay[$key]=$value;
......@@ -35,24 +35,21 @@ class RedsysAPI{
function getParameter($key){
return $this->vars_pay[$key];
}
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
//////////// FUNCIONES AUXILIARES: ////////////
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
/****** 3DES Function ******/
function encrypt_3DES($message, $key){
// Se establece un IV por defecto
$bytes = array(0,0,0,0,0,0,0,0); //byte [] IV = {0, 0, 0, 0, 0, 0, 0, 0}
$iv = implode(array_map("chr", $bytes)); //PHP 4 >= 4.0.2
// Se cifra
$ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv); //PHP 4 >= 4.0.2
return $ciphertext;
$l = ceil(strlen($message) / 8) * 8;
return substr(openssl_encrypt($message . str_repeat("\0", $l - strlen($message)), 'des-ede3-cbc', $key, OPENSSL_RAW_DATA, "\0\0\0\0\0\0\0\0"), 0, $l);
}
/****** Base64 Functions ******/
......@@ -77,13 +74,13 @@ class RedsysAPI{
return $res;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
//////////// FUNCIONES PARA LA GENERACIÓN DEL FORMULARIO DE PAGO: ////////////
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
/****** Obtener Número de pedido ******/
function getOrder(){
$numPedido = "";
......@@ -117,7 +114,7 @@ class RedsysAPI{
// Se codifican los datos Base64
return $this->encodeBase64($res);
}
//////////////////////////////////////////////////////////////////////////////////////////////
......@@ -161,7 +158,9 @@ class RedsysAPI{
function decodeMerchantParameters($datos){
// Se decodifican los datos Base64
$decodec = $this->base64_url_decode($datos);
return $decodec;
// Los datos decodificados se pasan al array de datos
$this->stringToArray($decodec);
return $decodec;
}
function createMerchantSignatureNotif($key, $datos){
// Se decodifica la clave Base64
......@@ -175,7 +174,7 @@ class RedsysAPI{
// MAC256 del parámetro Ds_Parameters que envía Redsys
$res = $this->mac256($datos, $key);
// Se codifican los datos Base64
return $this->base64_url_encode($res);
return $this->base64_url_encode($res);
}
/****** Notificaciones SOAP ENTRADA ******/
function createMerchantSignatureNotifSOAPRequest($key, $datos){
......@@ -188,7 +187,7 @@ class RedsysAPI{
// MAC256 del parámetro Ds_Parameters que envía Redsys
$res = $this->mac256($datos, $key);
// Se codifican los datos Base64
return $this->encodeBase64($res);
return $this->encodeBase64($res);
}
/****** Notificaciones SOAP SALIDA ******/
function createMerchantSignatureNotifSOAPResponse($key, $datos, $numPedido){
......@@ -201,7 +200,7 @@ class RedsysAPI{
// MAC256 del parámetro Ds_Parameters que envía Redsys
$res = $this->mac256($datos, $key);
// Se codifican los datos Base64
return $this->encodeBase64($res);
return $this->encodeBase64($res);
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment