Confirmación de pago
Una vez generado el QR y mostrado al pagador, hay dos formas de conocer el resultado:
- Tiempo real (recomendada): suscripción SSE al tópico del QR.
- Polling: consulta periódica del estado del intent.
Suscripción SSE (tiempo real)
GET https://api.prd.geopagos.io/sse/notifications?topic=urn%3A{TENANT_IDENTIFIER}%3Aintent_{QrHash}
Accept: text/event-stream
curl --location 'https://api.prd.geopagos.io/sse/notifications?topic=urn%3A{TENANT_IDENTIFIER}%3Aintent_{QrHash}' \
--header 'Authorization: Bearer {access_token}' \
--header 'Accept: text/event-stream'
| Parámetro | Descripción |
|---|---|
TENANT_IDENTIFIER | UUID del tenant, valor compartido por todos los clientes: 5662e892-59f2-4a54-aea8-cfbf77942843 (ver Credenciales) |
QrHash | id / hash del QR generado |
El tópico tiene la forma urn:{TENANT_IDENTIFIER}:intent_{QrHash} (URL-encoded: urn%3A...%3Aintent_...).
Cuando el QR se paga, la notificación SSE incluye el reference_number de la autorización, que permite obtener el detalle completo de la venta.
Mantené la conexión abierta mientras el QR esté vigente, implementá reconexión ante cortes y tené en cuenta la expiración del token (15 min) para streams de larga duración.
Consultar estado de un QR (solo QR dinámico)
GET https://api.prd.geopagos.io/api/v4/payments/intents/{qr_id}/sse
curl --location 'https://api.prd.geopagos.io/api/v4/payments/intents/{qr_id}/sse' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}'
| Código | Significado |
|---|---|
204 No Content | El QR no fue pagado aún |
200 OK | El QR fue pagado (se devuelve la autorización) |
Response — 200 OK (pagado)
{
"id": "3f59b249-59f3-42f7-aa12-42a99dadc92b",
"type": "SALE",
"status": "APPROVED",
"refNumber": "09841023-b6da-4384-a4d4-a852dc4e923e",
"entryMode": "QR",
"totalAmount": 85.00
}
El campo refNumber es el reference_number de la autorización, necesario para obtener el detalle completo.
Obtener detalle del intent (solo QR dinámico)
Devuelve el estado y la composición del intent de pago (venta), aunque todavía no se haya pagado.
GET https://api.prd.geopagos.io/api/v4/payments/intents/{qr_id}
Response — 200 OK
{
"uuid": "8cf1ce0f-8969-4029-b8ba-87406971d54d",
"state": "PENDING",
"amount": 111.0,
"tip_amount": 0.0,
"currency": "032",
"origin": "mpos_app",
"items": [
{ "amount": 111.0, "quantity": 1, "name": "Venta" }
],
"taxes": [],
"authorizations": [],
"metadata": {
"can_refund": false,
"refund_without_card": false
},
"point_of_sale_id": "6fda9b64-d317-4723-9480-cda88579c987"
}
Estados observados del intent: PENDING (a la espera de pago) → SALE_CONFIRMED (venta confirmada). Cuando el intent se paga, el array authorizations[] contiene la autorización con su reference_number.
Siguiente paso: conciliación.