Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][FIX] payment_redsys: Error processing redsys response #3309

Closed
wants to merge 1 commit into from

Conversation

papulo79
Copy link

@papulo79 papulo79 commented Nov 14, 2023

  • /payment/redsys/result/ controller now process Redsys response and updates related transaction.

Steps to reproduce:

  • Install payment_redsys module
  • Configure payment method with test values from https://pagosonline.redsys.es/entornosPruebas.html as "Test mode" and publish.
  • Login into portal with "portal" user
  • Buy something and go to checkout screen, pay with Redsys.
  • Use an Autenticación Frictionless card numbres (4918019160034602,Expiration:12/34, CVV:123)
  • The payment will end with success message.
  • Press "Continuar" and you'll won't see the "Success message", instead you'll see a pending confirmation message.

The endpoint that retrieves Redsys response doesn't process it and redirects the browser and losts the response information.

All other payment modules call _handle_notification_data before the redirection.

- /payment/redsys/result/<page> controller now process Redsys response and updates related transaction.

Steps to reproduce:

- Install payment_redsys módule
- Configure payment method with test values from https://pagosonline.redsys.es/entornosPruebas.html as "Test mode" and publish.
- Login into portal with "portal" user
- Buy something and go to checkout screen, pay with Redsys.
- Use an Autenticación Frictionless card numbres (4918019160034602,Expiration:12/34, CVV:123)
- The payment will end with success message.
- Press "Continuar" and you'll won't see the "Success message", instead you'll see a pending confirmation message.

The endpoint that retrieves Redsys response doesn't process it and redirects the browser and losts the response information.

All other módules call _handle_notification_data before the redirection.
@papulo79
Copy link
Author

papulo79 commented Dec 1, 2023

@OCA/local-spain-maintainers

@RodrigoBM
Copy link
Contributor

ping @sergio-teruel

@sergio-teruel
Copy link
Contributor

Hola.

¿Pero tienes bien configurado el dominio para que Redsys te pueda enviar el POST con la confirmación?
Me da la sensación que el querer hacer esto es porque no se valida la respuesta que envía Redsys ¿Estoy en lo cierto?

@papulo79
Copy link
Author

@sergio-teruel Si, estuve realizando las pruebas en varios entornos con el servidor correctamente configurado.

Te dejo también la prueba en runboat con el modo de desarrollo y la configuración de https://pagosonline.redsys.es/entornosPruebas.html

Recibía la respuesta de Redsys sin correctamente, pero redsys_result no procesaba el resultado de la transacción.

redsys_return si procesa la respuesta con _handle_notification_data y ya traslada el estado de la transacción sin problemas.

@ljsalvatierra-factorlibre
Copy link
Contributor

Hola @sergio-teruel, ¿se podría empujar para mergear?

@sergio-teruel
Copy link
Contributor

Pero veo que no es necesario...
Deja que haga unas pruebas esta semana a ver si es que me estoy equivocando..

@AntoniRomera
Copy link

Buenos dias,

Después de varias pruebas con el entorno de pruebas de Redsys, esto es totalmente necesario ya que cuando acabas de pagar en la web de redsys y de las al botón de continuar, redsys envia la respuesta a la url "/payment/redsys/result/redsys_result_ok?", entonces hace el comportamiento descrito en este PR, parece que el entorno de pruebas de redsys esta en modo síncrono asi que parece necesaria esta mejora.

@sergio-teruel
Copy link
Contributor

Hola @AntoniRomera
Redsys envía via POST un formulario a Odoo (Dirección que se envia en los datos) que, aunque el usuario no pulse a continuar ahce que se procese el pedido y se pague la factura...
La redireccion a payment/redsys/result/redsys_result_ok es para que tu muestres los que quieras cuando el usuario vuelve de Redsys,....
Pero lo importante va en el formulario enviado via POST en cuanto se valida el pago por parte de Redsys.. así que creo que no es necesario esto.

@AntoniRomera
Copy link

AntoniRomera commented Jun 5, 2024

Hola @AntoniRomera Redsys envía via POST un formulario a Odoo (Dirección que se envia en los datos) que, aunque el usuario no pulse a continuar ahce que se procese el pedido y se pague la factura... La redireccion a payment/redsys/result/redsys_result_ok es para que tu muestres los que quieras cuando el usuario vuelve de Redsys,.... Pero lo importante va en el formulario enviado via POST en cuanto se valida el pago por parte de Redsys.. así que creo que no es necesario esto.

Hola @sergio-teruel, como antes he dicho dentro de la configuración del TPV virtual se puede configurar de manera "síncrono/asíncrono", el comportamiento que tu describes se hace si esta de manera "asíncrono", el comportamiento que yo describo se hace cuando lo tienes de manera "síncrono", repito que acabo de realizar las pruebas con el TPV de test dado por redsys y sin este trozo de código modificado no funciona. Las pruebas realizadas, es ir a la web e intentar pagar el carrito.

@sergio-teruel
Copy link
Contributor

Ya.. si.. pero tenerlo así configurado es muy muy peligroso... ¿Que pasa si el usuario no pulsa continuar en la pasarela?...

@pedrobaeza
Copy link
Member

Creo que entonces lo mejor será poner en el README del módulo que se debería configurar del otro modo, ¿no?

@papulo79
Copy link
Author

papulo79 commented Jun 5, 2024 via email

@pedrobaeza
Copy link
Member

Promover una práctica peligrosa creo que no es lo más adecuado. ¿Qué razón hay para colocar esa configuración?

@danielduqma
Copy link

Buenas tardes a todos,

Revisando el problema que originaba este PR, sí que se recibe la respuesta en el endpoint que comentábais (/payment/redsys/return) aunque en muchos casos no es tan inmediata como cabría esperar.

Por tanto, se podría descartar el PR para evitar confusiones.

No obstante, lo que no se produce es la redirección automática de Redsys a /payment/redsys/result/redsys_result_ok. Sigue siendo necesario que el usuario clique en Continuar para volver a Odoo, aunque no se depende de ello para recibir la respuesta del pago. ¿Hay alguna solución al respecto o es un problema conocido?

Gracias, un saludo.

@pedrobaeza
Copy link
Member

Yo considero que es como funciona el sistema. Si no le das a continuar, no continúa... ¿no?

@danielduqma
Copy link

Pensábamos que existiría el típico mensaje: Será redirigido en 5 segundos. Si no se le redirige automáticamente, haga click aquí. Si no existe esa posibilidad nada, no le damos más vueltas. Gracias!

@pedrobaeza
Copy link
Member

Ya, parecería lo lógico,pero aquí creo que depende de la propia Redsys, no de Odoo. Cierro entonces esto. Si consideráis que se deba hacer la apreciación en el README sobre ese modo asíncrono que se comentaba, adelante con el PR. @papulo79 ¿estás de acuerdo en cerrar esto? ¿Cuáles son las razones para utilizar eso otro modo que comentáis?

@papulo79
Copy link
Author

papulo79 commented Jul 2, 2024

Tras leer todo, parece más un problema de falta de información que de modo de funcionamiento.

Por mi ok, cerremos el tema ya.

@pedrobaeza pedrobaeza closed this Jul 2, 2024
@RodrigoBM RodrigoBM deleted the 16.0-payment_redsys branch July 23, 2024 15:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants