Recientemente completó un proyecto para manejar el procesamiento de tarjetas de crédito. Una de las dificultades que enfrenté fue manejar el retraso / posible falla de los mensajes de notificación. El ejemplo más complejo fue:
- un sistema externo que envía la solicitud de pago
- mi sistema convierte esa solicitud en una solicitud a la pasarela de pago
- enviando al usuario a la puerta de enlace
- esperando que el usuario realice el pago
- el usuario regresa a mi sistema pero se retiene hasta que el sistema recibe una notificación de éxito / falla
- Enviar al usuario de vuelta al sistema externo dependiendo de la falla
Aún más difícil fue el hecho de que al no enviar la notificación, la puerta de enlace intenta enviar la notificación cada 15 minutos durante varias horas.
Lo resolví utilizando un registro de la base de datos de transacciones pendientes y luego detectando el éxito y el fracaso de la devolución más un oyente de retraso temporizado para la notificación y el manejo de transacciones ...
Razonablemente difícil!
Pero esto debe haberse resuelto miles de millones antes, ¿cuál es la mejor práctica?
Puedo ver que mi futuro va a estar escribiendo el manejo entre todos estos sistemas y administrando los retrasos de tiempo y las posibles fallas de la red, por lo que quiero seguir las mejores prácticas.
Las recomendaciones de libros / artículos serían geniales.
¡Gracias por adelantado!
fuente