Skip to main content

Visão Geral

Endpoints para gerenciar as configurações de webhooks dos estabelecimentos.

POST /webhooks - Cadastrar Webhook

Cadastra uma nova URL de webhook para receber notificações.

Request

cURL
curl --request POST \
  --url https://api.econpay.com.br/webhooks \
  --header 'Authorization: Bearer SEU_TOKEN_JWT' \
  --header 'Content-Type: application/json' \
  --data '{
    "url": "https://seusite.com.br/webhooks/econpay",
    "company_id": 1,
    "events": ["payment.approved", "payment.failed", "payment.refunded"]
  }'

Response

{
  "id": 1,
  "url": "https://seusite.com.br/webhooks/econpay",
  "company_id": 1,
  "active": true,
  "created_at": "2024-01-22T10:00:00Z"
}

GET /webhooks - Listar Webhooks

Lista todos os webhooks cadastrados.

Request

cURL
curl --request GET \
  --url https://api.econpay.com.br/webhooks \
  --header 'Authorization: Bearer SEU_TOKEN_JWT'

Response

{
  "data": [
    {
      "id": 1,
      "url": "https://seusite.com.br/webhooks/econpay",
      "company_id": 1,
      "active": true,
      "created_at": "2024-01-22T10:00:00Z"
    }
  ]
}

GET /webhooks/:id - Buscar Webhook

Busca um webhook específico por ID.

Request

cURL
curl --request GET \
  --url https://api.econpay.com.br/webhooks/1 \
  --header 'Authorization: Bearer SEU_TOKEN_JWT'

Response

{
  "id": 1,
  "url": "https://seusite.com.br/webhooks/econpay",
  "company_id": 1,
  "active": true,
  "events": ["payment.approved", "payment.failed"],
  "created_at": "2024-01-22T10:00:00Z"
}

PATCH /webhooks/:id - Atualizar Webhook

Atualiza a configuração de um webhook.

Request

cURL
curl --request PATCH \
  --url https://api.econpay.com.br/webhooks/1 \
  --header 'Authorization: Bearer SEU_TOKEN_JWT' \
  --header 'Content-Type: application/json' \
  --data '{
    "url": "https://novaurl.com.br/webhooks",
    "active": true
  }'

Response

{
  "id": 1,
  "url": "https://novaurl.com.br/webhooks",
  "company_id": 1,
  "active": true,
  "updated_at": "2024-01-22T11:00:00Z"
}

DELETE /webhooks/:id - Deletar Webhook

Remove um webhook cadastrado.

Request

cURL
curl --request DELETE \
  --url https://api.econpay.com.br/webhooks/1 \
  --header 'Authorization: Bearer SEU_TOKEN_JWT'

Response

{
  "message": "Webhook deletado com sucesso"
}

POST /webhooks/:paymentId/retry - Reenviar Webhook

Reenvia o webhook de uma transação específica.

Request

cURL
curl --request POST \
  --url https://api.econpay.com.br/webhooks/123/retry \
  --header 'Authorization: Bearer SEU_TOKEN_JWT'

Response

{
  "message": "Webhook sent"
}

Exemplos em JavaScript

Cadastrar Webhook

async function createWebhook(url, companyId) {
  const response = await fetch('https://api.econpay.com.br/webhooks', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      url,
      company_id: companyId,
      events: ['payment.approved', 'payment.failed', 'payment.refunded']
    })
  });
  
  return await response.json();
}

const webhook = await createWebhook('https://seusite.com.br/webhooks', 1);
console.log('Webhook cadastrado:', webhook.id);

Listar Webhooks

async function listWebhooks() {
  const response = await fetch('https://api.econpay.com.br/webhooks', {
    headers: { 'Authorization': `Bearer ${token}` }
  });
  
  const { data } = await response.json();
  return data;
}

const webhooks = await listWebhooks();
webhooks.forEach(wh => {
  console.log(`${wh.id}: ${wh.url} - ${wh.active ? 'Ativo' : 'Inativo'}`);
});

Atualizar Webhook

async function updateWebhook(id, updates) {
  const response = await fetch(`https://api.econpay.com.br/webhooks/${id}`, {
    method: 'PATCH',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(updates)
  });
  
  return await response.json();
}

await updateWebhook(1, { 
  url: 'https://novaurl.com.br/webhooks',
  active: true 
});

Deletar Webhook

async function deleteWebhook(id) {
  const response = await fetch(`https://api.econpay.com.br/webhooks/${id}`, {
    method: 'DELETE',
    headers: { 'Authorization': `Bearer ${token}` }
  });
  
  return await response.json();
}

await deleteWebhook(1);
console.log('Webhook deletado');

Reenviar Webhook

async function retryWebhook(paymentId) {
  const response = await fetch(
    `https://api.econpay.com.br/webhooks/${paymentId}/retry`,
    {
      method: 'POST',
      headers: { 'Authorization': `Bearer ${token}` }
    }
  );
  
  return await response.json();
}

await retryWebhook(123);
console.log('Webhook reenviado');

Boas Práticas

Sempre use URLs HTTPS para receber webhooks. URLs HTTP não são seguras e podem ser rejeitadas.
Sempre valide que o webhook veio realmente da EconPay consultando a API.
Retorne status 200 em menos de 5 segundos. Processe tarefas pesadas de forma assíncrona.
Webhooks podem ser enviados mais de uma vez. Implemente lógica para evitar processamento duplicado.

Próximos Passos