Entornos y Base URL

MODO PRUEBA

Winal tiene un solo API con dos modos que conviven en la misma URL: el modo prueba (llaves sk_test_…) y el modo producción (llaves sk_live_…). No hay dos hosts distintos ni dos cuentas: la llave que presentas decide en qué modo trabajas y qué dinero se mueve.

🧭 En una frase
Misma Base URL, misma superficie de endpoints. Cambias sk_test_ por sk_live_ y el mismo código pasa de simular a cobrar de verdad. Todo lo que devuelve la API trae livemode: false en prueba y livemode: true en producción.

Base URL

Una sola: https://api.winal.com.mx. Los ejemplos de esta documentación ya la traen escrita, así que un curl se copia y se pega tal cual. La raíz https://winal.com.mx apunta a la misma aplicación y es la que ve una persona en el navegador (documentación, liga de pago /pay/…, autofactura /factura/…); para lo que llama tu código, usa siempre el host api..

EntornoBase URLLlavelivemode
Prueba (sandbox)https://api.winal.com.mxsk_test_…false
Producciónhttps://api.winal.com.mx (la misma)sk_live_…true

No la dejes escrita en tu código. Guárdala en una variable de entorno (WINAL_BASE_URL) para que apuntar a otro host —una instancia dedicada el día que crezcas, un ambiente propio de pruebas— sea cambiar una línea de configuración y no un find-and-replace por todo el repo.

Modo prueba vs. producción

Los dos modos están aislados: un intent, un cliente o un webhook creado con sk_test_ jamás aparece bajo sk_live_ ni al revés. En prueba, el conector Sim viene activo por defecto — cobras de extremo a extremo con tokens tok_sim_* sin dar de alta ningún proveedor real (ver Modo de pruebas). En producción, el ruteo usa los conectores reales que configuraste en el portal (Mercado Pago, Conekta, STP…).

Modo pruebaProducción
Prefijo de llavesk_test_sk_live_
Conector por defectoSim (caos determinista)tus conectores reales
Tokens de pagotok_sim_*token real del proveedor
Movimiento de dineroninguno (simulado)real
livemode en respuestas y webhooksfalsetrue
⚠️ La llave es el interruptor
No hay una bandera ?live=true ni un header de entorno. El prefijo de la llave es lo único que decide el modo. Trata tu sk_live_ como una credencial de producción: nunca en el navegador, nunca en un repo, nunca en logs.

Cómo obtienes tu sk_test_

Crea tu cuenta en winal.com.mx/registro: al terminar el alta, la pantalla te muestra una sola vez tu llave de prueba sk_test_… con un botón de copiar. Guárdala en tu gestor de secretos en ese momento — por seguridad no se vuelve a mostrar completa. Desde ahí puedes entrar al portal → API Keys para verla listada (enmascarada), rotarla o revocarla, y —cuando actives producción— emitir tu sk_live_.

bash · tu primer llamado
# Guarda la Base URL y la llave como variables de entorno
export WINAL_BASE_URL="https://api.winal.com.mx"
export SK="sk_test_..."   # la que copiaste del registro

curl -s "$WINAL_BASE_URL/v1/payment_intents" \
  -H "Authorization: Bearer $SK" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{ "amount_minor": 84900, "currency": "MXN" }'

Verifica que estás vivo

El endpoint GET /health no requiere autenticación y no consume cupo de rate limit — úsalo para confirmar tu Base URL antes de integrar. El estado público (/status) reporta salud de componentes sin exponer nada sensible.

bash
curl -s "$WINAL_BASE_URL/health"
# → { "status": "ok" }

Siguiente paso