Cobro empujado al terminal

Cobro empujado al terminal A sequence diagram generated by Archify. POST /api/v1/pagos/intenciones + despacho PENDIENTE · ttl 300 s · 409 TERMINAL_OCUPADO GET /api/v1/pos/ordenes/pendiente?espera=25 long-poll 200 orden · ENTREGADA UPDATE condicional POST /ordenes/{ref}/aceptar · ACEPTADA POST /api/v1/pos/transacciones CanalOrdenesEcr.admitir() 0200 compra 0210 · DE39 = 00 aprobada POST /ordenes/{ref}/resultado · COMPLETADA outlet = asignación del día GET /intenciones/{ref} → despacho COMPLETADA Despacho Cobro Resultado y atribución Software del comercio · X-API-Key por comercio · Sequence participant Software del comercio X-API-Key por comercio Merchant · DispatchService · cola por terminal · Sequence participant Merchant DispatchService · cola por terminal AuroraPOS · ServicioDespacho · Bearer deviceToken · Sequence participant AuroraPOS ServicioDespacho · Bearer deviceToken Switch Aurora · ISO 8583 TCP :9503 · Sequence participant Switch Aurora ISO 8583 TCP :9503 Legend request return default message

Estados del despacho

  • • PENDIENTE → ENTREGADA → ACEPTADA → COMPLETADA
  • • EXPIRADA por barrido Quartz cada 60 s; CANCELADA solo antes de aceptar
  • • Timeout del cobro = EN_DUDA, nunca rechazo

Reglas

  • • Un cobro a la vez por terminal: 409 TERMINAL_OCUPADO
  • • D9: un principal despacha a sus agencias; una agencia no despacha al principal
  • • Entrega atómica: UPDATE … WHERE dispatch_status = 'PENDIENTE'

Estado real

  • • Canal = long-poll HTTPS; sin FCM ni WebSocket
  • • Cola InMemoryDispatchChannel: una sola instancia hoy
  • • Atribución: assignment(terminal, fecha) ?? terminal.outlet