Skip to main content

O que são hooks?

Hooks permitem que você execute código em momentos específicos do fluxo de pagamento. O pagamentos.dev oferece dois tipos de hooks unificados:
  • Lifecycle hooks — disparam automaticamente após operações de API bem-sucedidas (criar, consultar, atualizar, listar, cancelar).
  • Webhook hooks — disparam quando eventos assíncronos chegam via webhook (pagamento realizado, cobrança vencida, etc).
Você registra os hooks diretamente na configuração da instância Pagamentos:

Lifecycle hooks

Os lifecycle hooks capturam eventos que acontecem imediatamente após uma chamada de API retornar com sucesso. Eles são ideais para logging, auditoria, sincronização com seu banco de dados ou disparo de ações internas.

Evento de lifecycle

Cada hook recebe um objeto LifecycleEvent com as seguintes propriedades:

Hooks por operação

Você pode escutar eventos específicos de cada recurso e operação:

Clientes

Cobranças

Checkout

Hooks por recurso (genéricos)

Se quiser escutar todas as operações de um recurso, use os hooks de recurso:

Hook genérico customizado

Para casos mais específicos, use onLifecycleEvent para filtrar manualmente por recurso e operação:

Webhook hooks

Enquanto os lifecycle hooks reagem a ações que você realiza via API, os webhook hooks reagem a eventos que acontecem no provedor (ex: cliente pagou, boleto venceu, assinatura foi renovada).

Eventos canônicos

O pagamentos.dev normaliza os eventos de diferentes provedores em nomes canônicos. Os principais eventos disponíveis são:
  • pagamento.realizado
  • pagamento.falhou
  • cobranca.vencida
  • cobranca.cancelada
  • cobranca.disputada
  • assinatura.ativada
  • assinatura.cancelada
  • assinatura.renovada
  • transferencia.envio
  • transferencia.falhou
  • desembolso.envio
  • desembolso.falhou

Usando onWebhookEvent

Registre um handler para um evento específico:

Aliases curinga

Você pode usar padrões curinga para escutar múltiplos eventos de uma vez:
Para mais detalhes sobre como receber e validar webhooks, consulte a página dedicada a Webhooks.

Exemplo prático combinado

Aqui está um exemplo completo que combina lifecycle hooks e webhook hooks para gerenciar o ciclo de vida de uma cobrança:
Neste exemplo:
  1. O lifecycle hook onCobrancaCreated garante que toda cobrança criada seja salva no banco de dados local e que o cliente receba o e-mail com o QR Code.
  2. O webhook hook pagamento.realizado atualiza o status no banco e libera o produto assim que o pagamento é confirmado pelo provedor.
  3. O webhook hook cobranca.vencida trata cobranças não pagas dentro do prazo.

Dicas e boas práticas

  • Hooks são síncronos ou assíncronos: handlers podem retornar void ou Promise<void>. O SDK aguarda a conclusão dos hooks assíncronos.
  • Evite lógica pesada nos hooks: se o processamento for longo, considere enfileirar em um background job para não bloquear a resposta da API ou do webhook.
  • Idempotência em webhooks: provedores podem enviar o mesmo evento múltiplas vezes. Verifique se o evento já foi processado usando o event.id.
  • Tipagem forte: os hooks de webhook são totalmente tipados. Ao usar eventos canônicos, o TypeScript infere corretamente o formato de event.data.