Jump to content

Error 500 con Redsys en DS_MERCHANT_URLKO


Recommended Posts

Buenos días!

(Prestashop 1.7.6.1 y Redsys oficial 3.0.2 en instalación limpia, SSL)

he detectado que cuando Redsys utiliza la url de no-ok para la vuelta de una operación denegada, se produce un error 500:
AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught  --> Smarty: 0():Missing '$template' parameter <-- \n  thrown in /var/www/vhosts/dronedron.com/httpdocs/vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php on line 177\n'

Parece que $template es nulo en la llamada.

Para reproducir he usado https://apitester.com/ con el "post data" que corresponde a la llamada, según el log de Redsys.
La DS_MERCHANT_URLKO=https://xxx.com/index.php?fc=module&module=redsysoficial&controller=validation

Entiendo que en esa llamada el módulo no indica el template y smarty rompe.

Qué opináis?
Gracias!

Link to comment
Share on other sites

  • 5 months later...

Me he fijado y me ocurre lo mismo. Lo que ocurre es que, como se tratan de notificaciones denegadas, normalmente no te das cuenta, porque como no se autoriza la operación, el efecto al final es el mismo. Pero si miras en el log de notificaciones de Redsys, ahí puedes ver los errores 500 en todas las notificaciones denegadas.

Es un problema que me gustaría solucionar. @ESPON, ¿encontraste al final alguna solución?.

Link to comment
Share on other sites

  • 2 months later...

Perdona no había visto tu mensaje.

No lo he resuelto, "Presta es así" siempre tuvo un manejo de excepciones un poco tal... como no es importante, simplemente es algo que llena los logs en los servidores solamente.

Link to comment
Share on other sites

  • 6 months later...

Por si sirve de ayuda, aunque un poco tarde. ya que esto sigue pasando en las últimas versiones y es bastante molesto.

En mi caso, lo he arreglado con un pequeño cambio.

En modules/redsysoficial/controllers/front/validation.php, detrás de esta línea:

escribirLog($idLog." -- "."El pedido con ID de carrito " . $pedido . " es inválido.",$logActivo);

Añadir a continuación la línea siguiente:

exit();

Es exactamente lo mismo que se hace en el caso de pago aceptado, unas pocas líneas más arriba. Ahora ya devuelve un 200 y redsys no lo considera una notificación fallida. Esta llamada es de servidor a servidor, y no necesita devolver contenido.

Link to comment
Share on other sites

  • 1 year later...

Por si acaso le ocurre a alguien más, la solución del post de Jaime0000 ya no es válida en la versión de Redsys v4.2.1.

Para esta versión hay que incluir modificar el archivo "modules/redsysoficial/views/templates/front/paymenterror.tpl" y añadir debajo de la etiqueta <head> lo siguiente:

{extends "$layout"}

 

paymenterror_tpl.png

 

Mas info en https://github.com/PrestaShop/PrestaShop/issues/27477

Edited by Nalayh (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...