Open pcuenban opened 6 years ago
¿Tienes la web en "modo desarrollo" o "offline"?
A mi me pasa lo mismo. He tenido que cambiar el nombre de Modulo para que se me instale a cecamodule y me pasa lo mismo que dice pcuenban. Tengo que modificar algo en el validate ??? ya que no recoge el pedido , tras el pago y en prestashop> pedidos , no aparece ningun pedido nuevo.
La tienda esta activada, no esta en modo desarrollo
Tienes configurado, en la intranet de CECA la URL completa (con tu nuevo nombre de carpeta) para el validation.php en el callback (cuando se hace el pago ok)?
En la intranet de CECA es un campo en el que tienes que meter https://miurldepagina/modules/cecamodule/validation.php (o el que coincida con tu instalación).
Si, la tengo así y coincide con el hosting:
Por lo que puedo ver, la URL online OK está mal porque devuelve un 404: https://sarriaphone.com/modules/cecamodule/validation.php
Comprueba la URL...
Gracias por responder @dfragac . Pero la URL es esa. Para comprobarlo tras tu consejo e creado un archivo prueva.txt en la misma carpeta y lo abre correctamente. Entiendo que pueda ser del Validation.php que no lo interpreta. Te pego el achivo por si me puedes probar si esta correcto para la PS 1.7.3.1 y PHP: 7.0.32.
Esta es la URL de prueba que el enlace a la carpeta es correcto: https://sarriaphone.com/modules/cecamodule/prueva.txt Te pego mas abajo el codigo del validation por si veis algo que este mal.
Muchas Gracias
`<?php
include(dirname(FILE).'/../../config/config.inc.php');
include(dirname(FILE).'/../../header.php');
if (isset(Context::getContext()->controller)) {
$controller = Context::getContext()->controller;
} else {
$controller = new FrontController();
$controller->init();
$controller->setMedia();
}
Tools::displayFileAsDeprecated();
$controller->displayHeader();
include(dirname(FILE).'/cecamodule.php');
if(!function_exists("writeLog")||!function_exists("generateIdLogCECA")) { require_once('apiCeca/cecaLib.php'); }
$idLog = generateIdLogCECA(); writeLog($idLog.' - Conexión - ',true);
$cecamodule = new cecamodule();
if (!empty($_POST)){ $MerchantID = $_POST["MerchantID"]; $AcquirerBIN = $_POST["AcquirerBIN"]; $TerminalID = $_POST["TerminalID"]; $Num_operacion = $_POST["Num_operacion"]; $Importe = $_POST["Importe"]; $Tipo_moneda = $_POST["TipoMoneda"]; $Exponente = $_POST["Exponente"]; $Referencia = $_POST["Referencia"]; $signature = $_POST["Firma"]; $Num_aut = $_POST["Num_aut"]; $moneda_tienda = 1; // Euros
$ImporteEUR = round(floatval($Importe/100), 2);
$key = Configuration::get('CECA_ClaveCifrado');
$local_signature = sha1($key.$MerchantID.$AcquirerBIN.$TerminalID.$Num_operacion.$Importe.$Tipo_moneda.$Exponente.$Referencia);
writeLog($idLog.' - IP: '.$_SERVER['REMOTE_ADDR'].' - ',true);
writeLog($idLog.' - Número de operación: '.$Num_operacion.' - ',true);
writeLog($idLog.' - Firma calculada: '.$local_signature.' - ',true);
writeLog($idLog.' - Firma CECA: '.$signature.' - ',true);
writeLog($idLog.' - Referencia: '.$Referencia.' Número de Autorización: '.$Num_aut.' - ',true);
writeLog($idLog.' - ------------ - ',true);
if ($signature != $local_signature){
writeLog($idLog.' - Error: Las firmas no coinciden - ',true);
writeLog($idLog.' - Devolviendo error desde plataforma - ',true);
echo "Error: Las firmas no coinciden";
}else{
/** Objetos para confirmar el pedido **/
$pedidoSecuencial = $Num_operacion;
$pedido = intval(substr($pedidoSecuencial, 0, 11));
$cart = new Cart($pedido);
/** Validación cliente **/
$customer = new Customer((int)$cart->id_customer);
/** VALIDACIONES DE DATOS y LIBRERÍA **/
//Total
writeLog($idLog.' -- Total (' . $Num_operacion . '): '.$ImporteEUR.' €',true);
writeLog($idLog.' - ------------ - ',true);
writeLog($idLog.' - Success: Las firmas coinciden - ',true);
writeLog($idLog.' - Devolviendo estado PAGADO desde plataforma - ',true);
$cecamodule->validateOrder($cart->id, _PS_OS_PAYMENT_, $ImporteEUR, $cecamodule->displayName, null, array(), (int)$cart->id_currency, $cecamodule->l('Pago recibido. Número de autorización: ').$Num_aut, $customer->secure_key);
echo '$*$OKY$*$';
}
}else{ writeLog($idLog.' - Acceso no autorizado, conexión no realizada por POST - ',true); writeLog($idLog.' - Devolviendo error desde plataforma - ',true); echo "Error: Acceso no autorizado."; }
?>`
Ambos archivos están bien. El tema es que el validation.php te está dando un 404, es decir, no encuentra el endpoint. ¿Puedes tener algún problema con las reglas de URL? (Igual te está intentando validar alguna url o redirigir a otro sitio y no lo encuentra). Comprueba el nombre del archivo validation.php (mayúsculas, etc... si el server es Linux te puede dar problemas por eso aunque es raro). y las reglas de las URL.
El nombre, la verdad esta bien, tiene incluso 0666 en permisos y he probado con 0777 .Esta es la configuracion de las url:
Si el archivo esta bien, podria ser alguna conf a mayores del PS?? La verdad es que estoy perdido
¿Has probado a desactivar la URL amigable (aunque parezca que mod_rewrite no está activo por si es un falso positivo? Prueba a quitarlo y eliminar la caché.
Gracias por la respuestas @dfragac . Pero lo acabo de probar y no va
EDITO: En otra tienda , con la pasarela de esta funciona. Es decir, la conf y el modulo es correcto, ahora tengo que mirar que tiene mal esa instalación de PS1.7.3 ..Gracias
hola , lo primero muchas gracias por el módulo! Me ocurre lo mismo que a @krrtcaurel, tengo acceso correcto al validation.php, el pago se completa en la pasarela y todo es correcto pero no se completa al volver en la web (no borra el carrito, no genera el pedido o resta stock), ni mail de confirmación, etc Tambien he probado con permisos 666 y 777, sin resultado. Es una tienda que tenia en 1.6.4.2 y la he actualizado a 1.7.4.3, si te ayuda de algo
https://www.nac-inter.com/3MPeltor/modules/cecamodule/validation.php
Hola @xonsuns . Yo lo he resuelto comprando un módulo. Pero tampoco iba y me lo arreglaron cambiando los permisos de las carpetas por ftp. Dentro de la carpeta modulos/ceca.... Los permisos se han modificado a 755 para directorios y 644 para ficheros. Pruebalo y me dices. Saludos
Gracias pues lo probaré a ver si eso lo soluciona. Un saludo!
@krrtcaurel @dfragac no lo soluciona con esos permisos (755 dir, 644 file), he cambiado a 777 para todos y tampoco. El archivo lo carga correctamente pero entra en el if de (!empty($_POST)) como si no hubiera campos POST, y escribe lo siguiente en el LOG
23-10-2018 09:55:13 -- fxlPevlW05Uyiw6wxNSt - Conexión - 23-10-2018 09:55:13 -- fxlPevlW05Uyiw6wxNSt - Acceso no autorizado, conexión no realizada por POST - 23-10-2018 09:55:13 -- fxlPevlW05Uyiw6wxNSt - Devolviendo error desde plataforma -
Bueno dejo esto aqui por si ayuda a alguien, he conseguido que funcione comentando las lineas de validation.php
/if (isset(Context::getContext()->controller)) { $controller = Context::getContext()->controller; } else { $controller = new FrontController(); $controller->init(); $controller->setMedia(); } Tools::displayFileAsDeprecated(); $controller->displayHeader();/
Que consecuencias tiene no las se, el pedido en principio viene correcto, el stock se resta y envía el correo
yo tengo el mismo error y no encuentro la solucion.
$cecabank->validateOrder( $cart->id, _PS_OS_PAYMENT_, ((int) $importe) / 100, $cecabank->displayName, $cecabank->l(sprintf('Cecabank transaction ID: %s.', $reference)), array('transaction_id' => $reference), null, false, $customer->secure_key, null );
esta funcion no la encuentro en cecabank.php
PHP 7.2
Al hacer un pago usando el módulo no reconoce que se halla completado el pedido y sigue apareciendo en el carrito, pero el pago se hace correctamente.
La configuracion del tpv es la siguiente: Comunicación on-line OK: Sí URL online OK: https:///modules/cecamodule/validation.php Respuesta requerida OK: No
Si pongo Respuesta requerida OK: Sí, el pago da error de comunicación.
Gracias
EDITO:
El error que me da al intetnar acceder a la url de /modules/cecamodule/validation.php es Error http 500
-> SOLUCION: <-
En el URL online OK, en la configuración del Ceca acceso online:
tienes que incluir el "www" -> https://"www."(nombredominio).com/.......
sin el www. no va a funcionar
tenía el mismo problema y agregando esto ya se solucionó.
Al hacer un pago usando el módulo no reconoce que se halla completado el pedido y sigue apareciendo en el carrito, pero el pago se hace correctamente.
La configuracion del tpv es la siguiente: Comunicación on-line OK: Sí URL online OK: https:///modules/cecamodule/validation.php
Respuesta requerida OK: No
Si pongo Respuesta requerida OK: Sí, el pago da error de comunicación.
Gracias
EDITO:
El error que me da al intetnar acceder a la url de /modules/cecamodule/validation.php es Error http 500