API Direct (S2S)

Autenticación y tokenización

Autentica con tu llave API y cambia llave por access token para tokenizar tarjetas.

Todas las peticiones a la API de Tonder deben autenticarse. Usamos una llave API para asegurar que toda la comunicación proviene de una fuente confiable. Una petición no autenticada devuelve 401 Unauthorized.

Métodos de autenticación

CredencialSandboxProducción
Llave APIdashboard-stage.tonder.io → Developers → API Keysdashboard.tonder.io → Developers → API Keys

Headers requeridos

HeaderDescripción
AuthorizationTu llave API, con el prefijo Token.
Content-TypeDebe ser application/json para peticiones con cuerpo.
Authorization: Token <YOUR_API_KEY>
Content-Type: application/json

El esquema es Token seguido de un espacio y luego tu llave, no Bearer. Si falta el espacio, obtienes 401 Unauthorized.

Agrega también X-Request-Id con un UUID v4 por petición: no es un header de autenticación, es la llave de idempotencia que deduplica reintentos. Ver Idempotencia.

Ejemplo de petición completa

import requests

API_KEY = "your_api_key_from_dashboard"
BASE_URL = "https://stage.tonder.io/api/v1"  # usa https://app.tonder.io en producción

request_body = {
    "operation_type": "payment",
    "amount": 100.00,
    "currency": "MXN",
    "customer": {"name": "Test Customer", "email": "test@example.com"},
    "payment_method": {"type": "SPEI"},
    "client_reference": "ORD-001"
}
headers = {"Authorization": f"Token {API_KEY}", "Content-Type": "application/json"}

response = requests.post(f"{BASE_URL}/process/", headers=headers, json=request_body)
print(f"Status: {response.status_code}")
print(f"Response: {response.json()}")
curl -X POST https://stage.tonder.io/api/v1/process/ \
  -H "Authorization: Token <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "operation_type": "payment",
    "amount": 100.00,
    "currency": "MXN",
    "customer": { "name": "Test Customer", "email": "test@example.com" },
    "payment_method": { "type": "SPEI" },
    "client_reference": "ORD-001"
  }'

Tokenización de tarjetas

Para guardar o procesar tarjetas con menor alcance PCI, intercambia tu llave por un access token de corta duración: GET /api/v1/tokenization/auth/ (con tu llave API) devuelve un access_token (JWT). Ese token autoriza la tokenización de los datos de la tarjeta (header X-Skyflow-Authorization). Consulta el flujo completo en Pagos con tarjeta.

Buenas prácticas de seguridad

  • Nunca expongas tu llave API en código de cliente, apps móviles ni control de versiones.
  • Usa variables de entorno para almacenar credenciales, no las dejes en el código.
  • Rota las llaves de inmediato si sospechas que se filtraron.
  • Usa llaves separadas para sandbox y producción.
  • Restringe el acceso a las credenciales por necesidad.

Errores de autenticación

CódigoMensajeCausaSolución
401UnauthorizedLlave API inválida o ausenteVerifica que tu llave sea correcta e incluya el prefijo Token (con espacio).
403ForbiddenLa llave no tiene permiso para este endpointRevisa los permisos de tu cuenta o contacta a soporte.

Siguientes pasos

¿Te resultó útil esta página?

En esta página