Fallback no fluxo transacional
Garantir que o status da transação seja corretamente atualizado, mesmo em cenários onde o webhook updated-sub-transaction não seja entregue ou processado corretamente.
Fallback no fluxo transacional
Webhook: updated-sub-transaction
Objetivo
Este fallback atua como um mecanismo de segurança, assegurando consistência do status transacional.
Premissas
- A transação é criada inicialmente com status PENDING.
- O webhook
updated-sub-transactioné responsável por notificar mudanças de status. - O webhook pode falhar por motivos externos (timeout, bloqueio de infraestrutura, indisponibilidade temporária).
- A API da Paytime é considerada fonte de verdade para o status final da transação.
Estratégia Recomendada
-
Persistência Inicial
- No momento da criação da transação, armazene localmente:
- _id (ID da Transação;
- status inicial (PENDING)
- created_at
-
Fluxo Normal (Via Webhook)
- Quando o webhook
updated-sub-transactionfor recebido: - Localizar a transação pelo _id.
- Verificar o status recebido.
- Atualizar o status local, quando aplicável.
- Registrar data e origem da atualização (webhook).
- Quando o webhook
-
Condição de Ativação do Fallback
- O fallback deve ser executado quando:
- A transação permanece com status PENDING após um tempo pré-definido
(ex.:1,2,3,6,10 ou 15 minutos) após a criação, e - Nenhum webhook de atualização foi processado com sucesso.
-
Execução do Fallback
- Passo 1 – Consulta ativa da transação
-
GET /v1/marketplace/transactions/{_id}
-
Validação do Status
- A partir da resposta da API:
- Se o status retornado diferente do salvo localmente:
- Atualizar o status local da transação para PAID
- Registrar que a atualização ocorreu via fallback
- Se o status permanecer PENDING:
- Manter o status local
- Reagendar nova verificação, respeitando política de retry
-
Atualização do Status Local (Exemplo Lógico)
Exemplo de atualização de Status de
PendingparaPAID
Status local: PENDING
Status retornado pela API: PAID
→ Atualizar status local para PAID
→ Registrar origem da atualização: FALLBACK
→ Registrar data/hora da atualização
Fluxo Resumido
Exemplo de atualização de Status de Pending para PAID
Criação da transação (PENDING)
↓
Webhook updated-sub-transaction
↓
Status atualizado para PAID
↓
[Fallback]
Se webhook não recebido em X minutos
↓
GET /transactions/{id}
↓
Status = PAID
↓
Atualização local do status

Boas Práticas
- Utilize backoff exponencial para novas tentativas de fallback.
- Evite consultas excessivas à API.
- Centralize logs de:
- Webhooks recebidos
- Fallbacks executados
- Nunca altere o status sem validação direta na API da Paytime.
- Este fallback garante que o status da transação reflita corretamente a realidade do pagamento, reduzindo impactos operacionais e financeiros causados por falhas de comunicação assíncrona.
Esse fluxo deve ser tratado como parte essencial da integração, e não como exceção.
Updated 7 months ago
Did this page help you?