> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aobapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Configure e receba notificações em tempo real da AobaPay

Os **webhooks** permitem que sua aplicação seja notificada automaticamente, em tempo real, sobre eventos relevantes na **AobaPay**.
Isso elimina a necessidade de consultas manuais à API, garantindo mais agilidade e consistência em seus processos.

***

## <Icon icon="mobile" type="solid" />  Gerenciando Webhooks

Você pode gerenciar seus webhooks diretamente pelo dashboard da AobaPay. É possível:

* **Listar** todos os webhooks ativos
* **Criar** novos webhooks conforme sua necessidade
* **Desativar** webhooks que não serão mais utilizados

***

## <Icon icon="key" type="solid" />  Criando Webhooks

<Card title="Boas práticas de segurança" icon="light-emergency-on" horizontal>
  * Utilize um **secret exclusivo** para cada webhook
  * Valide a **assinatura** de todas as requisições recebidas
  * Configure apenas **URLs HTTPS** para maior segurança
  * Implemente **lógica de retry** para lidar com falhas temporárias
</Card>

***

## Como criar seu Webhook

Siga estes passos no dashboard da AobaPay:

<Steps>
  <Step title="Acesse a seção de Webhooks">
    <img src="https://mintcdn.com/cpay/5hGHuA5jSkOskfgD/images/criar-webhook.png?fit=max&auto=format&n=5hGHuA5jSkOskfgD&q=85&s=88ce500142dd4538953b9c02717201f9" className="rounded-lg" alt="Interface da plataforma AobaPay mostrando a seção de webhooks" width="1920" height="752" data-path="images/criar-webhook.png" />

    <Card title="Navegue até a seção Integrar e clique em Webhooks">
      Inicie a configuração de um novo webhook
    </Card>
  </Step>

  <Step title="Inicie a criação">
    <img src="https://mintcdn.com/cpay/5hGHuA5jSkOskfgD/images/salvar-webhook.png?fit=max&auto=format&n=5hGHuA5jSkOskfgD&q=85&s=d42fc3e80b7538cab414c5e2b5c42874" className="rounded-lg" alt="Formulário de criação de webhook" width="1914" height="942" data-path="images/salvar-webhook.png" />

    <Card title="Clique em 'Criar'">
      Você será direcionado ao formulário de configuração
    </Card>
  </Step>

  <Step title="Configure seu Webhook">
    <Card title="Preencha os campos obrigatórios:" horizontal>
      * **Nome** → Identificador do webhook (ex.: "Pagamentos Aprovados")
      * **URL** → Endpoint HTTPS que receberá as notificações
      * **Assinatura** → Secret usado para validação das requisições
      * **Status** → Defina se o webhook ficará ativo ou inativo
    </Card>
  </Step>
</Steps>

***

## <Icon icon="lock" type="solid" /> Protegendo suas requisições

Cada notificação enviada inclui o **secret configurado**, que deve ser validado pela sua aplicação.
Isso garante que apenas chamadas legítimas da AobaPay sejam processadas.

### Exemplo de URL de Webhook

* URL base configurada no dashboard:

```
https://meusite.com/webhook/aobapay 
```

* Chamadas realizadas pela AobaPay incluirão o **header de assinatura** com o secret:

```
signature: seu_secret_configurado
```

***

## Exemplo de Implementação

```javascript theme={null}
// Exemplo de validação de webhook com Node.js/Express
app.post('/webhook/aobapay', (req, res) => {
  const signature = req.headers['signature'];

  if (signature !== process.env.WEBHOOK_SECRET) {
    return res.status(401).json({ error: 'Invalid webhook signature' });
  }

  // Processa o evento recebido
  const event = req.body;
  console.log('Webhook recebido:', event);

  res.status(200).json({ received: true });
});
```

## <Icon icon="bell" type="solid" /> Eventos Suportados

Atualmente, suportamos os seguintes eventos:

### `EVENT:CHARGE_PAID`

Este evento é disparado quando um pagamento é confirmado:

```json theme={null}
{
  "event": "EVENT:CHARGE_PAID",
  "data": {
    "id": "ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "externalID": null,
    "brCode": "00020001021226810014br.gov.bcb.pix255..",
    "brCodeImageUrl": "https://api.aobapay.com/v1/qrcode/ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "amount": 300,
    "endToEndId": "8129812-189asnk1y1-1289aisn-1-2",
    "expiration": "300",
    "fee": 78,
    "expiresAt": "2025-09-16 11:43:30",
    "status": "PAID",
    "customer": {
      "id": "cus_2352001f-43da-4875-b4c0-cc6350d3891e",
      "name": "Brendo Oliveira",
      "document": "123.456.789.01",
      "email": "brendo@aobapay.com",
      "phone": "(15) 99799-1010"
    }
  }
}
```

### `EVENT:CHARGE_EXPIRED`

Este evento é disparado quando uma cobrança é expirada

```json theme={null}
{
  "event": "EVENT:CHARGE_EXPIRED",
  "data": {
    "id": "ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "externalID": null,
    "brCode": "00020001021226810014br.gov.bcb.pix255..",
    "brCodeImageUrl": "https://api.aobapay.com/v1/qrcode/ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "amount": 300,
    "expiration": "300",
    "fee": 78,
    "expiresAt": "2025-09-16 11:43:30",
    "status": "EXPIRED",
    "customer": {
      "id": "cus_2352001f-43da-4875-b4c0-cc6350d3891e",
      "name": "Brendo Oliveira",
      "document": "123.456.789.01",
      "email": "brendo@aobapay.com",
      "phone": "(15) 99799-1010"
    }
  }
}
```

### `EVENT:CHARGE_REFUND`

Este evento é disparado quando uma cobrança é extornada

```json theme={null}
{
  "event": "EVENT:CHARGE_REFUND",
  "data": {
    "id": "ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "externalID": null,
    "brCode": "00020001021226810014br.gov.bcb.pix..",
    "brCodeImageUrl": "https://api.aobapay.com/v1/qrcode/ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "amount": 250,
    "endToEndId": "8129812-189asnk1y1-1289aisn-1-2",
    "expiration": "300",
    "fee": 78,
    "expiresAt": "2025-09-16 11:43:30",
    "status": "REFUNDED",
    "customer": {
      "id": "cus_2352001f-43da-4875-b4c0-cc6350d3891e",
      "name": "Brendo Otavio",
      "document": "490.464.828-55",
      "email": "brendo.dev@outlook.com",
      "phone": "(15) 99787-6029"
    }
  }
}
```

### `EVENT:CASH_OUT`

Este evento é disparado quando uma cobrança é extornada

```json theme={null}
{
  "event": "EVENT:CASH_OUT",
  "data": {
    "id": "wdl_47d56145-870e-4240-83a4-c0199308278b",
    "externalID": "123-SAQUE",
    "amount": 200,
    "comment": "PAGAMENTO",
    "status": "DONE",
    "destination": {
      "name": "BRENDO OTAVIO DE OLIVEIRA SANTOS",
      "bankName": "BCO SANTANDER (BRASIL) S.A.",
      "pikKey": "brendo@aobapay.com",
      "pixKeyType": "EMAIL",
      "account": "00000000000000000",
      "branch": "0000"
    },
    "createdAt": "2025-09-17 15:59:07",
    "updatedAt": "2025-09-17 15:59:10"
  }
}
```

### `EVENT:MED_CREATED`

Este evento é disparado quando uma Disputa/Med é criada

```json theme={null}
{
  "event": "EVENT:MED_CREATED",
  "data": {
    "id": "ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "externalID": null,
    "endToEndId": "8129812-189asnk1y1-1289aisn-1-2",
    "amount": 200,
    "name": "Sr Fulano",
    "email": "vecna@strangerthings.com",
    "status": "OPENED",
    "disputeReason": "Will me enganou!",
    "createdAt": "2025-09-17 15:59:07",
    "updatedAt": "2025-09-17 15:59:10"
  }
}
```

### `EVENT:MED_REJECTED`

Este evento é disparado quando uma Disputa/Med é Rejeitada e Favorável a empresa.

```json theme={null}
{
  "event": "EVENT:MED_REJECTED",
  "data": {
    "id": "ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "externalID": null,
    "endToEndId": "8129812-189asnk1y1-1289aisn-1-2",
    "amount": 200,
    "name": "Sr Fulano",
    "email": "vecna@strangerthings.com",
    "status": "REJECTED",
    "disputeReason": "Will me enganou!",
    "createdAt": "2025-09-17 15:59:07",
    "updatedAt": "2025-09-17 15:59:10"
  }
}
```

### `EVENT:MED_CANCELLED`

Este evento é disparado quando uma Disputa/Med Cancelado

```json theme={null}
{
  "event": "EVENT:MED_CANCELLED",
  "data": {
    "id": "ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "externalID": null,
    "endToEndId": "8129812-189asnk1y1-1289aisn-1-2",
    "amount": 200,
    "name": "Sr Fulano",
    "email": "vecna@strangerthings.com",
    "status": "CANCELLED",
    "disputeReason": "Will me enganou!",
    "createdAt": "2025-09-17 15:59:07",
    "updatedAt": "2025-09-17 15:59:10"
  }
}
```

### `EVENT:MED_ACCEPTED`

Este evento é disparado quando uma Disputa/Med Aceito e Favorável ao cliente

```json theme={null}
{
  "event": "EVENT:MED_ACCEPTED",
  "data": {
    "id": "ch_abb6bc4f-f55d-45ff-8be2-8fdbde0cb8b8",
    "externalID": null,
    "endToEndId": "8129812-189asnk1y1-1289aisn-1-2",
    "amount": 200,
    "name": "Sr Fulano",
    "email": "vecna@strangerthings.com",
    "status": "ACCEPTED",
    "disputeReason": "Will me enganou!",
    "createdAt": "2025-09-17 15:59:07",
    "updatedAt": "2025-09-17 15:59:10"
  }
}
```

<Card title="Nota Importante" icon="info" horizontal>
  * Todos os valores monetários são expressos em centavos
  * O campo `fee` representa a taxa cobrada pela AobaPay
  * O campo `event` identifica o tipo de evento recebido
</Card>

<Card title="Precisa de ajuda?" icon="headset" color="#25c2a0">
  Nossa equipe está disponível para auxiliar na implementação de webhooks. Entre em contato pelo e-mail <Icon icon="envelope" type="solid" /> [contato@aobapay.com](mailto:contato@aobapay.com)
</Card>
