creagia / laravel-redsys

Integrate your Laravel application with Redsys, the lead payment gateway in Spain.
MIT License
10 stars 2 forks source link

Allow multiple redsys clients #50

Closed dtorras closed 6 months ago

dtorras commented 6 months ago

Reopen #42 from @gonbooster after merging and reverting because is incomplete.

dtorras commented 6 months ago

@gonbooster he tenido que deshacer el merge de esta feature porqué faltaba gestionar las notificaciones de Redsys como comentas en #44. Esto se tendría que hacer en esta misma PR y no mezclado con la funcionalidad de refund.

Por lo que veo, mantener múltiples clientes puede complicar mucho este package ya que tendrías que modificar la URL de notificación para incluir algún identificador del cliente o guardarlo en la base de datos. No tengo claro si quiero que este package tenga tantas opciones. Para estos casos más complicados podría ser mejor dejar una implementación totalmente personalizada de https://github.com/creagia/redsys-php

Ves alguna manera simple de mantener múltiples clientes pero manteniendo el uso básico y simple para un solo cliente?

gonbooster commented 6 months ago

Buenas @dtorras hoy me encuentro fuera y no puedo comprobar pero mañana lo valoro en detalle.

Pero me temo que si que sería necesario una tabla donde se almacenen los clientes redsys con su merchan, terminal y secret key.

Vincular el redsys client id a cada línea RedsysRequest

Por otro lado, cuando se recibe la notificación, la funcionalidad para obtener los inputs estarían mejor en una función a parte dado que no depende del RedsysClient.

Sería más limpio primero tratarlos con la nueva funcion y después crear el RedsysNotification una vez obtenido el RedsysClient del RedsysRequest correspondiente.

Se que son unos cuantos cambios pero dotaría a la librería de una escalabilidad muy interesante.

Si te parece mañana adapto los cambios propuestos y envío un PR

Un saludo.

dtorras commented 6 months ago

Lo siento @gonbooster pero no veo nada claro añadir toda esta dificultad para un caso tan poco común como tener más de un TPV virtual en la misma aplicación. Complica la definición del config y la base de datos para la mayoría de casos en que solo hay un TPV.

La idea de este package es simplificar https://github.com/creagia/redsys-php para los usuarios de Laravel. Para un caso especial como el que comentas, creo que es mejor tener tu propia implementación de redsys-php adaptándolo a tu base de datos.

gonbooster commented 6 months ago

Okay. Muchas gracias @dtorras