# Callback

Após a finalização do pedido, será retornado através do callback\_url (cadastrado na integração da Api dentro da Dashboard Payhow), dados referentes ao pedido finalizado. Sendo que o body pode altera se for um create (primeiro retorno de callback do pedido) ou update (quando há uma atualização no status de pagamento)

### Descrição do body JSON do Callback (Create) <a href="#descricao-do-body-json-da-requisicao" id="descricao-do-body-json-da-requisicao"></a>

| Chave                  | Tipo   | Descrição                                                                                                                |
| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------ |
| order\_status          | string | create (primeiro callback referente ao pedido)                                                                           |
| order\_id              | string | É o nº do pedido enviado no parametro opcional "order\_id" do carrinho, caso não sido enviado, será retornado como null. |
| payhow\_order\_id      | int    | Número de pedido criado dentro da Payhow                                                                                 |
| payment\_method        | string | forma de pagamento podendo ser : wallet*app (qr\_code), credit*card\_checkout (cartão de crédito) ou boleto              |
| payment\_method\_title | string | descrição da forma de pagamento                                                                                          |
| status\_payment        | string | status do pagamento: (processing, paid, refunded, cancelled)                                                             |
| user\_id               | string | id do usuário, que foi enviado no endpoint do carrinho.                                                                  |

#### Billing

| Chave       | Tipo   | Descrlção                           |
| ----------- | ------ | ----------------------------------- |
| first\_name | string | Nome                                |
| last\_name  | string | Sobrenome                           |
| address     | string | Endereço                            |
| complement  | string | Complemento                         |
| city        | string | Cidade                              |
| state       | string | Estado                              |
| postcode    | string | CEP                                 |
| country     | string | País                                |
| email       | string | email recebido pela API do carrinho |
| phone       | string | Telefone                            |

<br>

#### Shipping

| Chave                   | Tipo   | Descrição                                                                                            |
| ----------------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| method\_title           | string | Método de envio escolhido                                                                            |
| method\_id              | string | id do método de envio                                                                                |
| melhor\_envio\_protocol | string | caso tenha sido cotado pelo melhor envio, retornará o protocolo, se não, voltará null.               |
| melhor\_envio\_tracking | string | caso tenha sido cotado pelo melhor envio, retornará o código de monitoramento, se não, voltará null. |
| total                   | string | valor total do frete.                                                                                |
| first\_name             | string | Nome                                                                                                 |
| last\_name              | string | Sobrenome                                                                                            |
| company                 | string | empresa (apenas se for enviado para PJ, caso contrário virá null).                                   |
| address                 | string | Endereço                                                                                             |
| complement              | string | complemento                                                                                          |
| city                    | string | Cidade                                                                                               |
| state                   | string | Estado                                                                                               |
| postcode                | string | CEP                                                                                                  |
| country                 | string | País                                                                                                 |

#### Items

| Chave    | Tipo   | Descrição                                           |
| -------- | ------ | --------------------------------------------------- |
| id       | int    | id do produto fornecido na API de envio do carrinho |
| name     | string | Nome do produto                                     |
| price    | string | Preço unitário do produto.                          |
| quantity | string | Quantidade comprada.                                |
| total    | string | Valor total da compra do produto.                   |

### Exemplo de Callback (Create)

```json
{
    "order_status": "create",
    "order_id" : "1029",
    "payhow_order_id": 1649,
    "payment_method": "wallet_app",
    "payment_method_title": "Pagamento via aplicativo",
    "status_payment": "processing",
    "user_id": "1",
    "billing": {
        "first_name": "João",
        "last_name": "da Silva",
        "address": "Avenida são sebastião",
        "complement": "Piso 3 loja 7",
        "city": "Ibiúna",
        "state": "SP",
        "postcode": "18180-000",
        "country": "BR",
        "email": "comprador@sandbox.pagseguro.com.br",
        "phone": "15999999910"
    },
    "shipping": {
        "method_title": "Correios - PAC",
        "method_id": "Correios",
        "melhor_envio_protocol": null,
        "melhor_envio_tracking": null,
        "total": "24.30",
        "first_name": "João",
        "last_name": "da Silva",
        "company": "",
        "address": "Avenida são sebastião",
        "complement": "Piso 3 loja 7",
        "city": "Ibiúna",
        "state": "SP",
        "postcode": "18180-000",
        "country": "BR"
    },
    "items": [
        {
            "id": 495,
            "name": "Dying Light",
            "price": "1.50",
            "quantity": 1,
            "total": "1.50"
        },
        {
            "id": 495,
            "name": "Dying Light",
            "price": "1.50",
            "quantity": 1,
            "total": "1.50"
        }
    ]
}
```

### Descrição do body JSON do Callback (Update) <a href="#descricao-do-body-json-da-requisicao" id="descricao-do-body-json-da-requisicao"></a>

| Chave             | Tipo   | Descrição                                                                                        |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------ |
| order\_status     | string | Retorna update, indicando que é uma atualização de status de pagamento de um pedido já realizado |
| order\_id         | string | retornar caso tenha sido previamente enviado na criação do carrinho                              |
| payhow\_order\_id | int    | id criado pela payhow de referência para criação e atualização de pedido                         |
| status\_payment   | string | volta o status de pagamento atualizado.                                                          |

## Exemplo de Callback (Update)

```json
{
    "order_status": "create",
    "order_id" : "1029",
    "payhow_order_id": 1649,
    "status_payment": "processing"    
}
```

## Observações

O callback é um POST, por isso é esperado que seja retornado um true, para confirmarmos que os dados foram recebidos.
