Concluiu recentemente um projeto para lidar com o processamento de cartão de crédito. Uma das dificuldades que enfrentei foi lidar com o atraso / possível falha nas mensagens de notificação. O exemplo mais complexo foi:
- um sistema externo enviando a solicitação de pagamento
- meu sistema transformando essa solicitação em uma solicitação para o gateway de pagamento
- enviando o usuário para o gateway
- aguardando o usuário executar o pagamento
- o usuário retornando ao meu sistema, mas sendo retido até que o sistema receba uma notificação de sucesso / falha
- Enviando o usuário de volta ao sistema externo, dependendo da falha
Ainda mais difícil foi o fato de que, ao não enviar a notificação, o gateway tenta enviá-la a cada 15 minutos, durante várias horas.
Eu o resolvi usando um registro de banco de dados de transações pendentes e, em seguida, detectando sucesso e falha do retorno, além de um ouvinte de atraso cronometrado para a notificação e manipulação de transações ...
Razoavelmente difícil!
Mas isso deve ter sido resolvido um bilhão de vezes antes, então qual é a melhor prática?
Percebo que meu futuro será escrever a manipulação entre todos esses sistemas e gerenciar os atrasos e possíveis falhas de rede, por isso quero seguir as melhores práticas.
As recomendações de livros / artigos seriam ótimas.
Desde já, obrigado!