FranciscoVillen Posted September 11, 2013 Share Posted September 11, 2013 (edited) Buenas a todos, Estoy utlizando el modulo para ceca que pusieron en esta entrada del foro en un prestashop 1.5.4: http://www.prestashop.com/forums/topic/14113-modulo-pago-tpvv-ceca-05-beta/page-11 La versión subida por "envista cultural visual" en el post #209 Lo he configurado correctamente y en el entorno de prueba funciona todo perfectamente. En el entorno real en cambio, al realizar el pago, este queda registrado en la administracion del TPV pero al regresar a prestashop el pedido no queda registrado. He estado echando un vistazo al codigo, y la parte que se encarga de poner el pedido como pagado en prestashop, esta en el archivo validation.php. Pongo en rojo donde me parece que esta la clave, hay un if donde se comprueba que la firma sea la correcta en cuyo caso invoca al metodo validateOrder , que es el que se encarga de poner el pedido como pagado y que se registre en prestashop. if (!empty($_POST)){ $debug_mail_msg = print_r($_POST, true) . "\r\n"; // Variables $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"]; $Firma = $_POST["Firma"]; $Num_aut = $_POST["Num_aut"]; $ImporteEUR = round(floatval($Importe/100), 2); $moneda_tienda = 1; // Euros //Calculo de la firma con SHA1 $strEXEC= $MerchantID.$AcquirerBIN.$TerminalID.$Num_operacion.$Importe.$Tipo_moneda.$Exponente.$Referencia; $FirmaLocal=$cecatpv->calculaFirma($strEXEC); $debug_mail_msg .= "Voy a calcular la firma para $strEXEC desde " . $_SERVER['SCRIPT_FILENAME']. "\r\n"; $debug_mail_msg .= "Para la IP: ".$_SERVER['REMOTE_ADDR'].' - '.gethostbyaddr($_SERVER['REMOTE_ADDR'])."\r\n"; $debug_mail_msg .= "Firma calculada: $FirmaLocal\r\n"; $debug_mail_msg .= "Firma de CECA: $Firma\r\n"; $debug_mail_msg .= 'Referencia de pago: '.$Referencia.' - Número de Autorización: '.$Num_aut. "\r\n"; if ($Firma != $FirmaLocal){ $debug_mail_msg .= "Las firmas NO COINCIDEN.\r\n"; echo 'Error - Las firmas NO COINCIDEN'; $debug_mail_msg .= "Cambiado estado a error por firmas no coincidentes.\r\n"; }else{ $debug_mail_msg .= "Las firmas son iguales.\r\n"; $cecatpv->validateOrder($Num_operacion, _PS_OS_PAYMENT_, $ImporteEUR, $cecatpv->displayName, $cecatpv->l('Pago recibido. Núm autorización: ').$Num_aut); $debug_mail_msg .= "Cambiado estado a PAGADO.\r\n"; echo '$*$OKY$*$'; } $cecatpv->enviar_mail_debug('Validacion de pago desde TPV CECA', $debug_mail_msg); }else{ echo "Validacion SIN POST de pago desde TPV CECA"; $cecatpv->enviar_mail_debug('Validacion SIN POST de pago desde TPV CECA', 'La aplicación de TPV Virtual de la CECA no ha adjuntado la información del pago en $_POST. Petición realizada desde la IP: '.$_SERVER['REMOTE_ADDR'].' - '.gethostbyaddr($_SERVER['REMOTE_ADDR'])); } ¿Ha lidiado algun compañero con este problema? Gracias de antemano. Edited September 12, 2013 by FranciscoVillen (see edit history) Link to comment Share on other sites More sharing options...
FranciscoVillen Posted September 12, 2013 Author Share Posted September 12, 2013 Por si a algun compañero le ocurre lo mismo, lo he conseguido solucionar dando permisos 755 a los archivos dentro del modulo de ceca tpv y desactivando la opcion de enviar correo de depuración en la configuración del modulo. Link to comment Share on other sites More sharing options...
Recommended Posts