ssheduardo / sermepa

Clase para utilizar la pasarela de pagos redsys, sermepa.
MIT License
193 stars 59 forks source link

RESPUESTA ANTES DE DARLE AL BOTON CONTINUAR ?? #100

Open mgip opened 7 months ago

mgip commented 7 months ago

Hola, cuando sale el formulario de redsys, se introduce la tarjeta y luego se le da a pagar, procesa el pago, luego se le tiene que dar continuar para que redsys devuelva la respuesta a la URL OK o KO, el problema que veo es que necesito la respuesta antes que se le de a continuar, eso ocurre porque muchos no le dan a continuar, muchos usuarios al ver la notificacion en verde ya lo dan como pagado, pero mi aplicacion no se entera de la respuesta, si se logra ver si fue OK o KO por canales, pero la idea es que el app reciba la informacion porque es un sistema de reservas. Lo estoy desarrollando en Laravel 9.

¿Es posible?, lo otro que estuve leyendo fue usar el API REST, pero me surge una duda, como gestiona los pagos que requieren la autorizacion del banco, como sms o gestionarla via app (del banco), porque via pasarale redsys como lo tengo ahorita, si sale el html del banco.

De verdad estoy que me vuelvo loco, no encuentro informacion al respecto.

Gracias de antemano por la ayuda.

ssheduardo commented 7 months ago

Pero para eso esta la notificación ONLINE, cuando el usuario hace el pago el Banco te notifica a esta url de notificación, aunque el usuario le de o no a seguir.

soyraziel commented 7 months ago

Hola!! He visto que en el código se puede poner la URL de notificación:

$redsys->setNotification('http://localhost/redsys-notification.php'); //Url de notificacion

Pero no sé cuándo se lanza esta URL. Entiendo que se lanza cuado se realiza el pago, independientemente de si el usuario pulsa el botón continuar o no para ir a la URL de OK o KO.

¿Podrías poner algún ejemplo de esta URL de notificación? ¿Qué parámetros recibe?

Gracias!!

ssheduardo commented 7 months ago

En el README esta el ejemplo https://github.com/ssheduardo/sermepa

mgip commented 7 months ago

Hola!! He visto que en el código se puede poner la URL de notificación:

$redsys->setNotification('http://localhost/redsys-notification.php'); //Url de notificacion

Pero no sé cuándo se lanza esta URL. Entiendo que se lanza cuado se realiza el pago, independientemente de si el usuario pulsa el botón continuar o no para ir a la URL de OK o KO.

¿Podrías poner algún ejemplo de esta URL de notificación? ¿Qué parámetros recibe?

Gracias!!

La duda que tengo es que si en vez de usar el metodo de redireccion, usas el que es via rest, como se restiona el iframe de los bancos ese que sale cuando haces un pago, el de SMS, o de aprobacion via app (del banco)

por cierto escribeme a soyelmorffe@gmail.com y te aclaro todo, el metodo de redireccion ya he trabado con el varias veces. ;)

ssheduardo commented 7 months ago

Luego si quieren compartir con el resto esto, puede servir de ayuda.

mgip commented 7 months ago

por mi no hay ningun problema! ;)...pero aun no me ha escrito.

por cierto Eduardo, sabes por lo menos aclararme la duda que tengo respecto al api rest ?

ssheduardo commented 7 months ago

Pero exactamente que duda tienes, el API rest se puede lanzar pero tienes que hablar con el Banco para el tema de las validaciones por tu lado, ellos dicen de usar mejor la redirección o InSite.

mgip commented 7 months ago

Pero exactamente que duda tienes, el API rest se puede lanzar pero tienes que hablar con el Banco para el tema de las validaciones por tu lado, ellos dicen de usar mejor la redirección o InSite.

Eduardo, el banco no es muy colaborador que digamos, jaja... pero me vale el "insite", a ver yo decia API rest para personalizar el formulario de pago, y no usar el de redsys (redireccion) como tal... Insite me vale... ya le estoy echando un ojo, creo que si es via iframe funcionarias automaticamente el tema de las validaciones del banco.... preparare un ejemplo practico con Jquery que veo que no existe en ningun lado. Gracias un saludo

ssheduardo commented 7 months ago

La verdad que si quieres con API Rest el Banco te va solicitar muchas cosas, siempre dicen Mejor hacer por Redirección o Insite. Si logras hacer algo con Insite te invito a compartirlo y si eso agregamos a la DOC algún ejemplo.

MontesionDesarrollos commented 7 months ago

Hola buenas Eduardo. Lo primero, muchas gracias por tu trabajo y por este gran aporte. Un poco con el hilo de esta pregunta, me pasa que la supuesta respuesta de notificación tras el pago en mi entorno local no está llegando. $redsys->setNotification('http://localhost/redsys-notification.php'); //Url de notificacion Quiero hacer testing para ver que recibo del banco y para seguir haciendo mi lógica del código tras un pago realizado correctamente, pero veo que no llega a esa URL (he probado con logs, emails, inserts DDBB..). Alguien podría ayudarme? Quizá pueda ser debido al entorno de pruebas? Muchas gracias de antemano!

ssheduardo commented 7 months ago

Pueda ser que la notificación no te llegue dado que el Banco hace un POST a la URL de notificación y tú localhost no es accesible para el Banco, intenta subirlo a una URL de algún servicio.

MontesionDesarrollos commented 7 months ago

Pueda ser que la notificación no te llegue dado que el Banco hace un POST a la URL de notificación y tú localhost no es accesible para el Banco, intenta subirlo a una URL de algún servicio.

Tienes toda la razón! Como podía esperar que el banco reconociera mi enlace de entorno de prueba 😅. Por si a alguien más le ayuda en el futuro: $redsys->setNotification('http://entorno-real/redsys-notification.php'); //Url de notificacion El enlace de notificación tiene que apuntar a un entorno real para poder recuperar la respuesta del banco y poder hacer el testeo pertinente.

MontesionDesarrollos commented 4 months ago

Hola de nuevo @ssheduardo. Como ya sabrán, hace unos meses implementé la pasarela de pago de La Caixa con tu clase y hasta el día de hoy está "casi" funcionando al 100%. Vuelvo aquí por ese "casi" dado que estoy teniendo algún problema que no consigo identificar y quizá alguien tenga la solución o le haya pasado algo parecido. El flujo normal como veo que también han comentado por aquí algunos, sería que a la hora de el cliente realizar el pago, saltase el Notification (independientemente de si dan a continuar o no en la pasarela) para nosotros poder hacer toda la lógica de la reserva una vez confirmado. Luego es indiferente si el cliente decide seguir hacia el pago_ok/pagoko. El problema que estoy teniendo, es que parece que algunos pagos que acaban siendo satisfactorios, nunca llegan a pasar por el Notification (es decir, yo no tengo constancia de ellos) y eso me está generando bastantes problemas, quitando de lado que se convierte en un ejercicio manual de comprobar diariamente en la pasarela del banco si alguien me ha pagado y yo no lo he registrado. Quisiera preguntar si a alguien le ha sucedido lo mismo? Si es un problema de mi banco? Si existe alguna manera en todo caso de volver a lanzar esa petición del Notification para comprobar si el cobro se ha realizado? Es algo bastante raro y que por mucho que haya intentado identificar, poner logs, etc.. el problema radica en que esos "pagos fantasma"_ nunca llegan a pasar por mi Notification. Muchas gracias.

ssheduardo commented 4 months ago

Te comento toda transacción queda registrado en Redsys, consulta con tu Banco para que te de acceso a un panel que tienen ellos y ahí podras buscar por fechas, importe, número de pedido, etc, aparte cuando encuentras un pedido en el panel que te proporciona el Banco puedes ver la información si en caso el Banco llamo a tú URL de notificación.

MontesionDesarrollos commented 4 months ago

Te comento toda transacción queda registrado en Redsys, consulta con tu Banco para que te de acceso a un panel que tienen ellos y ahí podras buscar por fechas, importe, número de pedido, etc, aparte cuando encuentras un pedido en el panel que te proporciona el Banco puedes ver la información si en caso el Banco llamo a tú URL de notificación.

Tengo acceso a dicho panel. Por ello es que puedo ver los pagos y puedo comparar los Cód. pedido con los que registro en mi DDBB. Y allí es cuando viene mi sorpresa que algunos pagos en Redsys están autorizados y mi código no ha sido capaz de registrarlos (no ha llegado ningún aviso al Notification). Quizás de cada 5 pagos, 1 falla. ¿Nadie ha experimentado nada similar?

ssheduardo commented 4 months ago

Si ves un pedido que presuntamente no ha llegado a tu código mira cual fue la respuesta que recibió el Banco cuando consulto tu URL. Esto se ve dando a un pedido -> dentro veras al final del todo la respuesta, otra opción es llamar al Banco y comentarle tu caso.

IsmaelVazquez commented 2 weeks ago

Esta el proyecto en desarrollo? O se ha quedado deprecated? Gracias!

ssheduardo commented 2 weeks ago

Esta el proyecto en desarrollo? O se ha quedado deprecated? Gracias!

Cómo así?

IsmaelVazquez commented 2 weeks ago

Esta el proyecto en desarrollo? O se ha quedado deprecated? Gracias!

Cómo así?

Hola, le pregunto si puedo utilizar este proyecto en symfony 7 o proximamenre, 8 de manera segura. Es decir, si usted esta actualizando este proyecto o lo dejo pasar. Muy buen trabajo. Admirable.