Advertencia: X euros pagados en vez de Y euros

Hemos observado en varias tiendas online, tanto en PrestaShop 1.6 como en PrestaShop 1.7, un error común: aparece una advertencia indicando que se ha pagado el doble de la cantidad que debería haber pagado el cliente.

PrestaShop es un CMS especializado en comercio electrónico que ofrece las herramientas necesarias para construir una tienda online. Aunque su instalación incluye una base bastante completa, configurarlo correctamente requiere conocer sus estados, módulos y funcionamiento interno.

En este tutorial vamos a centrarnos en el error «Advertencia: X euros pagados en vez de Y euros».

Mensaje de advertencia mostrado por PrestaShop
Advertencia mostrada por PrestaShop cuando el sistema registra un importe superior al total del pedido.

¿Por qué se produce este error de advertencia?

Hay quien relaciona este error con los módulos de pago de PayPal, Redsys o equivalentes, pero la causa depende de la advertencia mostrada. En este caso abordamos la situación en la que el importe registrado es siempre exactamente el doble de lo que debería haber pagado el cliente.

Mucho cuidado: el cliente no ha pagado realmente dos veces. Se trata de un error de configuración.

El error se produce al cambiar el estado del pedido. Después de realizar correctamente el pago, el primer estado es «Pago aceptado» y PrestaShop genera un registro en la zona de pagos del pedido.

Pedido de PrestaShop con un único registro de pago aceptado
Con el estado Pago aceptado aparece un único registro y todavía no se muestra la advertencia.

El error aparece al cambiar el estado del pedido

Mientras el sistema solo contiene el registro generado por «Pago aceptado», no aparece la advertencia. Sin embargo, al cambiar el pedido a «Preparación en curso», «Enviado» o «Entregado», el problema puede reproducirse.

En el siguiente ejemplo se aplicó directamente el estado «Enviado». PrestaShop creó un segundo registro de pago por el mismo importe y comenzó a indicar que se habían pagado 314,84 € en lugar de 157,42 €.

Pedido de PrestaShop con un pago duplicado después de cambiarlo a Enviado
Ejemplo de pago doble generado al aplicar el estado Enviado.

La solución a la advertencia de pago doble de PrestaShop

La solución es sencilla: debemos configurar correctamente los estados «Enviado» y «Preparación en curso», que son los que están generando el segundo registro de pago.

Para hacerlo, abre el Back Office de PrestaShop y sigue esta ruta:

  • Parámetros de la tienda.
  • Configuración de pedidos.
  • Pestaña Estados.
Listado de estados de pedidos en el Back Office de PrestaShop
Listado de estados desde el que debemos editar Preparación en curso y Enviado.

Desmarca «Establecer el pedido como pagado»

Entra en el estado «Preparación en curso» y localiza la opción «Establecer el pedido como pagado». Si está activada, desmárcala y guarda los cambios.

Repite el mismo procedimiento con el estado «Enviado». De este modo, cambiar el estado logístico del pedido no volverá a crear otro registro de pago.

Opción Establecer el pedido como pagado marcada en un estado de PrestaShop
Desmarca Establecer el pedido como pagado en Preparación en curso y repite el proceso en Enviado.
Este cambio no corrige los pedidos anteriores que ya contienen el registro duplicado. Evita que el error vuelva a reproducirse en los pedidos futuros.

Advertencia con un importe distinto, pero no exactamente el doble

Puede existir otro caso en el que el importe mostrado sea diferente por unos euros o céntimos respecto al importe pagado. Aunque la advertencia parezca igual, se trata de otro problema.

Este error se observó especialmente en PrestaShop 1.5 con el módulo de PayPal. El redondeo realizado por PrestaShop podía ser diferente al aplicado por PayPal, porque uno trataba los importes por producto y el otro sobre el total del carrito.

Cambiar el tipo de redondeo no siempre resolvía esas diferencias de céntimos. En el caso original, la solución aplicada fue actualizar de PrestaShop 1.5 a PrestaShop 1.7, algo que también resultaba necesario por seguridad y estabilidad.

La solución de los estados explicada en este tutorial corresponde al caso en el que la advertencia muestra exactamente el doble del importe.