Jump to content

Notificación de nuevo pedido duplicada al pagar por Redsys


Recommended Posts

Buenos días,

Recientemente acabo de activar el módulo redsys por redirección, funciona todo perfecto, se realiza el pago correctamente (1 sola vez) pero me llegan dos emails iguales de notificación de nuevo pedido ¿porque los duplica???  sin embargo si el pedido se paga por otro medio como paypal o transferencia bancaria la notificación de nuevo pedido sólo llega una vez.

¿que podría estar pasando? he hablado con redsys pero ellos me dicen que no es problema de redsys, que ellos no envian ningún email de notificación de pedido, que sera error de mi plugin de notificaciones pero....¿y porque con otras formas de pago no me pasa?

Saben a que podria deberse?? el plugin que tengo para notificaciones de nuevo pedido es el

Alertas por correo electrónicos  v2.4.1 - de PrestaShop

 

Si alguien le ha pasado y sabe la soución... No es que me moleste recibir 2 emails iguales pero es por evitar confusiones...

 

Link to comment
Share on other sites

3 minutes ago, ExpertoPrestaShop said:

Esto es solo una suposición pero si tuviera que apostar te diría que el problema si proviene del modulo de Redsys.

Pues eso es lo que les he dicho que solo me pasa cuando pago por redsys, en otras formas de pago no me pasa!!

Y redsys me responde esto:

NO, redsys no manda ningún correo electrónico, sólo manda uno como confirmación de que la operación se ha realizado con éxito pero no de confirmación de pedidos. Deberán revisar de manera interna desde dónde y por qué están recibiendo los correos de esa manera. Pero nuestro plugin no genera correos electrónicos con las operaciones.

 

Así que no lo sé!!

Link to comment
Share on other sites

7 minutes ago, ExpertoPrestaShop said:

Busca dentro del código fuente del modulo cualquier lugar donde aparezca esto Mail::send y así sabras que correo se envía dentro del modulo.

Y donde esta el código fuente? hay muchos archivos y carpetas dentro del modulo redyspur

Link to comment
Share on other sites

Todo lo que esta dentro de la carpeta del módulo es el código fuente. Es relativamente fácil buscarlo con un editor de texto. Pero si no sabes lo que estas mirando es complicado que puedas hacer algo al respecto sin conocimientos básicos de programación. Tendrías que contratar un desarrollador.

Link to comment
Share on other sites

7 minutes ago, ExpertoPrestaShop said:

Todo lo que esta dentro de la carpeta del módulo es el código fuente. Es relativamente fácil buscarlo con un editor de texto. Pero si no sabes lo que estas mirando es complicado que puedas hacer algo al respecto sin conocimientos básicos de programación. Tendrías que contratar un desarrollador.

 

Ah ok, pues mirare en todos los archivos y con el buscador a ver si encuentro algo, pensaba que sabrías en que archivo exactamente estaría eso.

Le echo un vistazo y te digo

 

 

Link to comment
Share on other sites

  • 2 months later...

Si, creo que manda uno cuando la tienda recibe el pedido y otro cuando se acepta el pago, solo en el caso de Redsys....  de alguna forma tiene que ser una incompatibilidad con el módulo "Mail alerts" y el de "Redsys"... pero no veo ninguna configuracion en ninguno de ellos que permita modificar esto.

Esperaré respuesta de Redsys antes de toca nada.

Link to comment
Share on other sites

  • 4 weeks later...

Buenas a todos!

El problema está en el módulo de Redsys, ya que ocurre solamente en los pedidos que se pagan con este módulo... que ellos no hagan ningún envío no quiere decir que no sean el motivo del problema.

Ese email se envía por el módulo "ps_emailalerts" cuando se valida un pedido, o lo que es lo mismo, cuando se llama al hook 'actionValidateOrder', que es cuando se hace el envío. Buscando en el módulo de Redsys, se aprecia que se hacen 2 llamadas a ese hook, por lo tanto ahí está el problema y alguna de esas 2 llamadas sobra.

Si lo queréis solucionar hasta que actualicen el módulo, bastaría con comentar esa llamada en el fichero controllers/front/validation.php en la línea 275, donde se hace Hook::exec('actionValidateOrder'); ya que el envío del correo ya se hace en la línea 262 cuando se llama a la función validateOrder().

 

Un saludo!

Link to comment
Share on other sites

Bueno, he estado revisando el módulo, tengo instalado una versión que ellos me mandaron indicando que arreglaba el problema, .. no lo hace. 

En esta version donde hace el Hook que comentas, lo hace en forma de array y en dos archivos diferentes: en el validation.php y en redsyspur.php

Se complica la cosa.

Link to comment
Share on other sites

En el fichero redsyspur.php también lo hace el módulo que tengo, pero lo hace dentro de una función validateCart() que no sé muy bien para qué la emplean, aunque ahí también hará el envío 2 veces porque el Hook lo hace después de llamar a validateOrder()...

Link to comment
Share on other sites

On 10/9/2023 at 1:09 PM, gainza said:

Bueno, he estado revisando el módulo, tengo instalado una versión que ellos me mandaron indicando que arreglaba el problema, .. no lo hace. 

En esta version donde hace el Hook que comentas, lo hace en forma de array y en dos archivos diferentes: en el validation.php y en redsyspur.php

Se complica la cosa.

Efectivamente con el módulo de Redsys sucede que se envía 2 emails de la plantilla new_order. Al menos en Prestashop 8. Si os notifican que se va actualizar ponerlo en este hilo. Gracias! 

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

Me uno al hilo ya que yo también tengo el problema. Mis versiones son:

Módulo Redsys 1.4.6

Prestashop 8.1.2

Mi problema no es simplemente de un email repetido ya que yo empleo ese hook "ActionValidateOrder" para hacer varias operaciones importantes de mi lógica de negocio que se están haciendo por duplicado causando un auténtico desastre.

Analizando un poco creo que el lugar más seguro para comentar el hook es en redsyspur::validateCart ya que el método es muy corto y las operaciones que hace son bastante claras.

Una vez ha guardado los datos en sus tablas mediante:

Redsys_Order::saveOrderDetails

simplemente llama al hook y luego devuelve la url de OK. En mi caso esa url está mal ya que uso urls amigables y multiidioma con lo que esa última parte del método solo es un problema.

Voy a hacer pruebas comentando eso a ver que pasa.

 

 

 

Link to comment
Share on other sites

1 hour ago, Manuel_GT said:

simplemente llama al hook y luego devuelve la url de OK. En mi caso esa url está mal ya que uso urls amigables y multiidioma con lo que esa última parte del método solo es un problema.

Con un redirect no puedes "arreglar" este problema?

Link to comment
Share on other sites

Es que devuelve la url como string, no un redirect

El resultado lo asigna a una variable. Estoy cambiando el return que tienen ellos por un

return Context::getContext()->link->getpageLink('order-confirmation',$ssl, $params);

a ver que tal va...

De todas formas hay otro sitio en el que está esta url y es seguramente el que más usa porque es el que mete en el base64 con la info de la transacción y ese está en otro método ( createParameter)

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

Bueno pues resulta que la operación de prueba en ningún momento ha llamado al método validateCart así que entiendo que el proceso llama dos veces a validation.php ya que después de comentar en el otro sitio me han llegado dos emails 😞

 

Link to comment
Share on other sites

Hola de nuevo.

Después de algunas pruebas he podido comprobar que el problema parece ser que como la clase Redsyspur extiende PaymentModule hereda el método validateOrder que en su implementación tiene una llamada al hook actionValidateOrder  (en linea 553)

En validation.php (linea 313) se llama a $redsys->validateOrder siendo esta variable un objeto Redsyspur ejecutando, por tanto,  el hook anterior (1º vez).

Unas lineas más abajo (linea 328 creo) validation.php llama al hook de nuevo de forma directa (2º vez). Con lo que es claro que se ejecuta dos veces.

He comentado la llamada directa de validation.php y he probado a realizar una operación terminando correctamente y con solo una ejecución.

Por otro lado, alimentar con getpagelink la url de vuelta también ha funcionado perfectamente generando la url amigable.

 

  • Like 1
Link to comment
Share on other sites

On 10/9/2023 at 12:11 PM, jcarlos_1985 said:

Buenas a todos!

El problema está en el módulo de Redsys, ya que ocurre solamente en los pedidos que se pagan con este módulo... que ellos no hagan ningún envío no quiere decir que no sean el motivo del problema.

Ese email se envía por el módulo "ps_emailalerts" cuando se valida un pedido, o lo que es lo mismo, cuando se llama al hook 'actionValidateOrder', que es cuando se hace el envío. Buscando en el módulo de Redsys, se aprecia que se hacen 2 llamadas a ese hook, por lo tanto ahí está el problema y alguna de esas 2 llamadas sobra.

Si lo queréis solucionar hasta que actualicen el módulo, bastaría con comentar esa llamada en el fichero controllers/front/validation.php en la línea 275, donde se hace Hook::exec('actionValidateOrder'); ya que el envío del correo ya se hace en la línea 262 cuando se llama a la función validateOrder().

 

Un saludo!

Buenas

Finalmente a mi ha servido esta solución.... en mi caso he comentado este código del archivo  controllers/front/validation.php

Hook::exec('actionValidateOrder', array(
                                    'cart' => $cart,
                                    'order' => Order::getByCartId($cart->id),
                                    'customer' => $customer,
                                    'currency' => new Currency((int) $cart->id_currency, null, (int) $cart->id_shop),
                                    'orderStatus' => new OrderState((int) Configuration::get ( "REDSYS_ESTADO_PEDIDO" ), (int) $cart->id_lang),
                                ));

En mi versión del módulo está en la línea 313

  • Thanks 1
Link to comment
Share on other sites

  • 2 months later...

Por si a alguien le interesa.

Acabo de recibir de Redsys el módulo de pago versión 1.5.1 que resuelve el problema de las urls amigables así como la doble ejecución del hook "actionValidateOrder"

Un saludo.

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