Volver a Documentacion

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) para https://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 prueba

IBANs 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.createdfxorder.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.createdfxorder.status (REJECTED) Pruebe su manejo de error para fondos insuficientes
0002 REJECTED — `DB-FX-410` (cotización expirada) fxorder.createdfxorder.status (REJECTED) Pruebe su flujo de re-cotización cuando un bloqueo ha expirado
0003 REJECTED — `GW-STC-007` (KYC bloqueado) fxorder.createdfxorder.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.createdfxorder.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_id para la siguiente llamada createOrder

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