Entorno local
Hoy es el único ambiente de pruebas autocontenido: levanta la pasarela completa en tu máquina, con un simulador de PSE en lugar de Akua.
Requisitos
podman (o Docker), kind, kubectl, dotnet 10 y Node 22 para construir las imágenes. Un cluster kind existente (por defecto kind-pe-test).
Levantar
Desde engine/payment-engine-dotnet:
# 1. Construir las imágenes con el tag `kind`
deploy/scripts/build-push.sh -t kind --targets api,web,worker,seed,attestation,docs --frontend
podman build --format docker -t inteclatamcr/pse-sandbox:kind ../../pse-sandbox
# 2. Cargarlas en el cluster, desplegar infraestructura, secretos de prueba, migración y seed
deploy/scripts/kind-local.sh up --frontend
# 3. Abrir los accesos (port-forward) — déjalo corriendo
deploy/scripts/kind-local.sh forward
El script exige un contexto de kind explícito, genera credenciales aleatorias de prueba en el cluster (nada va a git) y no toca otros namespaces.
Direcciones locales
| Servicio | URL |
|---|---|
| Página de pago | http://localhost:18080 |
| Keycloak | http://localhost:18081 (también /keycloak/ desde el checkout y los portales) |
| Respuesta de pago (PSE) | http://localhost:18082 |
| API | http://localhost:18083 |
| Checkout (links de pago, app Mo$i embebible) | http://localhost:18084 |
| Este sitio | http://localhost:18085 |
| Banco simulado de PSE | http://localhost:18090 |
| Portal de comercios / administración | http://localhost:19080 / http://localhost:19081 |
Credenciales de prueba (solo local)
Estas credenciales solo existen en el kind local (vienen del realm de desarrollo) y no sirven en ningún otro ambiente:
| Qué | Valor |
|---|---|
Comercio de ejemplo (Gran Kiosko) — client_id | 00000000-0000-0000-0000-0000000000a1 |
Comercio de ejemplo — client_secret | sandbox-merchant-dev-secret-change-me |
| Usuario del portal de comercios | kiosko@grankiosko.com |
| Administrador | admin@crezcamos.com |
Primer recorrido
export KEYCLOAK=http://localhost:18081 API=http://localhost:18083
TOKEN=$(curl -s -X POST "$KEYCLOAK/realms/payment-engine/protocol/openid-connect/token" \
-d grant_type=client_credentials \
-d client_id=00000000-0000-0000-0000-0000000000a1 \
-d client_secret=sandbox-merchant-dev-secret-change-me | python3 -c 'import sys,json;print(json.load(sys.stdin)["access_token"])')
curl -s -X POST "$API/api/payment-links" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/vnd.api+json" \
-d '{"data":{"type":"payment_link","attributes":{"concept":"Prueba","description":"Prueba","amount":"30000","expires_at":"2030-01-01T00:00:00Z","accepted_payment_methods":["pse"]}}}'
Abre la url del resultado en el navegador, elige PSE, completa el formulario y decide el resultado en el banco simulado. Para ver la notificación, registra un webhook hacia un receptor tuyo.
Qué no puedes probar aquí
| Medio | Estado en el entorno local |
|---|---|
| PSE | Completo, con el simulador. |
| Tarjeta | No: el simulador no implementa la creación del checkout de Akua (/v1/links); el pagador ve "No pudimos iniciar el pago con tarjeta". |
| Cuenta Crezcamos / Bre-B | El inicio es una simulación; para probar la confirmación envía a mano el webhook de confirmación. |