Skip to Content

Webhooks de Pagamento

Os webhooks sao notificacoes automaticas que os gateways de pagamento enviam ao Opero sempre que um evento relevante ocorre — pagamento confirmado, estorno processado, chargeback aberto, etc. O Opero processa esses eventos para atualizar reservas, lancamentos financeiros e status de pagamento em tempo real.


Como funcionam os webhooks?

┌──────────────────┐ ┌──────────────────┐ ┌──────────────┐ │ Gateway (Stripe │────▸│ Opero Payment │────▸│ Modulos │ │ MercadoPago, │ │ Webhook Handler│ │ internos │ │ Cielo, etc.) │ │ │ │ │ │ │ │ 1. Recebe evento │ │ Reservas │ │ Evento ocorreu: │ │ 2. Valida assin. │ │ Financeiro │ │ payment.succeeded│ │ 3. Processa │ │ Notificacoes │ │ │ │ 4. Responde 200 │ │ │ └──────────────────┘ └──────────────────┘ └──────────────┘

Fluxo detalhado

  1. Evento ocorre no gateway (ex.: pagamento confirmado pelo banco)
  2. Gateway envia HTTP POST para a URL de webhook do Opero
  3. Opero valida a assinatura criptografica do evento (previne fraude)
  4. Opero processa o evento e atualiza os dados internos
  5. Opero responde com HTTP 200 (confirmando o recebimento)
  6. Se o Opero nao responder, o gateway tenta novamente (retry)

Eventos suportados

Stripe

EventoDescricaoAcao no Opero
payment_intent.succeededPagamento confirmadoAtualiza reserva para “Pago”, cria lancamento contabil
payment_intent.payment_failedPagamento falhouNotifica hospede e recepcionista
payment_intent.canceledPagamento canceladoReverte status da reserva para “Pendente”
charge.refundedEstorno total processadoCria lancamento reverso, atualiza status
charge.refund.updatedEstorno parcial atualizadoAtualiza valor do estorno no AR
charge.dispute.createdChargeback abertoAlerta gestor, registra no financeiro
charge.dispute.closedChargeback encerradoAtualiza resultado (ganho/perda)
payout.paidPayout liquidado na conta bancariaAtualiza status de liquidacao
payout.failedPayout falhouAlerta gestor financeiro
account.updatedConta conectada atualizadaAtualiza status de onboarding

Outros gateways

Cada gateway tem seus proprios nomes de eventos, mas o Opero os normaliza internamente:

Evento normalizadoDescricao
payment.confirmedPagamento confirmado (qualquer gateway)
payment.failedPagamento falhou
payment.refundedEstorno processado
payment.disputedContestacao aberta
payout.completedLiquidacao na conta bancaria

Validacao de seguranca

Cada gateway assina seus webhooks de forma diferente. O Opero valida a assinatura antes de processar qualquer evento:

GatewayMetodo de validacao
StripeAssinatura HMAC-SHA256 via header Stripe-Signature
MercadoPagoHeader x-signature com HMAC
PagSeguroToken de verificacao no header
CieloIP whitelist + token
AdyenHMAC-SHA256 via header hmac-signature

Seguranca: Se a assinatura nao for valida, o evento e rejeitado com HTTP 401 e registrado no log de seguranca. Isso impede que atacantes enviem eventos falsos.


Retry logic (tentativas de reenvio)

Se o Opero nao responder com HTTP 200 (ou 2xx), o gateway tenta novamente:

Estrategia de retry do Stripe

TentativaIntervalo
1Imediata
25 minutos
330 minutos
42 horas
55 horas
610 horas
724 horas
8+A cada 24 horas por ate 3 dias

Apos todas as tentativas, o evento e marcado como falho no dashboard do Stripe.

Idempotencia

O Opero processa cada evento de forma idempotente: se o mesmo evento for recebido mais de uma vez (por retry), ele nao e processado novamente. Isso e garantido pelo event_id unico de cada webhook.


Monitoramento de webhooks

Dashboard de eventos

Acesse Pagamentos > Webhooks para ver:

ColunaDescricao
Data/horaQuando o evento foi recebido
GatewayDe qual gateway veio
TipoTipo do evento (payment.succeeded, etc.)
StatusProcessado, falhou, ignorado
ReservaReserva associada (se aplicavel)
TentativaNumero da tentativa (1 = primeira)
Tempo de processamentoQuanto tempo o Opero levou para processar

Alertas automaticos

O sistema envia alertas quando:

  • Taxa de falha alta: Mais de 5% dos webhooks falharam nas ultimas 24h
  • Atraso de processamento: Webhooks levando mais de 30 segundos para processar
  • Evento critico falhou: Chargeback, estorno ou payout falharam

Troubleshooting

Webhook nao chegou

Causa possivelSolucao
URL de webhook incorretaVerifique a URL em Configuracoes > Pagamentos > Webhooks
Firewall bloqueandoLibere os IPs do gateway no firewall
SSL expiradoRenove o certificado SSL do servidor
Gateway em sandboxWebhooks de sandbox vao para URL de sandbox

Webhook chegou mas falhou

Causa possivelSolucao
Assinatura invalidaVerifique se o webhook secret esta correto
Evento desconhecidoVerifique se o tipo de evento e suportado
Erro internoConsulte os logs do servidor para detalhes
Timeout de processamentoOtimize o handler (deve responder em < 5s)

Reprocessar um webhook

Se um webhook falhou e voce corrigiu o problema:

  1. Acesse Pagamentos > Webhooks > Historico
  2. Localize o evento falho
  3. Clique em “Reprocessar”
  4. O sistema tenta processar o evento novamente

Boas praticas

  1. Monitore diariamente — Webhooks sao o coracao da integracao; falhas silenciosas geram inconsistencias
  2. Configure alertas — Nao dependa de verificacao manual
  3. Mantenha secrets atualizados — Ao rotacionar chaves no gateway, atualize no Opero imediatamente
  4. Teste em sandbox primeiro — Simule eventos antes de ir para producao
  5. Mantenha logs por 90 dias — Para auditoria e troubleshooting de chargebacks
Last updated on