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

Guia de Webhooks

Implementação completa de webhooks

Criar Pagamento

Processar pagamentos