Autenticación
Aprende a autenticar tus solicitudes a la API de NIIO Payments usando API Keys.
API Keys
NIIO utiliza un sistema de autenticación basado en API Keys para identificar y autorizar las solicitudes de tu aplicación. Cada merchant puede generar múltiples API Keys desde el dashboard.
Cada API Key consiste en dos partes:
| Componente | Header | Descripción |
|---|---|---|
API Key |
X-Api-Key |
Identificador público de tu aplicación |
API Secret |
X-Api-Secret |
Clave secreta para autenticar solicitudes |
Crear una API Key
Solicita tus credenciales de API (API Key y API Secret) a tu contacto en NIIO. Aún no existe un panel self-service para generarlas.
En el menú lateral, navega a la sección de configuración y selecciona "API Keys".
Haz clic en "Crear API Key" y asigna un nombre descriptivo (ej: "Producción", "Staging").
Copia y guarda de forma segura tanto el API Key como el API Secret. El secret no se mostrará de nuevo.
Autenticar solicitudes
Incluye ambas credenciales en los headers de cada solicitud:
X-Api-Key: tu_api_key
X-Api-Secret: tu_api_secret
Content-Type: application/json
Ejemplo de solicitud autenticada
curl -X GET https://api.prod.niiopay.com/api/v1/collect/clxyz123abc456def \
-H "X-Api-Key: tu_api_key" \
-H "X-Api-Secret: tu_api_secret" \
-H "Content-Type: application/json"
Errores de autenticación
Si la autenticación falla, recibirás uno de estos errores:
| Código | HTTP Status | Descripción |
|---|---|---|
MISSING_CREDENTIALS |
401 | Faltan los headers X-Api-Key o X-Api-Secret |
INVALID_CREDENTIALS |
401 | El API Key o Secret son inválidos |
MERCHANT_NOT_ACTIVE |
401 | La cuenta del merchant no está activa |
Ejemplo de respuesta de error
{
"success": false,
"error": {
"code": "INVALID_CREDENTIALS",
"message": "Invalid API credentials",
"details": {}
}
}
Revocar una API Key
Si sospechas que tu API Key ha sido comprometida, revócala inmediatamente:
- Ve a Dashboard → Configuración → API Keys
- Encuentra la key que deseas revocar
- Haz clic en el botón "Revocar"
- Confirma la acción
Buenas prácticas
- Usa variables de entorno: Nunca incluyas credenciales directamente en tu código fuente.
- Rota tus keys periódicamente: Crea nuevas keys y revoca las antiguas cada cierto tiempo.
- Una key por ambiente: Usa keys diferentes para desarrollo, staging y producción.
- Solo backend: Las llamadas a la API deben hacerse siempre desde tu servidor, nunca desde el frontend.
Ejemplo con variables de entorno
// .env
NIIO_API_KEY=tu_api_key
NIIO_API_SECRET=tu_api_secret
// app.js
const apiKey = process.env.NIIO_API_KEY;
const apiSecret = process.env.NIIO_API_SECRET;
const response = await fetch('https://api.prod.niiopay.com/api/v1/collect', {
method: 'POST',
headers: {
'X-Api-Key': apiKey,
'X-Api-Secret': apiSecret,
'Content-Type': 'application/json',
},
body: JSON.stringify(orderData),
});
# .env
NIIO_API_KEY=tu_api_key
NIIO_API_SECRET=tu_api_secret
# app.py
import os
import requests
api_key = os.environ['NIIO_API_KEY']
api_secret = os.environ['NIIO_API_SECRET']
response = requests.post(
'https://api.prod.niiopay.com/api/v1/collect',
headers={
'X-Api-Key': api_key,
'X-Api-Secret': api_secret,
'Content-Type': 'application/json',
},
json=order_data
)
// .env
NIIO_API_KEY=tu_api_key
NIIO_API_SECRET=tu_api_secret
// app.php
<?php
$apiKey = getenv('NIIO_API_KEY');
$apiSecret = getenv('NIIO_API_SECRET');
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://api.prod.niiopay.com/api/v1/collect',
CURLOPT_HTTPHEADER => [
'X-Api-Key: ' . $apiKey,
'X-Api-Secret: ' . $apiSecret,
'Content-Type: application/json',
],
// ...
]);