## Arquitetura do manipulador de webhooks 
Siga essas diretrizes:
1. Aceite o pedido `POST` com o corpo e os cabeçalhos como estão, **sem
modificações**.
2. [Verifique a assinatura do webhook](/pt/webhooks/section/webhook-listener/generation-of-signature) e retorne o código de status apropriado:
  * `4xx` — se as assinaturas não coincidirem;
  * `2xx` — em casos de sucesso. Recomendamos devolver `204 Sem Conteúdo` **antes**
de executar a lógica principal de negócios. `200 OK` também é aceitável.
3. Passe a carga para um trabalho assíncrono ou adicione na fila de processamento
adicional.
4. Implemente
[idempotência](https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning). Você deve garantir que seu sistema consiga lidar com o [recebimento do
mesmo webhook mais de uma vez](/pt/webhooks/section/webhook-listener/sending-responses-to-webhook).

**Exemplo de fluxo:**

```http
HTTP POST /webhooks/xsolla
  read raw_body, headers
  if !verify_signature(raw_body, headers['authorization']):
     return 400 {"error":{"code":"INVALID_SIGNATURE","message":"Invalid signature"}}
  enqueue(raw_body)
  return 204  # or 200
```
