Trabalho com Laravel e integrei múltiplos gateways de pagamento, cada um com seu formato de webhook. Precisei gerenciar testes manuais, que cresceram em volume. Comecei usando o expose.dev, mas precisava de mais controle. Depois, optei por um tunel WebSocket persistente, que me permitiu manter a integridade dos testes e manipular payloads antes de entregar para o provedor.
Túnel WebSocket Persistente
Usando WebSocket, a request pública chega no servidor, é repassada como frame pelo socket para a CLI, que devolve a resposta real para o servidor. Isso elimina a espera de retry do provedor e me dá status de conexão em tempo real.
Manipulação de Payload
Para testar payloads diferentes, alterei a request antes de ela chegar no meu ambiente local. A manipulação de payload é feita em uma sequência de nodes que executam em sequência quando a request chega. Isso inclui verificação de assinatura HMAC, switch de campo do payload, transformação de header/body/method, enriquecimento via chamada externa, e idempotência com janela de tempo.
Persistência e Visualização
Para garantir que os testes fossem consistentes e não afetassem a UI, limitei a retenção de requests a 1.000, em vez de manter histórico indefinidamente. Também criei um tail de requests direto na CLI para acompanhar o fluxo de testes em tempo real.
Conclusão
Construí uma ferramenta chamada Routely que combina inspeção, tunelamento e manipulação de payload. Isso substitui a necessidade de duas ferramentas separadas e permite que eu teste integrações de pagamento de forma eficiente e consistente.