Cita:
Iniciado por akrogonac
Gracias @Malenko por tu ayuda,
supongamos que hemos asignado 10 min como tiempo maximo de pago. El cliente llega a la pasarela de pago y en base de datos marcamos como reservada.
Pasan los 10 min y el cliente aun no ha pagado, el servicio en segundo plano, cambia la entrada a en venta. Tras esto el cliente paga. Aqui volvemos a tener conflicto.
A no ser que a las pasarelas de pago se les pueda asignar el mismo tiempo.
Con lo que descubres es que el problema no es que el usuario reserve , y no pague. El problema es controlar recursos limitados.
Para resolverlo, la disponibilidad de lo que se haya comprado hay que comprobarla también al regreso del pago.En caso de que el recurso ya no esté disponible, actuar en consecuencia.
Una opción es devolver inmediatamente el pago, e informar al usuario, ponerlo en una lista de espera por si hay cancelaciones, etc.
Otras veces, puedes ofrecer alternativas.Si, por ejemplo, el usuario pudiera elegir asiento (en caso de que el sistema se basara en "asientos"), podría seleccionar uno alternativo.