Saltar al contenido principal

Diagnóstico de un pago

Seguir un pago​

Un pago pasa por: link (active) → el pagador elige un medio → pago (in_review mientras espera) → resultado (paid o failed) → webhook al comercio. Mira cada paso.

curl -s "$API/api/payment-links" -H "Authorization: Bearer $TOKEN"

Si el pagador ve "Link no disponible", el estado del link no es active (pagado, vencido, revocado, o hay un intento en curso). Ver estados.

2. El pago y los eventos (base de datos del motor)​

-- Pagos recientes
select provider_payment_id, rail, provider, state, status_detail, amount, provider_reference, updated_at
from payments order by inserted_at desc limit 20;

-- Eventos recibidos y enviados
select direction, provider, event_type, status, external_event_id, attempt_count, inserted_at
from webhook_events order by inserted_at desc limit 20;

En el kind local: kubectl --context kind-pe-test -n payment-engine exec postgres-0 -- psql -U postgres -d payment_engine_dev -c "…".

3. Los servicios​

kubectl -n payment-engine logs deploy/payment-engine-api       # webhooks entrantes, API
kubectl -n payment-engine logs deploy/payment-engine-web # página de pago, errores del proveedor
kubectl -n payment-engine logs deploy/payment-engine-worker # entrega de webhooks salientes

Problemas frecuentes​

SíntomaCausa probableQué hacer
401 con The issuer '…' is invalidEl token se pidió a Keycloak por una dirección distinta de la pública configuradaPedirlo por la dirección pública; ver autenticación.
Pago pendiente tras pagar por PSEEl webhook del proveedor no llegó o falló la firmaRevisar webhook_events (status, attempt_count) y los logs de la API. En el simulador, mirar el outbox de pse-sandbox.
La respuesta de PSE dice "enlace de retorno no válido"El link de retorno venció o el pago no se encuentra por su referenciaAbrir de nuevo el retorno; verificar provider_reference del pago.
El comercio no recibe webhooksNo hay webhook registrado, filtro de events que no coincide, el worker no corre, o se agotaron los 5 intentosListar GET /api/merchant-webhooks; revisar el worker y webhook_events. No hay reenvío manual aún.
"No pudimos iniciar el pago con tarjeta" en localEl simulador no implementa /v1/linksEsperado en el entorno local; probar tarjeta contra Akua real.
El banco elegido no cambia lo que llega al proveedorEstá configurado el bank_id forzado (AKUA__PSEBANKIDOVERRIDE, por defecto 1007)Dejarlo vacío para enviar el banco elegido.
Mo$i/Bre-B: el webhook responde 422 amount mismatchEl monto del evento no coincide con el total del linkEnviar el monto del link (o no enviar amount).
Mo$i/Bre-B: 422 payment not foundEl primer evento no trae payment_link_tokenEnviar el token del link.