Recomendaciones de implementación
Flujo completo
- Integrador → IdP:
POST /token(client_credentials). Devuelveaccess_token(15 min). - Integrador → API:
POST /points-of-sale(una vez por vendedor). Devuelveuuid(point_of_sale_id). - Integrador → API:
POST /payments/qr/{pos_uuid}(por cada venta). Devuelveqr_id, payload QR y expiración. - El integrador muestra el QR al pagador.
- Integrador → API:
GET /sse/notifications?topic=urn:{tenant}:intent_{qr_id}. Llega un evento SSE con el pago aprobado (reference_number).- Alternativa:
GET /payments/intents/{qr_id}/sse→204= pendiente /200= pagado.
- Alternativa:
- Integrador → API:
GET /payments/authorizations/{reference_number}. Devuelve el detalle completo de la venta.
Recomendaciones
- Gestión del token: implementá un cache con renovación anticipada (el token dura 15 minutos y no hay refresh token). Ante un 401, reintentá con un token nuevo.
- Persistencia de identificadores: guardá
point_of_sale_id(por vendedor) yqr_id(por venta). Elqr_ides la clave que vincula la venta local con el pago recibido (tracking.payment_intent_uuid). - Estrategia de confirmación: priorizá SSE para una experiencia en tiempo real; usá el endpoint de estado (
/intents/{qr_id}/sse) como respaldo ante desconexiones, y la lista de movimientos como conciliación batch (por ejemplo, un cierre diario por point of sale). - Expiración de QR dinámicos: controlá
expires_at; si el QR expira sin pagarse, generá uno nuevo para reintentar el cobro. - Idempotencia y reintegros: verificá
metadata.can_refunden el intent antes de habilitar devoluciones desde tu aplicación.
Peligro: Seguridad
Los tokens y credenciales nunca deben llegar al front-end del comercio; todas las llamadas a GeoPagos deben hacerse desde tu backend.