Jump to content

Pago exitoso, pedido creado, pero pedido queda en estado Error de Pago


miguel.canedo.mx

Recommended Posts

Hola,

Desde que actualicé a 1.7.8 he estado teniendo e mismo problema al pagar con tarjeta, independientemente de la pasarela de pago

tengo Paypal, Paypal+ (pago con tarjeta sin necesidad de cuenta paypal) y Openpay (BBVA Mexico)

-El pago pasa correctamente en el gateway

-El pedido se carga en el BO exitosamente

-Pero el pedido queda en estado Error de Pago y envía el email payment_error al cliente (y por supuesto, el cliente se asusta y reclama)

-Tengo que cambiar manualmente el pedido a Pago Aceptado para que el cliente reciba un nuevo email que dice que ya pasó su pago....

 

Si el pedido se paga por Transferencia Bancaria, queda como siempre  habás sido: en estado "En espera de pago por transferencia bancaria" bankwire

 

Esta claro que no es la pasarela de pago, porque paga con los dos modulos diferentes....

 

Alguna idea?

Alguien más?

Que puedo revisar?

Link to comment
Share on other sites

Recomiendo siempre que aunque sean versiones estables de Prestashop, nunca actualicemos a la última.

En mis clientes, en estos momentos no tengo ninguna tienda actualizada a una versión superior a la 1.7.7.8, a pesar de que ya dispongamos de releases superiores.

Como bien dice @Nickz puede suceder que algo en la última versión no funcione como se espera, o que los módulos que utilizaste en versiones anteriores no estén preparados para la actualización.

  • Like 2
Link to comment
Share on other sites

Hola, les comento mi caso el cual es similar.

 

Hice un ambiente de pruebas.

Actualicé de la versión 1.7.7.8 a la versión 1.7.8.1.  Cuando lo actualizo con todos los datos como clientes, direcciones, productos, pedidos, etc, este al momento de realizar un pedido desde el front office con moneda Peso Colombiano sin decimales, este arroja error de pago.  Si le configuro para que tenga dos decimas, este si crea el pedido sin problemas y en el estado correcto.

Debido a esto, hice una actualización limpia de la versión 1.7.8.1, realicé pedidos con moneda colombiana tanto con decimas como sin decimas y en ambos casos hizo el pedido exitoso.

Importé Clientes, productos, moneda, paises configurados, realicé un pedido con los productos importados y realizó el pedido sin problemas.

Importé todo lo relacionado al historial de pedidos y a partir de ahí empezó a generar error de estado con la creación de pedidos.  Al parecer hicieron un cambio en la lógica de Decimas en el core con la versión 1.7.8.1.

Monté caso en Github y al parecer demora.  https://github.com/PrestaShop/PrestaShop/issues/26671  Les agradezco a los que también les pase que vayan agregando evidencias para ver si realizan la regresión lo más pronto posible ya que tengo poco conocimiento en el manejo del core de prestashop.

Link to comment
Share on other sites

1 hour ago, ocio87 said:

Hola, les comento mi caso el cual es similar.

 

Hice un ambiente de pruebas.

Actualicé de la versión 1.7.7.8 a la versión 1.7.8.1.  Cuando lo actualizo con todos los datos como clientes, direcciones, productos, pedidos, etc, este al momento de realizar un pedido desde el front office con moneda Peso Colombiano sin decimales, este arroja error de pago.  Si le configuro para que tenga dos decimas, este si crea el pedido sin problemas y en el estado correcto.

Debido a esto, hice una actualización limpia de la versión 1.7.8.1, realicé pedidos con moneda colombiana tanto con decimas como sin decimas y en ambos casos hizo el pedido exitoso.

Importé Clientes, productos, moneda, paises configurados, realicé un pedido con los productos importados y realizó el pedido sin problemas.

Importé todo lo relacionado al historial de pedidos y a partir de ahí empezó a generar error de estado con la creación de pedidos.  Al parecer hicieron un cambio en la lógica de Decimas en el core con la versión 1.7.8.1.

Monté caso en Github y al parecer demora.  https://github.com/PrestaShop/PrestaShop/issues/26671  Les agradezco a los que también les pase que vayan agregando evidencias para ver si realizan la regresión lo más pronto posible ya que tengo poco conocimiento en el manejo del core de prestashop.

En mi caso la tienda está configurada en Pesos Mexicanos MXN,

Y tampoco uso decimales,

He encontrado un patrón:

Los montos de 3 dígitos, es decir 999 ó menos funcionan bien.

Los montos de 4 dígitos o más, es de cir de 1,000 en adelante generan el error

"Supongo" que tiene algo que ver con la utilización de la coma "," como separador de miles y el punto "." como separador de decimales:

aqui mis casos reales

Prestashop       PaymentGateway (openpay ó paypal)

1,970                 1,970.00     error

1,600               1,600.00    error

11,040             11,040.00   error

767                     767.00   OK

922                    922.00 OK

41,094              41,094.00 error

Podrá ser util esta información?

 

Edited by miguel.canedo.mx (see edit history)
Link to comment
Share on other sites

  • 3 months later...

Hola a todos.

Me sucede lo mismo con PrestaShop 1.7.8.2. Lo actualicé a 1.7.8.5 y no hubo cambios positivos respecto a esto.

¿Encontraron alguna forma de solucionarlo? Los módulos probados son MercadoPago y Mobbex. Ni bien la orden es creada, automáticamente se marca en estado "Error en pago" (payment_error), sin importar el estado del pago en la pasarela, que es aprobado.

Muchas gracias!

Saludos

Link to comment
Share on other sites

19 hours ago, jabmaster said:

Me sucede lo mismo con PrestaShop 1.7.8.2. Lo actualicé a 1.7.8.5 y no hubo cambios positivos respecto a esto.

Que version php estas utilizando?

Y porque actualizaste a 1.7.8.5 comenzó fallar de repente?

Si es servidor compartido es posible que dejaron php 7.2 o 7.3

Link to comment
Share on other sites

Buenas tardes.

Antes que nada, muchas gracias a todos por sus respuestas!

54 minutes ago, ocio87 said:

Hola, en el backlog está para entregarlo resuelto en la versión 1.7.8.6.  
 

mientras tanto lo puede solucionar con el cambio temporal en el archivo que mencionan en el siguiente link:

 

https://github.com/PrestaShop/PrestaShop/pull/26824/files

Les cuento que pude solucionar el error sin modificar PaymentModule.php, ni ningún archivo core de PS, sino modificando el valor de un parámetro dentro del archivo config.inc.php. La solución tiene que ver justamente con la constante _PS_PRICE_COMPUTE_PRECISION_ que se menciona en la solución compartida por ocio87.

En mi caso particular, tengo configurada la moneda ARS (pesos argentinos) con 0 decimales y esto generaba una discrepancia a la hora de validar la orden, ya que el importe del pago se formateaba según el valor establecido en _PS_PRICE_COMPUTE_PRECISION_, el cual era 2:

/**
 * @deprecated since 1.7.7
 */
define('_PS_PRICE_COMPUTE_PRECISION_', 2);

Lo que hice, fue hacer coincidir el valor de la constante _PS_PRICE_COMPUTE_PRECISION_ con el valor de los decimales configurados en la moneda, es decir, 0:

/**
 * @deprecated since 1.7.7
 */
define('_PS_PRICE_COMPUTE_PRECISION_', 0);

Por lo menos en mi caso, que estoy trabajando sin decimales, me funcionó perfectamente. El archivo en cuestión se encuentra en /config/config.inc.php y, si el archivo se conserva tal cual el original, la línea donde está definida la constante es la número 151.

2 hours ago, Nickz said:

Que version php estas utilizando?

Y porque actualizaste a 1.7.8.5 comenzó fallar de repente?

Si es servidor compartido es posible que dejaron php 7.2 o 7.3

No comenzó a fallar de repente. Es un sitio nuevo que aún no salió a producción, que se instaló hace aproximadamente unos 3 meses. Me olvidé de aclarar eso.

Tenemos otras dos tiendas en PrestaShop con la versión 1.7.4.2 que funcionan muy bien, pero dado que es un sitio nuevo, nos pareció bien instalar una versión base más reciente, aprovechando que no había datos anteriores que conservar. Comenzamos a testear los pagos y descubrimos el inconveniente. Revisando, vimos que nuevamente había disponible una versión más reciente y la actualizamos para ver si la 1.7.8.5 solucionaba el problema, pero no.

El hosting lo manejamos nosotros y la versión de PHP que le asignamos al sitio fue 7.4.2.8, de acuerdo al PHP compatibility chart que figura aquí: https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/

Nuevamente gracias a todos por la predisposición.

Saludos!

  • Like 3
Link to comment
Share on other sites

15 hours ago, jabmaster said:

El hosting lo manejamos nosotros y la versión de PHP que le asignamos al sitio fue 7.4.2.8, de acuerdo al PHP compatibility chart que figura

Prestashop might work fine under 7.4 but do the modules follow suite?

Link to comment
Share on other sites

Hola!

3 hours ago, Nickz said:

Prestashop might work fine under 7.4 but do the modules follow suite?

Sí. No te puedo confirmar eso del módulo de Mobbex ya que es una pequeña empresa local y su módulo no forma parte del catálogo oficial de PrestaShop. Pero en el caso de MercadoPago, ellos son partners de PrestaShop y además son una de las empresas líderes de cobro en todo LATAM. Aquí la info oficial: https://www.prestashop.com/en/partners/payment/mercadopago

Como les comentaba en mi última respuesta, y como también describieron otros usuarios anteriormente, el problema no es de los módulos, sino de un bug de PrestaShop ya identificado y solucionado para la próxima release. Mirá: https://github.com/PrestaShop/PrestaShop/pull/26824#pullrequestreview-915813829

De hecho, la parte del contenido de config.php que compartí, la constante en cuestión tiene un comentario donde aclara que su uso está deprecado desde la versión 1.7.7. Por ende, desde 1.7.8 que no debieran hacer uso de la misma y sin embargo la siguen utilizando.

Gracias nuevamente por la ayuda.

Saludos!

Link to comment
Share on other sites

2 minutes ago, Nickz said:

Bueno deberían etc es pura interpretación y sin saber si lo hacen vas a buscar una solución. 

No es una interpretación. Es el significado de deprecado en el contexto de la informática.

No me interesa desvirtuar el post midiendo egos. Gracias por tu ayuda. Volveré a responder sólo si tiene sentido técnico y es de ayuda para otros mi respuesta.

Saludos!

  • Like 2
Link to comment
Share on other sites

  • 3 months later...
On 11/20/2021 at 5:41 AM, Luisejo said:

Recomiendo siempre que aunque sean versiones estables de Prestashop, nunca actualicemos a la última.

En mis clientes, en estos momentos no tengo ninguna tienda actualizada a una versión superior a la 1.7.7.8, a pesar de que ya dispongamos de releases superiores.

Como bien dice @Nickz puede suceder que algo en la última versión no funcione como se espera, o que los módulos que utilizaste en versiones anteriores no estén preparados para la actualización.

Excelente consejo, y aproximadamente cuantas versiones o como te das cuenta cuando hacer el update? esperas a que salgan por ejemplo 2 release o un par de meses después como lo manejas. Pregunto desde la ignorancia porque muchas veces me paso de agarrarme tremenda calentura por problemas que surgen luego de un update haha. 

Link to comment
Share on other sites

  • 9 months later...
On 3/26/2022 at 5:40 PM, jabmaster said:

Buenas tardes.

Antes que nada, muchas gracias a todos por sus respuestas!

Les cuento que pude solucionar el error sin modificar PaymentModule.php, ni ningún archivo core de PS, sino modificando el valor de un parámetro dentro del archivo config.inc.php. La solución tiene que ver justamente con la constante _PS_PRICE_COMPUTE_PRECISION_ que se menciona en la solución compartida por ocio87.

En mi caso particular, tengo configurada la moneda ARS (pesos argentinos) con 0 decimales y esto generaba una discrepancia a la hora de validar la orden, ya que el importe del pago se formateaba según el valor establecido en _PS_PRICE_COMPUTE_PRECISION_, el cual era 2:

/**
 * @deprecated since 1.7.7
 */
define('_PS_PRICE_COMPUTE_PRECISION_', 2);

Lo que hice, fue hacer coincidir el valor de la constante _PS_PRICE_COMPUTE_PRECISION_ con el valor de los decimales configurados en la moneda, es decir, 0:

/**
 * @deprecated since 1.7.7
 */
define('_PS_PRICE_COMPUTE_PRECISION_', 0);

Por lo menos en mi caso, que estoy trabajando sin decimales, me funcionó perfectamente. El archivo en cuestión se encuentra en /config/config.inc.php y, si el archivo se conserva tal cual el original, la línea donde está definida la constante es la número 151.

No comenzó a fallar de repente. Es un sitio nuevo que aún no salió a producción, que se instaló hace aproximadamente unos 3 meses. Me olvidé de aclarar eso.

Tenemos otras dos tiendas en PrestaShop con la versión 1.7.4.2 que funcionan muy bien, pero dado que es un sitio nuevo, nos pareció bien instalar una versión base más reciente, aprovechando que no había datos anteriores que conservar. Comenzamos a testear los pagos y descubrimos el inconveniente. Revisando, vimos que nuevamente había disponible una versión más reciente y la actualizamos para ver si la 1.7.8.5 solucionaba el problema, pero no.

El hosting lo manejamos nosotros y la versión de PHP que le asignamos al sitio fue 7.4.2.8, de acuerdo al PHP compatibility chart que figura aquí: https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/

Nuevamente gracias a todos por la predisposición.

Saludos!

¡Idolo! muchas gracias por esto. Tengo Prestashop 1.7.8.8 con el modulo de Mercado Pago 4.13

Tenía el mismo problema: todas las ordenes se quedaban en "Transacción en proceso" y sin confirmar, aún cuando ya el pago estaba validado por MercadoPago. 
Cambié el _PS_PRICE_COMPUTE_PRECISION_  tal como tú lo indicaste y funcionó perfecto.

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...