Skip to main content

Visão Geral

A API EconPay usa dois níveis de autenticação:
  1. Token JWT - Para autenticar o usuário/sistema que faz a requisição
  2. Access Token - Para identificar o estabelecimento/empresa que processará o pagamento

Token JWT (Bearer Token)

O Token JWT é obtido através do endpoint de login e deve ser incluído no header Authorization de todas as requisições.

Como Obter o Token

cURL
curl --request POST \
  --url https://api.econpay.com.br/auth \
  --header 'Content-Type: application/json' \
  --data '{
    "email": "[email protected]",
    "password": "sua-senha"
  }'

Resposta

{
  "response": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjQwMTIzNDU2LCJleHAiOjE2NDAxMjcwNTZ9.abc123...",
    "user": {
      "id": 1,
      "name": "Seu Nome",
      "email": "[email protected]",
      "role": "admin"
    }
  }
}

Usando o Token

Inclua o token no header Authorization com o prefixo Bearer:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Expiração: O token JWT expira em 1 hora. Após expirar, você precisará fazer login novamente.

Access Token

O access_token identifica o estabelecimento que processará o pagamento. Ele é configurado no dashboard e deve ser incluído no body das requisições de pagamento.

Onde Encontrar

  1. Acesse o Dashboard EconPay
  2. Vá em Configurações > API
  3. Copie seu access_token

Como Usar

{
  "access_token": "e959e19849384209adb791a232a8d3e767b5e7e3",
  "customer": { ... },
  "payment": { ... }
}
O access_token não expira, mas pode ser regenerado no dashboard se necessário.

Exemplo Completo

JavaScript
// 1. Fazer login e obter JWT
const loginResponse = await fetch('https://api.econpay.com.br/auth', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    email: '[email protected]',
    password: 'sua-senha'
  })
});

const { response } = await loginResponse.json();
const jwtToken = response.token;

// 2. Usar JWT + Access Token para criar pagamento
const paymentResponse = await fetch('https://api.econpay.com.br/payments/order', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${jwtToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    access_token: 'SEU_ACCESS_TOKEN_AQUI',
    customer: { ... },
    payment: { ... }
  })
});

Segurança

  • Nunca exponha tokens em código frontend
  • Use variáveis de ambiente
  • Não commite tokens no Git
  • Regenere tokens se houver suspeita de vazamento
Como o JWT expira em 1 hora, implemente lógica de renovação:
async function getValidToken() {
  const token = localStorage.getItem('jwt_token');
  const expiry = localStorage.getItem('jwt_expiry');
  
  if (!token || Date.now() > expiry) {
    // Token expirado, fazer login novamente
    const newToken = await login();
    localStorage.setItem('jwt_token', newToken);
    localStorage.setItem('jwt_expiry', Date.now() + 3600000); // 1 hora
    return newToken;
  }
  
  return token;
}
Use access_tokens diferentes para produção e sandbox:
const ACCESS_TOKEN = process.env.NODE_ENV === 'production'
  ? process.env.PROD_ACCESS_TOKEN
  : process.env.SANDBOX_ACCESS_TOKEN;

Códigos de Erro

CódigoDescriçãoSolução
401Token JWT inválido ou expiradoFaça login novamente
403Access token inválidoVerifique o access_token no dashboard
403Permissões insuficientesVerifique as permissões do usuário

Próximos Passos