Llaves y entornos
Toda llamada lleva la cabecera:
x-switch-key: <tu-comercio>:<llave>Dos tipos de llave
| Llave | Empieza con | Qué hace |
|---|---|---|
| Prueba | sk_test_ | Simula todo de punta a punta. Nunca mueve dinero |
| Producción | sk_live_ | Cobra de verdad |
El modo lo decide la llave, no tu código. No hay ningún campo test=true: la misma petición con sk_test_ es de prueba y con sk_live_ es real. Un cobro creado en prueba queda de prueba para siempre, aunque lo abra alguien de verdad.
Cada llave sólo ve y toca lo de su modo. Con sk_test_ no se consulta, lista, edita ni cancela nada creado con sk_live_ (enlaces, lotes, órdenes, suscripciones, productos, propinas y equipo): responde 404 como si no existiera. Y una idempotency_key usada en prueba no se cruza con producción.
Hay dos cosas del comercio que no tienen modo y por eso exigen sk_live_: los webhooks (POST, PATCH y DELETE /switch/v1/webhooks, porque reciben también los avisos de producción) y la configuración de tus Flows de WhatsApp (POST /switch/v1/flow/config, PUT /switch/v1/flows/definicion). Con sk_test_ responden 403 con { "error": "requiere_llave_live" }; listar y ver webhooks sí funciona con cualquier llave. Si aún no tienes llave de producción, registra tu URL desde el portal (Integraciones › Webhooks).
Dónde se sacan
En tu portal, Integraciones › Llaves de API:
- La de prueba la creas cuando quieras.
- La de producción se activa cuando tu cuenta está aprobada.
- La llave se muestra una sola vez. Si la pierdes, revócala y crea otra.
- Puedes tener varias (una por sistema) y revocar cada una por separado: lo que use una llave revocada recibe
401de inmediato. - Por API (
POST /switch/v1/api-keysyPOST /switch/v1/api-keys/:id/revoke), una llave de prueba sólo crea y revoca llaves de prueba. Para crear o revocar una de producción, llama con unask_live_; con unask_test_responde403con{ "error": "requiere_llave_live" }. - El
labelde una llave nueva (1 a 120 caracteres) es libre, salvo que no puede empezar porservice-key:nipartner:(son de uso interno): responde400con{ "error": "label_reservado" }.
Dónde se guardan
Sólo en tu servidor, en una variable de entorno o un gestor de secretos. Nunca en el código del navegador, en una app móvil ni en un repositorio.
URL base
| URL | |
|---|---|
| API | https://pay.pagaconquickpay.com/switch/v1 |
| Página de pago | https://pay.pagaconquickpay.com/l/<id> |
Es la misma para prueba y producción: cambia sólo la llave.