Skip to main content
Depois que um endpoint de webhook estiver configurado, você terá acesso à página de visão geral das entregas. Aqui você pode:
  • Ver entregas históricas
  • Revisar a carga útil enviada
  • Acionar uma nova entrega em caso de falha
Agora, vamos integrar nossa rota de endpoint para validar, analisar e lidar com webhooks recebidos.

Validar e analisar webhooks

Agora você precisa configurar um manipulador de rota para o endpoint registrado no Norbaas para receber, validar e analisar os webhooks antes de tratá-los de acordo com suas necessidades.

Usando nossos SDKs

Nossos SDKs em TypeScript e Python vêm com uma função auxiliar integrada para facilitar a validação e análise do evento de webhook – veja os exemplos completos abaixo.
import express, { Request, Response } from 'express'
import { validateEvent, WebhookVerificationError } from '@norbaas-sh/sdk/webhooks'

const app = express()

app.post(
'/webhook',
express.raw({ type: 'application/json' }),
(req: Request, res: Response) => {
try {
const event = validateEvent(
req.body,
req.headers,
process.env['NORBAAS_WEBHOOK_SECRET'] ?? '',
)

      // Processe o evento

      res.status(202).send('')
    } catch (error) {
      if (error instanceof WebhookVerificationError) {
        res.status(403).send('')
      }
      throw error
    }

},
)

Ambos os exemplos acima esperam que uma variável de ambiente chamada NORBAAS_WEBHOOK_SECRET seja definida com o segredo que você configurou durante a criação do endpoint.

Validação personalizada

Nós seguimos o padrão Standard Webhooks que oferece diversas bibliotecas em várias linguagens para facilitar a validação de assinaturas. Ou você pode seguir a especificação caso prefira implementar sua própria solução.
Observação: O segredo precisa estar codificado em base64Um erro comum com essa especificação é que o segredo do webhook deve estar codificado em base64. Você não precisa se preocupar com isso ao usar nosso SDK, pois ele cuida desses detalhes de implementação, oferecendo uma melhor experiência para desenvolvedores.

Tratamento de Falhas

Tentativas de Reentrega

Se ocorrer um erro ao tentar alcançar seu endpoint — seja um erro de rede temporário ou um bug — tentaremos reenviar o evento até 10 vezes com uma estratégia de exponential backoff.

Tempo Limite de Entrega

As requisições feitas ao seu endpoint têm um tempo limite de 20 segundos. Após esse tempo, uma nova tentativa será feita após um atraso, como explicado acima. No entanto, recomendamos fortemente que você otimize sua rota de endpoint para ser rápida. Uma boa prática é fazer com que o manipulador de webhook coloque uma tarefa em uma fila para ser executada por um worker em segundo plano, processando a carga útil de forma assíncrona.

Solução de Problemas

Não está recebendo webhooks

Está vendo entregas no Norbaas, mas não está recebendo nada no seu lado? Abaixo estão algumas técnicas comuns para resolver o problema, dependendo do código de erro informado. Geral Inicie o ngrok ou serviço semelhante Certifique-se de que você iniciou o ngrok ou qualquer serviço de tunelamento que esteja usando durante o desenvolvimento local. Adicione logs excessivos Exemplo: console.log('webhook.handler_called'), console.log('webhook.validate_signature'), console.log('webhook.signature_validated') etc. Assim você pode confirmar facilmente se o manipulador foi chamado e até onde ele chega antes de qualquer problema ocorrer. HTTP 404
  • Tente usar curl -vvv -X POST <cole-e-cole-a-URL-do-endpoint> no terminal para confirmar se a rota existe e identificar qualquer problema ao longo do caminho.
  • Tente adicionar uma barra (/) ao final da URL no Norbaas. Muitas vezes /foo é resolvido como /foo/ por alguns frameworks.
HTTP 403
  • Está usando middleware para autorização? Certifique-se de excluir a rota do webhook, já que ela precisa ser publicamente acessível.
  • Está usando Cloudflare? Verifique os logs do firewall para ver se nossos pedidos estão sendo bloqueados e configure uma regra personalizada no WAF para aceitar requisições vindas do Norbaas.

Exceções de assinatura inválida

Está implementando sua própria lógica de validação de webhook? Certifique-se de codificar em base64 o segredo que você configurou no Norbaas antes de gerar a assinatura para validação.