# Webhook

## Visão geral

A integração via **Webhook** da Wiapy permite que você receba notificações em tempo real sempre que uma compra é realizada. Ao configurar a URL de destino, nossa plataforma fará uma requisição **HTTP POST** enviando um payload em formato JSON contendo informações da transação.

### Autenticação

O token que você cadastrar será enviado como um header `Authorization` em cada requisição.

```javascript
authorization: seu_token_aqui
```

### Exemplo de Payload Enviado (Pagamento)

<pre><code>
<strong>{
</strong>    "payment": {
        "id": "680bb49dcc58d1620569cb2e",
        "status": "paid",
        "amount": 1770,
        "payment_method": "pix",
        "type": "payment"
        "installments": 0,
        "installment_interest_rate": 0,
        "credit_card_interest_fee": 0,
        "pix_boleto": {
            "code": "copia-cola-pix-ou-codigo-barra-boleto",
            "url": "https://wiapy.com/url-do-pix-ou-boleto"
        },
        "fee": 190,
        "dt_create": "2025-04-25T16:13:17.284Z",
        "dt_update": "2025-04-25T16:13:17.284Z"
    },
    "subscription": {},
    "customer": {
        "id": "680bb49bcc58d1620569cb24",
        "name": "Thay",
        "email": "thay@wiapy.com",
        "mobile_phone": "(11) 99999-9999",
        "document": "123.456.678.90"
    },
    "checkout": {
        "id": "66e0799f17f298ff3c60f345",
        "title": "Produto teste",
        "amount": 990,
        "orderbump": [
            {
                "id": "67b9f0f5f777cbea4ba9cbfa",
                "title": "Orderbump teste",
                "amount": 780
            }
        ]
    },
    "products": [
        {
            "id": "66df9e14dbebe565ee587fc3",
            "title": "Nome do meu produto 1",
            "type": "Curso Online",
            "itens": [
                {
                    "title": "Acesso via Área de Membros",
                    "url": "https://wiapy.com/login"
                }
            ]
        },
        {
            "id": "67ddba018866dea35e314915",
            "title": "Nome do meu Produto 2",
            "type": "E-book",
            "itens": [
                {
                    "title": "Arquivo 01",
                    "url": "URL DO ARQUIVO"
                },
                {
                    "title": "Arquivo 02",
                    "url": "URL DO ARQUIVO"
                }
            ]
        },
        {
            "id": "67ddba018866dea35e314915",
            "title": "Nome do meu Produto 3",
            "type": "Mentoria",
            "itens": [
                {
                    "title": "Acesso via Área de Membros",
                    "url": "https://wiapy.com/login"
                }
            ]
        },
        {
            "id": "67ddba018866dea35e314915",
            "title": "Nome do meu Produto 4",
            "type": "Externo",
            "itens": []
        }
    ],
    "tracking": {
        "ip": null,
        "useragent": null,
        "fbc": null,
        "fbp": null,
        "utm_source": null,
        "utm_medium": null,
        "utm_campaign": null,
        "utm_content": null,
        "utm_term": null
    }
}
</code></pre>

### Exemplo de Payload Enviado (Carrinho abandonado)

<pre><code>
<strong>{
</strong>    "payment": null,
    "subscription": null,
    "customer": {
        "id": null,
        "name": "Thay",
        "email": "thay@wiapy.com",
        "mobile_phone": "(11) 99999-9999",
        "document": null
    },
    "checkout": {
        "id": "66e0799f17f298ff3c60f345",
        "title": "Produto teste",
        "amount": 990,
        "orderbump": null
    },
    "products": null,
    "tracking": null
}
</code></pre>

> **Observação:** Todos os valores financeiros estão representados em **centavos**.

### Detalhamento dos Campos

#### `payment.status`

| Valor                  | Descrição                                                                                  |
| ---------------------- | ------------------------------------------------------------------------------------------ |
| paid                   | Pagamento aprovado                                                                         |
| unpaid                 | Não pago / Aguardando Pagamento (o pix / boleto ao ser criado ele é gerado com esse status |
| credit\_card\_declined | Cartão de crédito recusado                                                                 |
| refunded               | Pagamento estornado                                                                        |
| chargedback            | Pagamento sofreu chargeback                                                                |

#### `payment.payment_method`

| Valor        | Descrição                                             |
| ------------ | ----------------------------------------------------- |
| pix          | Método de pagamento escolhido foi o pix               |
| credit\_card | Método de pagamento escolhido foi o cartão de crédito |
| boleto       | Método de pagamento escolhido foi o boleto            |

#### `payment.type`

| Valor        | Descrição                                                |
| ------------ | -------------------------------------------------------- |
| payment      | Pagamento avulso (objeto `subscription` vazio `{}`)      |
| subscription | Assinatura recorrente (objeto `subscription` preenchido) |

### Estrutura de `subscription` (se aplicável)

Quando o pagamento for uma **assinatura**, o campo `subscription` será preenchido com:

```
{
    "id": "16e0799f17f298ff3c60f3e7",
    "status": "paid",
    "interval": "month",
    "dt_start": "2025-04-25T16:13:17.284Z",
    "dt_end": "2025-05-25T16:13:17.284Z",
    "active": true,
    "next_billing": "2025-05-25T16:13:17.284Z",
}
```

### Estrutura de `products`

O array `products` lista todos os produtos liberados no checkout, inclusive orderbumps adquiridos.

#### `products.type`

| Valor        | Descrição                                                                                    |
| ------------ | -------------------------------------------------------------------------------------------- |
| E-book       | É quando o produto cadastrado é do tipo ebook, em itens enviamos os arquivos com nome e url. |
| Curso Online | É quando o acesso é um curso com vídeos para assistir pela área de membros.                  |
| Mentoria     | É quando a entrega é uma mentoria e pode haver arquivos na área de membros.                  |
| Externo      | É quando o acesso é liberado externo e não exige nenhuma intereção da Wiapy.                 |

### Estrutura do `tracking`

O objecto `tracking` contem todos os parametros de trackemento.

| Campo         | Descrição                                                                                                                                                   |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ip            | Endereço IP do usuário que acessou, usado para identificar a origem da requisição (localização aproximada, rede etc.).                                      |
| useragent     | String que identifica o navegador, sistema operacional e dispositivo que o usuário usou para acessar.                                                       |
| fbc           | Parâmetro do **Facebook Click ID**. É um identificador que o Facebook gera quando o usuário clica em um anúncio, usado para rastrear a origem da conversão. |
| fbp           | Parâmetro do **Facebook Browser ID**. Identificador único armazenado no navegador do usuário pelo Pixel do Facebook para rastreamento de sessões.           |
| utm\_source   | Origem da campanha (ex: google, facebook, newsletter).                                                                                                      |
| utm\_medium   | Meio da campanha (ex: cpc, email, social, banner).                                                                                                          |
| utm\_campaign | Nome da campanha de marketing (ex: promocao\_black\_friday, lancamento\_curso).                                                                             |
| utm\_content  | Usado para diferenciar conteúdos ou links dentro da mesma campanha (ex: botao\_azul vs botao\_vermelho).                                                    |
| utm\_term     | Usado para registrar a **palavra-chave** em campanhas pagas (Google Ads e Facebook, por exemplo).                                                           |

## Considerações Técnicas

* **Requisições** são enviadas via **POST**.
* **Formato dos dados**: `application/json`.
* **Header de Autenticação**: `Authorization: seu_token`.
* **Valores monetários** sempre em centavos (ex: R$ 17,70 → `1770`).
