Webhooks de Comerciante
Webhooks de Comerciante
A IZI Pay pode notificar o seu sistema quando um pagamento por referência é pago com sucesso. A notificação é enviada como um pedido HTTP POST para o URL de webhook configurado na sua conta de comerciante.
Para ativar este serviço, forneça à IZI Pay o URL completo de callback hospedado pelo seu sistema e um Access-Key escolhido ou gerado por si. A IZI Pay irá incluir esse mesmo Access-Key em todos os pedidos de notificação de pagamento PPR.
Os webhooks são opcionais. Se não existir um URL de webhook configurado para a sua conta de comerciante, os pagamentos continuam a ser processados normalmente na IZI Pay.
Pedido
A IZI Pay envia a notificação para o URL configurado usando POST.
http
Apenas o cabeçalho Access-Key é usado para este webhook. A IZI Pay não envia cabeçalho de tipo de evento nem cabeçalho de assinatura nos webhooks de pagamento por referência.
O seu endpoint deve validar o Access-Key antes de processar o pedido. A chave não é gerada pela IZI Pay; é o valor que o comerciante fornece à IZI Pay durante a configuração do webhook.
Corpo do Pedido
O corpo do pedido é JSON. Os nomes dos campos são fixos e sensíveis a maiúsculas/minúsculas.
json
| Campo | Tipo | Descrição |
|---|---|---|
idTransacao | string | Identificador da transação. |
numLogSistema | string | Número de log do sistema associado à notificação de pagamento. |
idLogSistema | string | Identificador de período/log do sistema. |
dataTransaccaoCliente | string | Data e hora em que o pagamento do cliente foi registado. |
montantePago | number | Montante pago pelo cliente. |
tipoTerminal | string | Tipo de terminal usado no pagamento. |
iIdentTerminal | string | Identificador do terminal. |
localidadeTerminal | string | Localidade do terminal. |
refPagamento | string | Referência de pagamento paga pelo cliente. |
nib | string/null | NIB da conta debitada, quando disponível. |
banco | string/null | Nome do banco, quando disponível. |
Id | string | Identificador único da notificação. Use este valor para idempotência. |
Resposta Esperada
O seu endpoint deve devolver JSON válido.
json
| Campo | Tipo | Descrição |
|---|---|---|
Success | boolean | Devolva true quando a notificação for processada com sucesso. |
Obs | string | Nota curta sobre o processamento. |
Id | string | O identificador interno do pagamento no seu sistema, quando disponível. |
Notificações Duplicadas
O seu endpoint deve ser idempotente. A mesma notificação pode ser enviada mais de uma vez, por exemplo quando o seu endpoint demora demasiado a responder ou devolve uma resposta inválida.
Use o campo Id do pedido como chave principal de idempotência. Se o mesmo Id já tiver sido processado com sucesso, não crie um segundo registo de pagamento. Devolva Success: true novamente.
json
Nunca use apenas a referência de pagamento para detetar duplicados. Uma referência de cobrança pode receber mais de um pagamento.
Resultado da Entrega
A IZI Pay considera o webhook entregue apenas quando o seu endpoint devolve:
- código HTTP
2xx; - JSON válido;
Success: true.
A entrega é considerada falhada quando o endpoint devolve um estado diferente de 2xx, excede o tempo limite, devolve JSON inválido, omite Success ou devolve Success: false.
Fluxo Recomendado
- Receba o pedido
POST. - Valide o cabeçalho
Access-Key. - Verifique se a notificação
Idjá foi processada. - Registe ou atualize o pagamento no seu sistema.
- Devolva
Success: true.