Sandbox
Cada socio M2M obtiene una suscripción de sandbox junto con su suscripción de producción. El sandbox es una instancia real de BFF + base de datos separada de producción — las llamadas no tocan dinero real, clientes reales, ni cuentas reales de socio.
Obtener credenciales de sandbox
Su paquete de incorporación de ARi incluye:
- Clave de suscripción de sandbox (
Ocp-Apim-Subscription-Key) parahttps://sandbox-api.ariari.xyz - Identidad de socio de prueba + un conjunto de clientes de prueba precargados en el sandbox
- IBANs de prueba con resultados determinísticos (vea abajo)
La clave de suscripción de sandbox es distinta de su clave de producción. Nunca use la clave de sandbox contra endpoints de producción — las llamadas fallan con 401. Asimismo, nunca use la clave de producción contra el sandbox; aunque la llamada de red tenga éxito, la medición es incorrecta.
URL base de sandbox
| Superficie | URL |
|---|---|
| API de sandbox | https://sandbox-api.ariari.xyz |
| Documentos de sandbox | https://sandbox-developers.ariari.xyz (este portal — entorno único) |
Inicio rápido
# Confirme que su clave de sandbox funciona
curl -fsS "https://sandbox-api.ariari.xyz/api/v1/balances/get" \
-H "Ocp-Apim-Subscription-Key: $CLAVE_SANDBOX" \
-H "X-Correlation-Id: $(uuidgen)"
# Retorna: 200 con los saldos de billetera de su socio de pruebaIBANs de prueba determinísticos
Los IBANs de sandbox codifican el resultado deseado en su sufijo. Use estos para ejercitar rutas específicas sin depender de condiciones de carrera del mundo real.
IBANs de Costa Rica (cuentas CRC)
| Sufijo IBAN | Resultado | Eventos SSE emitidos | Caso de uso |
|---|---|---|---|
0000 |
FILLED — éxito en ruta feliz | fxorder.created → fxorder.status (NEW) → fxorder.status (ACCEPTED) → fxorder.status (FILLED) → balance.updated |
Prueba de humo de la integración |
0001 |
REJECTED — `DB-FX-412` (saldo insuficiente) | fxorder.created → fxorder.status (REJECTED) |
Pruebe su manejo de error para fondos insuficientes |
0002 |
REJECTED — `DB-FX-410` (cotización expirada) | fxorder.created → fxorder.status (REJECTED) |
Pruebe su flujo de re-cotización cuando un bloqueo ha expirado |
0003 |
REJECTED — `GW-STC-007` (KYC bloqueado) | fxorder.created → fxorder.status (REJECTED) |
Pruebe su ruta de error de AML/KYC |
0004 |
TIMEOUT — el servidor mantiene la conexión 35s, luego 504 | ninguno (la solicitud nunca resuelve a una orden) | Pruebe su resiliencia de timeout + reintento |
0005 |
INTERMITENTE — alterna FILLED / 503 cada llamada | en corridas FILLED solamente: cascada de ruta feliz completa | Pruebe su ruta de reintento-con-misma-Idempotency-Key |
0006 |
FILLED RETARDADO — tiene éxito pero toma 8s | fxorder.created (inmediato) → fxorder.status (NEW, ~1s) → fxorder.status (ACCEPTED, ~3s) → fxorder.status (FILLED, ~8s) → balance.updated |
Pruebe polling asíncrono vs espera síncrona |
0007 |
RACE — PENDING_NEW por 3s, luego FILLED o REJECTED al azar |
fxorder.created → fxorder.status (NEW) → FILLED+balance.updated o REJECTED |
Pruebe su lógica de polling de estado |
Formato de IBAN de Costa Rica
Construya el IBAN completo como CR + verificación de 2 dígitos + código de banco de 4 dígitos + número de cuenta de 14 dígitos terminando en el sufijo deseado. Ejemplos:
CR05 0152 0200 1026 2840 0000 # FILLED
CR05 0152 0200 1026 2840 0001 # REJECTED (saldo insuficiente)
CR05 0152 0200 1026 2840 0002 # REJECTED (cotización expirada)El código de banco de 4 dígitos (0152) es el mismo a través de las pruebas de sandbox; el sufijo es el interruptor determinístico.
Escenarios Tengo + Quiero
Ambos escenarios XOR de lado-de-monto funcionan de extremo a extremo en sandbox. Use estos para verificar que su cliente maneje correctamente la matemática bidireccional.
Tengo (anclado al origen)
# "Tengo 1000 USD; ¿cuántos CRC recibiré?"
curl -fsS -X POST "https://sandbox-api.ariari.xyz/api/v1/fxorder/getQuote" \
-H "Ocp-Apim-Subscription-Key: $CLAVE_SANDBOX" \
-H "Content-Type: application/json" \
-d '{
"origin_currency": "USD",
"destination_currency": "CRC",
"origin_amount": 1000,
"lock_rate": true
}'La respuesta incluye:
origin_amount: "1000.00"(retornado)destination_amount: "508974.37"(calculado por el servidor usando el bid_rate bloqueado)quote_idpara la siguiente llamadacreateOrder
Quiero (anclado al destino)
# "Quiero exactamente 500000 CRC; ¿cuántos USD envío?"
curl -fsS -X POST "https://sandbox-api.ariari.xyz/api/v1/fxorder/getQuote" \
-H "Ocp-Apim-Subscription-Key: $CLAVE_SANDBOX" \
-H "Content-Type: application/json" \
-d '{
"origin_currency": "USD",
"destination_currency": "CRC",
"destination_amount": 500000,
"lock_rate": true
}'La respuesta incluye:
destination_amount: "500000.00"(retornado)origin_amount: "983.16"(calculado usando el ask_rate bloqueado)
La regla XOR aplica también en createOrder — suministre el mismo lado XOR que usó en getQuote.
Identidades de socio de prueba
Su socio de sandbox tiene un conjunto de clientes de prueba pre-registrados y cuentas externas. Los IDs exactos llegan en su paquete de incorporación (los valores son específicos del socio para evitar contaminación cruzada entre tenants de sandbox).
| Entidad de prueba | Uso |
|---|---|
test_partner_id |
Su ID de socio de sandbox; aparece en logs de auditoría, payloads de webhook |
test_customer_a |
Un cliente de "ruta feliz" con KYC suficiente + billetera fondeada |
test_customer_b |
Un cliente "marcado por AML"; las órdenes FX retornan errores DB-AML-* |
test_customer_c |
Un cliente "no verificado"; las transferencias retornan GW-STC-007 |
Si necesita entidades de prueba adicionales (perfiles KYC personalizados, casos extremos específicos), contacte a su gerente de cuenta — la siembra de sandbox es configurable pero no autoservicio.
Eventos de webhook + SSE en sandbox
El sandbox emite los mismos tipos de evento que producción. Configure su endpoint de webhook vía la API de webhooks; los eventos disparan en cada transición de estado para órdenes/transferencias iniciadas bajo su suscripción de sandbox.
Para streams SSE (/api/v1/events/stream), conecte con su clave de sandbox — los eventos fluyen en tiempo real conforme los escenarios de IBAN determinísticos se resuelven.
Comportamiento de reset + pool de semillas
Algunos escenarios de sandbox consumen registros de semilla de un solo uso (p. ej. flujos específicos de reversión). El pool de semillas está dimensionado para cientos de pruebas por socio por día. Si agota el pool, ARi lo recarga en cadencia de reset diario; verá respuestas de error específicas (error_code: SBX-SEED-DEPLETED) cuando el pool esté vacío.
Para verificar el estado del pool, su gerente de cuenta puede ejecutar un reporte de estado de sandbox. Para integración de CI de alto volumen, contacte a su gerente para programar una cadencia de recarga personalizada.
Lo que el sandbox NO hace
- Liquidar dinero real. Ningún CRC, USD, o EUR se mueve entre bancos reales. Las cotizaciones usan tasas de mercado reales (obtenidas de tasas de referencia de producción) para que la matemática sea realista, pero las transferencias subyacentes son solo de libro mayor.
- Verificar contra bases de datos reales de KYC. Los sufijos de IBAN determinísticos manejan los resultados de prueba; los servicios reales del Padrón Electoral / KYC externos están simulados.
- Reflejar datos de producción. Los clientes reales y órdenes reales NO están en sandbox. Los clientes de prueba precargados son las únicas entidades para las que su suscripción de sandbox puede transactar.
Vea también
- Autenticación — modelo de clave de suscripción
- Idempotencia — el sandbox respeta la misma semántica de reintentos que producción
- Errores — catálogo completo de códigos de error que los IBANs determinísticos disparan
- Órdenes FX, Transferencias, Webhooks — ejemplos específicos del endpoint