Introducción a SFA-Sandbox
SFA-Sandbox proporciona a los equipos de desarrollo una plataforma completa y desacoplada para probar e integrar interfaces de acuerdo con el estándar **FAPI 2.0 (Financial-grade API)** y el Sistema de Finanzas Abiertas (SFA) chileno dictado por la CMF bajo las normativas **NCG 502 y NCG 514**.
FAPI 2.0 Estricto
Validación rigurosa de tokens Bearer firmados, cabeceras forenses (x-fapi-interaction-id), y flujos asíncronos y síncronos reglamentarios.
Ingeniería de Resiliencia
Simula en caliente anomalías bancarias (latencias de red, errores 500, colapsos por rate limit 429) para entrenar y robustecer tu software antes del paso a producción.
Guía de Inicio Rápido
Para iniciar el consumo del sandbox, ingresa a la plataforma utilizando tu cuenta y obtén tu **Sandbox Key** exclusiva. Todas las solicitudes deben incluir esta llave en las cabeceras técnicas para asegurar el aislamiento.
Flujo de Redirección (Decoupled Redirect)
Es el flujo tradicional por defecto donde la aplicación Fintech crea una intención de consentimiento y luego redirecciona al usuario al portal del Banco para la firma:
- Negociar Intención: Envía un
POSTaapi.php?action=consentscon los alcances del consentimiento. - Redirección Soberana: El Sandbox responde con un enlace interactivo para autorizar en el Banco Simulador.
- Canje de Token: Tras la firma, canjea el código temporal mediante un
POSTaapi.php?action=tokenpara obtener el access token definitivo.
Flujo CIBA Backchannel (Asíncrono)
Diseñado para integraciones móviles y server-to-server sin redirección directa. Permite iniciar la autenticación de forma silenciosa y realizar consultas periódicas (polling) de estado:
1. Registrar Sesión CIBA (POST)
2. Polling e Intercambio de Token (POST)
Iniciación de Pagos (PISP / TEF Simulado)
SFA-Sandbox implementa el modelo de **Payment Initiation Service Provider (PISP)** para simular transferencias electrónicas inmediatas con redirección y firma interactiva de PIN de coordenadas.
1. Iniciar Intención de Pago (POST)
Registra los datos de origen, destino y monto en el servidor con tus cabeceras multitenant:
2. Redirección y Firma interactiva (Consentimiento Web)
La API responderá con un estado 201 Created y una URL interactiva de consentimiento consent_url:
Redirecciona al pagador a consent_url. Se levantará el **Portal de Firma Externa del Banco Central** donde el usuario ingresará su PIN de 4 dígitos para autorizar o rechazar la transacción de forma inmediata.
3. Consultar Estado de Transferencia (Polling GET)
Consulta en cualquier momento el estado final del pago. Al autorizarse, el sistema generará el código único de transferencia transaction_code:
Información de Canales e Infraestructura (NCG 514)
La normativa **NCG 514** dictada por la CMF exige a las instituciones financieras exponer información detallada de la disponibilidad operativa de sus servicios y la ubicación geográfica de sus puntos de atención físicos.
1. Obtener Disponibilidad Operativa Dinámica (GET)
Retorna las métricas del Gateway, el Servidor de Autorización mTLS y el Core de Pagos. **Este endpoint reacciona dinámicamente al Motor de Caos**: si activas latencia o errores 500 en tu panel, las métricas del Sandbox se degradarán en tiempo real para simular un incidente:
2. Obtener Sucursales y Cajeros (GET)
Retorna el listado geolocalizado de sucursales físicas y cajeros automáticos del banco ficticio, con horarios de atención y servicios disponibles:
Lectura de Información de Cuentas (AISP)
Una vez que el flujo **OIDC** o **CIBA** te entrega un **Bearer Token criptográfico (JWT)**, tu aplicación puede consumir endpoints transaccionales seguros. Estos endpoints validan criptográficamente el token y aíslan los datos según tu Sandbox Key.
1. Obtener Saldos de Cuenta (AISP balances)
Consulte el saldo disponible, contable y cupos de la cuenta autorizada:
2. Obtener Historial de Transacciones (AISP transactions)
Retorna el historial de transacciones. **Cumple con la exigencia regulatoria de almacenar 5 años de datos**:
Productos Financieros Públicos
Las APIs de **Datos Abiertos** no requieren autenticación Bearer Token del usuario (MFA), lo que las hace perfectas para demos públicas, comparadores de tarifas y simuladores rápidos.
1. Obtener Catálogo de Tarifas y Productos (GET)
Retorna los productos comerciales del banco, sus cobros asociados y tasas:
Motor de Caos e Inyección de Anomalías
A través de tu panel web, puedes programar al Gateway para inyectar fallas selectivas en vuelo, simulando problemas reales de los cores bancarios para validar el comportamiento offline de tu software:
Agrega +3500ms a todas las llamadas del proxy.
Fuerza respuestas HTTP 500 simulando caída de APIs.
El polling retorna pending de forma infinita.
El Túnel Proxy de Caos
Para equipos avanzados, puedes canalizar tráfico real a través de nuestro reverse-proxy proxy.php para interceptar peticiones destinadas a servidores del banco de producción real y sabotearlas según tus configuraciones de caos.
Ejemplos de Consumo Prácticos
Node.js (Axios)
const axios = require('axios');
axios.post('https://sfasandbox.cl/api.php?action=ciba_auth', {
login_hint: '12.345.678-9',
scope: 'accounts',
binding_message: 'SFA-1002'
}, {
headers: {
'x-sandbox-key': 'sfa_desarrollo_87f2ab',
'x-fapi-interaction-id': 'b1c67d3e-9081-42cb-a311-2df8a2f1c8e9'
}
}).then(res => console.log('AuthReqID:', res.data.auth_req_id));
Python (Requests)
import requests
headers = {
'x-sandbox-key': 'sfa_desarrollo_87f2ab',
'x-fapi-interaction-id': 'b1c67d3e-9081-42cb-a311-2df8a2f1c8e9'
}
data = {
'login_hint': '12.345.678-9',
'scope': 'accounts',
'binding_message': 'SFA-1002'
}
r = requests.post('https://sfasandbox.cl/api.php?action=ciba_auth', json=data, headers=headers)
print(r.json())