Bien, este error es un poco complejo, este fallo es debido a que la versión del modulo es inferior a la de Prestashop, por ejemplo, nosotros en España normalmente se trabaja con la empresa Redsys que particularmente desarrollan sus propios módulos y totalmente gratuitos, en este caso el problema de un cliente provenía de su modulo que solo llega hasta una versión de Prestashop.

La versión con la que trabaja nuestro cliente es la versión 1.7.5.1 y la versión del modulo es la v3.0.4 y esta versión solo llega hasta el Prestashop 1.7.3. Este modulo no es que hubiera trabajado mal, pero tenía conflictos con la tienda.

Que es lo que hacía el módulo: El módulo cobraba correctamente el pedido, el administrador ingresaba el dinero en su cuenta, pero al cliente le llegaba un email diciendo que el pedido había sido cancelado.

En el apartado de “Pedidos” también indicaba como que el pedido había sido cancelado, pero tanto el cliente que si pagó como el administrador había ingresado en cuenta el coste del producto.

En el menú Configurar > Parámetros avanzados > Registros / Logs puedes ver el error que se muestra en la transacción.

La función del módulo que es cobrar funcionaba bien pero no leía la cesta, con el error Frontcontroller::init – Cart cannot be loaded or an order has already been placed using this cart lo que dice es que el FrontController verifica si ya se ha realizado un pedido con el número de carrito cuando regresa a prestashop. El número de carrito sigue siendo el mismo porque (a la vuelta) aún no se ha establecido un nuevo número de carrito. Y, por lo tanto, coloca una entrada de registro que indica que el carro actual ya está relacionado con un pedido en la base de datos (se ha realizado la compra, pero el módulo detecta que ese producto ya se ha vendido y no puede volverse a vender).

Entonces, justo antes de que Redsys establezca la plantilla return.tpl, se debe crear y actualizar un nuevo número de carrito.

¿Cómo se soluciona?

La manera de solucionar a parte de comprar un módulo de otros desarrolladores (aquí lo puedes ver) fue cancelar el envío de mensajes para no asustar al cliente como que su pedido a sido cancelado pero si pagado. Esto es solo una medida preventiva para mirar de solucionar el error.

En “Pedidos” sigue mostrando los productos “Cancelados”, desactivando esta opción solo dejamos de enviar correos de confirmación de compra al usuario, nada más. Si no tuvieras la opción de comprar un módulo y has de esperar a que Redsys se actualice, deberás escribir y confirmar manualmente al usuario su compra.

Una vez instalada la versión de compra de este módulo y desinstalado la versión original y anticuada todo funcionó perfectamente.

Espero que te sirva.

Share This

Compartir

Comparte esta publicación con tus amigos!