Autenticación
Resumen
Todas las llamadas a la API del Payment Gateway (excepto la tokenización, que usa su llave pública) requieren un token Bearer obtenido mediante el endpoint /oauth/token.
Características clave:
- Tipo de grant: Client Credentials (máquina a máquina)
- Vigencia del token: De corta duración (típicamente 1 hora) — solicite un nuevo token cuando expire
- Transporte: Use siempre HTTPS; nunca envíe credenciales por conexiones sin cifrar
- Almacenamiento: Los tokens deben almacenarse de forma segura del lado del servidor; nunca los exponga en código del lado del cliente
Obtención de un Token de Acceso
POST /oauth/token
Solicitud
curl -X POST https://{FQDN}/oauth/token \
-H 'Content-Type: application/json' \
-d '{
"clientId": "YOUR_CLIENT_ID",
"secretId": "YOUR_CLIENT_SECRET"
}'
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
clientId | string | Sí | Su identificador de cliente OAuth, proporcionado durante el onboarding |
secretId | string | Sí | Su secreto de cliente OAuth, proporcionado durante el onboarding |
Respuesta (Éxito — 200)
{
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 3600
}
| Campo | Tipo | Descripción |
|---|---|---|
accessToken | string | Token JWT para incluir en las llamadas posteriores a la API |
tokenType | string | Siempre "Bearer" |
expiresIn | number | Validez del token en segundos |
Respuesta (No Autorizado — 401)
{
"status": 401,
"message": "Unauthorized request",
"responseCode": "SE_001"
}
Uso del Token
Incluya el token de acceso en el header Authorization de cada solicitud a la API:
curl -X POST https://{FQDN}/v2/payment \
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
-H 'Content-Type: application/json' \
-d '{ ... }'
Mejores Prácticas de Gestión de Tokens
Almacene los tokens en caché — Reutilice el mismo token hasta que expire en lugar de solicitar uno nuevo por cada llamada a la API. El endpoint de autenticación tiene un límite de 60 solicitudes/minuto.
Maneje la expiración con elegancia — Cuando reciba una respuesta
401o403, solicite un nuevo token y reintente la solicitud original.Nunca exponga credenciales del lado del cliente — El
clientIdy elsecretIdsolo deben usarse desde su servidor backend (patrón Backend-for-Frontend). La única credencial del lado del cliente es lapublicKeyusada para la tokenización de tarjetas.Rote los secretos periódicamente — Contacte al equipo de Inyo para rotar su secreto de cliente si sospecha que ha sido comprometido.
Autenticación vs. Tokenización
| Aspecto | Lado del servidor (OAuth) | Lado del cliente (Tokenizer) |
|---|---|---|
| Credencial | clientId + secretId | publicKey |
| Endpoint | POST /oauth/token | Librería inyo.js |
| Propósito | Autenticar llamadas a la API | Tokenizar datos de tarjeta |
| Exposición | Solo backend | Navegador (seguro de exponer) |
Límites de Tasa
| Endpoint | Límite |
|---|---|
Autenticación (/oauth/token) | 60 solicitudes/minuto |
| Tasas de FX | 200 solicitudes/minuto |
| Todos los demás endpoints autenticados | 400 solicitudes/minuto |
Cuando se alcanza el límite de tasa, la API devuelve HTTP 429. Implemente backoff exponencial con jitter en su lógica de reintentos.
