Píldoras PrestaShop de septiembre de 2026: ajax.php y Redsys
Las ideas sueltas de septiembre de 2026 en la comunidad @PrestashopEsp: cómo distinguir un ajax.php falso en un módulo, por qué el cron de gsitemap ahora va por /module/, depurar el enlace de recuperar contraseña, devolver un pago de Redsys desde el pedido, el fallo crítico de LiteSpeed, pedidos duplicados y un par de trucos de checkout.
Lo que dio de sí el grupo en septiembre de 2026 y no llega a ficha: un aviso de seguridad, varios trucos de desarrollo y un par de ideas para el checkout.
Un ajax.php de más en ps_shoppingcart
Gustavo avisó de que, según un conocido que lleva servidores, estaban apareciendo ficheros ajax.php subidos en la carpeta de ps_shoppingcart de varias tiendas. Otro compañero encontró ajax.php en muchos módulos y se asustó. La diferencia: los que están en controllers/front/ son legítimos; el sospechoso es el que está en la raíz de la carpeta del módulo. Si lo encuentras, trátalo como una intrusión: revisa accesos, ficheros modificados y las tareas cron añadidas (en los casos avisados, creaba un cron cada cinco minutos).
El cron de gsitemap ahora va por /module/
Un compañero vio que el cron del sitemap había cambiado de /modules/gsitemap/... a /module/gsitemap/cron?token=..., una carpeta que no existe, y que la URL antigua había dejado de funcionar. La explicación: la nueva es una ruta de PrestaShop (el módulo se engancha a moduleRoutes) y la antigua era un fichero suelto que arrancaba PrestaShop. Las dos formas son válidas, pero la nueva es más segura, y en su caso la antigua dejó de responder. Si actualizaste el módulo, cambia la URL en tu cron.
El enlace de recuperar contraseña no funciona
Para un caso en el que el enlace de recuperación de contraseña no llevaba a ningún sitio, un compañero propuso un truco de depuración: en el controlador de contraseña, justo después de montar los parámetros del correo, registrar la URL con PrestaShopLogger::addLog() y mirarla en Parámetros avanzados → Registros. Si la URL se construye bien, el culpable está en el .htaccess o en un cortafuegos que se come la cadena. Hazlo en una copia y quita el registro al terminar: la URL contiene el token de acceso del cliente.
Devolver un pago de Redsys desde el pedido
Gustavo tenía un cliente que no quería entrar en el portal de Redsys para devolver un cobro. Su módulo de Redsys permite devoluciones parciales o completas desde el detalle del pedido, pero hay una condición: el id de la transacción de Redsys tiene que estar guardado en la tabla order_payments. En su caso, con una versión antigua del módulo, no se había guardado: actualizó el módulo (los pedidos nuevos ya guardaban la transacción) y preparó una consulta para completar la tabla de transacciones del módulo en los antiguos, a partir de la copia de seguridad.
Fallo crítico en LiteSpeed Enterprise: versión 6.3.7
Un compañero compartió el aviso: una vulnerabilidad de escalada de privilegios en LiteSpeed Web Server Enterprise permitía que un usuario de una web en un hosting compartido llegara a root y saliera de su aislamiento, incluido CageFS. Afectaba a las versiones anteriores a la 6.3.7. Si tienes servidor propio con LiteSpeed, actualiza; si estás en un compartido, pregunta a tu proveedor si ya lo ha hecho. LiteSpeed volvió a publicar la 6.3.7 en días sucesivos: si actualizaste al principio, comprueba que tienes la última compilación.
Pedidos duplicados: por qué pasan
Rekire sacó una versión gratuita de su Order Guard que solo avisa: muestra los pedidos duplicados, cuál sobra y cuánto stock hay atrapado. La causa más habitual la explicó en el hilo: el servidor se queda lento, la pasarela llama a la tienda para confirmar el pago y, en esos segundos, el cliente vuelve a la tienda; las dos peticiones crean el pedido a la vez. Pásalo por una tienda con muchos pedidos y comprueba si has regalado alguno.
B2B: una sola dirección de facturación por cliente
Gustavo preparó un módulo por encargo de una tienda B2B: al entrar, el cliente elige su dirección de facturación predeterminada, que se asigna siempre al carrito y al pedido; no puede añadir otra fácilmente y en su cuenta aparece la opción de cambiarla. Su reflexión: es lo normal en B2B, donde a un cliente se le factura a una dirección, y PrestaShop no lo trae de serie. Si te interesa, pregúntale en el grupo.
Envío a 0 € antes de poner la dirección: un imán de errores
Un compañero quería ocultar el coste de envío hasta que el cliente pusiera su dirección. Otros contaron por qué: con «recogida en tienda» a 0 euros, hay clientes a 600 km que la eligen porque es lo más barato, y extranjeros que eligen otro país porque en el suyo no hay transportista para ese producto. Mostrar «se calculará con tu dirección» en lugar de un 0 engañoso evita muchos de esos pedidos.
Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación