Configurar webhooks

Vamos mostrar-lhe como usar os nossos webhooks para receber notificações em tempo real.



Na Pomelo, a gente usa webhooks para informar você sobre os principais eventos que afectam a sua operação:

Sempre que esses eventos ocorrem, fazemos uma solicitação POST para um endpoint HTTPS no seu servidor, usando um objeto JSON com as informações.

Como configurar um webhook

Etapa 1: Criar seu endpoint

Você deve criar no seu servidor um endpoint que atenda a estes requisitos:

  • Receber tráfego por HTTPS
  • Receber um objeto JSON no corpo da solicitação

Etapa 2: Reconhecer nossos IPs

A gente sempre se comunica desde IPs próprios e específicos. Recomendamos que você aceite apenas as solicitações de um dos nossos IPs e rejeite qualquer outro.

Stage:
34.226.254.178
44.198.3.59
34.223.185.46
100.20.205.117


Prod/Sandbox:
34.206.159.176
52.0.20.124
35.84.78.117
52.43.46.111

Etapa 3: Validar nossa assinatura

Como medida de segurança, assinamos todas as solicitações que enviamos usando hmac-sha256, assim você pode ter a certeza de que são nossas. Durante o processo de onboarding, a gente vai compartilhar com você uma api-key e uma api-secret, conforme é descrito na Troca de chaves.

Em cada solicitação, enviamos headers HTTP que irão permitir que você verifique se a assinatura está correta:

  • x-api-key: permitirá que você identifique qual api-secret usar (no caso que vários pares de api-key e api-secret tenham sido configurados).

  • x-signature: inclui a assinatura digital (body + timestamp + endpoint) que você terá de validar para garantir a integridade da solicitação. Nós geramos essa assinatura usando o api-secret que compartilhamos com você anteriormente. Se ela não corresponder, você terá de rejeitar a solicitação.

  • x-timestamp : inclui o horário em que a solicitação foi assinada no formato unix-epoch para que você gere novamente a assinatura e confirme se ela é válida. No caso de Autorizar transacção, você também vai conseguir verificar se a assinatura ainda não expirou (elas expiram após 1 minuto).

  • x-endpoint: é o endpoint que utilizamos para gerar a assinatura e para o qual a solicitação foi criada. É necessário utilizar este header para gerar novamente a assinatura a ser validada, compará-lo com o endpoint do seu serviço e verificar se eles correspondem.

Abaixo está um exemplo de como verificar a validade da assinatura:


Ver outros exemplos

Passo 4: Assinatura de resposta (somente para autorizar transações)

Para autorizar transações, também solicitaremos que você assine a resposta.

Os headers HTTP que você deve enviar são:

  • x-api-key: esse header permitirá identificar qual api-secret você deve usar no caso de múltiplos pares de api-key e api-secret estarem configurados.

  • x-signature: esse header contém a assinatura digital (body + timestamp + endpoint) que você deverá verificar para garantir a integridade do request. Se a assinatura não coincidir, você deverá rejeitar o pedido.

  • x-timestamp: esse header contém o momento em que o pedido foi assinado no formato unix-epoch, para que você possa verificar se a assinatura expirou.

  • x-endpoint: o endpoint ao qual o pedido foi feito e que foi usado para gerar a assinatura. Use esse header para regenerar a assinatura a ser validada, compará-lo com o endpoint do seu serviço e verificar se coincidem.

Lembre-se de que vamos validar a assinatura e rejeitar a transação se a assinatura não coincidir ou tiver expirado.

Exemplos de implementação de validação e assinatura de pedidos

Em nosso repositório, você encontrará exemplos de implementação do algoritmo de geração e validação de assinatura em várias linguagens. Ver repositório

Passo 4: Resposta para casos que não precisam de assinatura

Esperamos uma resposta do tipo 2XX para garantir que você recebeu a notificação. Caso contrário, tentaremos novamente.

O conteúdo desta documentação foi útil?