EYTdocs

Autenticación

Descripción general

La API PIX Bacen utiliza el mismo sistema de autenticación que la API estandar de EYT. Todas las solicitudes deben incluir un token Bearer valido en el header Authorization.

La autenticación es identica a la de la API estandar. Si ya tiene credenciales, puede usarlas directamente.

Obtener un Token

Endpoint

POST /api/auth/token

El certificado X.509 debe enviarse URL-encoded en el header X-SSL-Client-Cert. El sistema valida el fingerprint SHA256 del certificado contra los registros vinculados a la cuenta.

Solicitud

curl -X POST https://api.gateway.eyt.com.br/api/auth/token \
  -H "Content-Type: application/json" \
  -H "X-SSL-Client-Cert: -----BEGIN%20CERTIFICATE-----%0AMIIB..." \
  -d '{
    "clientId": "your-client-id",
    "clientSecret": "your-client-secret"
  }'
const fs = require('fs');

const certificate = fs.readFileSync('./client-cert.pem', 'utf8');
const encodedCert = encodeURIComponent(certificate);

const response = await fetch('https://api.gateway.eyt.com.br/api/auth/token', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-SSL-Client-Cert': encodedCert,
  },
  body: JSON.stringify({
    clientId: 'your-client-id',
    clientSecret: 'your-client-secret',
  }),
});

const { access_token } = await response.json();
import requests
import urllib.parse

with open('client-cert.pem', 'r') as f:
    certificate = f.read()
    encoded_cert = urllib.parse.quote(certificate)

response = requests.post(
    'https://api.gateway.eyt.com.br/api/auth/token',
    headers={'X-SSL-Client-Cert': encoded_cert},
    json={
        'clientId': 'your-client-id',
        'clientSecret': 'your-client-secret'
    }
)

access_token = response.json()['access_token']

Respuesta

{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 1800
}

Uso del Token

Incluya el token en todas las solicitudes a la API PIX Bacen:

curl -X PUT https://api.gateway.eyt.com.br/cob/abc123 \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." \
  -H "Content-Type: application/json" \
  -d '{...}'

Parámetros de Autenticación

stringobrigatorio

Certificado X.509 del cliente, en formato PEM y URL-encoded, vinculado a su cuenta.

stringobrigatorio

Identificador único de su aplicación. Proporcionado durante el registro.

stringobrigatorio

Clave secreta de su aplicación. Debe tener entre 8 y 64 caracteres.

Nunca exponga el clientSecret en código frontend o repositorios publicos.

Campos de Respuesta

access_tokenstring

Token JWT para autenticar solicitudes.

token_typestring

Tipo de token. Siempre "Bearer".

expires_innumber

Tiempo de vida del token en segundos. Siempre 1800 (30 minutos).

Renovacion del Token

El token expira después de expires_in segundos. Implemente la renovacion automatica:

class TokenManager {
  private token: string | null = null;
  private expiresAt: number = 0;

  async getToken(): Promise<string> {
    // Renovar 5 minutos antes de la expiracion
    if (!this.token || Date.now() >= this.expiresAt - 300000) {
      await this.refreshToken();
    }
    return this.token!;
  }

  private async refreshToken(): Promise<void> {
    const fs = require('fs');
    const certificate = fs.readFileSync(process.env.CLIENT_CERT_PATH, 'utf8');
    const encodedCert = encodeURIComponent(certificate);

    const response = await fetch('https://api.gateway.eyt.com.br/api/auth/token', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'X-SSL-Client-Cert': encodedCert,
      },
      body: JSON.stringify({
        clientId: process.env.CLIENT_ID,
        clientSecret: process.env.CLIENT_SECRET,
      }),
    });

    const data = await response.json();
    this.token = data.access_token;
    this.expiresAt = Date.now() + (data.expires_in * 1000);
  }
}

Errores de Autenticación

CódigoDescripciónSolución
401Token no proporcionadoIncluya el header Authorization: Bearer <token>
401Token invalidoVerifique que el token sea correcto y no haya expirado
401Token expiradoObtenga un nuevo token via /api/auth/token
400/401/403Error de certificado o credenciales en /api/auth/tokenConsulte los errores de certificado en la guía de autenticación estandar

Mejores Prácticas

Próximos Pasos

En esta página