# EPICA: EPIC-MGN-017 - Payments POS

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-MGN-017 |
| **Nombre** | Payments POS (MercadoPago, Clip) |
| **Modulo** | payments |
| **Fase** | Fase 4 - SaaS Platform |
| **Prioridad** | P3 |
| **Estado** | Backlog |
| **Story Points** | 34 |
| **Sprint(s)** | Sprint 21-23 |

---

## Descripcion

Sistema de integracion con terminales de pago (MercadoPago y Clip) para procesar transacciones en punto de venta. Incluye registro de terminales por ubicacion, procesamiento de transacciones con tarjeta, reembolsos parciales/totales, webhooks para notificaciones y conciliacion automatica con generacion de asientos contables.

---

## Objetivo de Negocio

Proveer integracion de pagos que:
- Procese pagos fisicos y digitales en punto de venta
- Soporte multiples proveedores (MercadoPago, Clip)
- Automatice conciliacion con contabilidad
- Reduzca errores de captura manual
- Genere asientos contables automaticos
- Maneje comisiones de cada proveedor

---

## Stakeholders

| Rol | Nombre/Equipo | Responsabilidad |
|-----|---------------|-----------------|
| Product Owner | Equipo Producto | Definicion de proveedores y flujos |
| Tech Lead | Equipo Backend | Arquitectura de integraciones |
| Contador | Finanzas | Definicion de asientos contables |
| Cajeros | Operaciones | Uso diario, feedback UX |

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-MGN017-001 | Como admin, quiero registrar terminales de pago para identificar dispositivos | P0 | 3 | Backlog |
| US-MGN017-002 | Como admin, quiero configurar credenciales de MercadoPago (OAuth) | P0 | 5 | Backlog |
| US-MGN017-003 | Como admin, quiero configurar credenciales de Clip (API Keys) | P0 | 3 | Backlog |
| US-MGN017-004 | Como cajero, quiero procesar un pago con tarjeta para cobrar a cliente | P0 | 8 | Backlog |
| US-MGN017-005 | Como cajero, quiero procesar un reembolso para devolver a cliente | P0 | 5 | Backlog |
| US-MGN017-006 | Como sistema, quiero recibir webhooks de pagos para actualizar estados | P0 | 5 | Backlog |
| US-MGN017-007 | Como contador, quiero conciliar transacciones con extractos bancarios | P1 | 5 | Backlog |

**Total Story Points:** 34 SP

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Multi-provider: MercadoPago (OAuth) y Clip (API Keys)
- [ ] Registro de terminales por ubicacion/almacen
- [ ] Procesamiento de pagos con tarjeta (credito, debito)
- [ ] Reembolsos parciales y totales
- [ ] Webhooks para notificaciones de estado de pago
- [ ] Conciliacion de transacciones con extractos bancarios
- [ ] Asientos contables automaticos (Bancos, Comisiones, Ventas)
- [ ] Manejo de comisiones por provider

**No Funcionales:**
- [ ] Timeout de transacciones < 30s
- [ ] Retry automatico (3 intentos) en fallos de red
- [ ] Logs detallados para debugging y auditoria
- [ ] PCI DSS compliance (no almacenar datos de tarjeta)

**Tecnicos:**
- [ ] Cobertura de tests > 80%
- [ ] Documentacion de APIs de proveedores
- [ ] Manejo de errores estandarizado

---

## Integraciones

### MercadoPago
- **Autenticacion:** OAuth 2.0
- **Webhooks:** Para notificaciones de estado
- **APIs:** Payments, Refunds, Terminals, Device Management
- **Comision:** ~3.49% + IVA

### Clip
- **Autenticacion:** API Keys
- **Estado:** Polling (no tiene webhooks nativos)
- **APIs:** Transactions, Refunds, Terminals
- **Comision:** ~3.6% + IVA

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-MGN-004 Tenants | Ready | Si |
| EPIC-MGN-010 Financial | Backlog | Si (asientos contables) |
| EPIC-MGN-016 Billing | Backlog | No |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| Verticales con POS | Necesitan procesamiento de pagos |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `integrations`
- [ ] Tablas: 7 (payment_providers, payment_credentials, terminals, transactions, refunds, webhook_logs, reconciliation_batches)
- [ ] Indices: Por terminal_id, status, created_at
- [ ] RLS Policies: Si (por tenant)

**Backend:**
- [ ] Modulo: `payments`
- [ ] Services: MercadoPagoService, ClipService, PaymentProcessor, ReconciliationService
- [ ] Controllers: PaymentsController, TerminalsController, WebhooksController
- [ ] Endpoints: 20+ (CRUD terminales, procesar pago, reembolso, webhooks)
- [ ] Jobs: ReconciliationJob (diario)
- [ ] Tests: 35+

**Frontend:**
- [ ] Paginas: 5 (Terminals, Transactions, Reconciliation, ProviderConfig, TransactionDetail)
- [ ] Componentes: TerminalCard, TransactionTable, RefundForm, PaymentForm, ReconciliationWizard
- [ ] Stores: 1 (paymentsStore)

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Cambios en APIs de proveedores | Media | Alto | Versionado, abstraccion, monitoreo |
| Timeout en transacciones | Media | Alto | Retry, timeout configurable, fallback |
| Conciliacion incorrecta | Baja | Alto | Validaciones, alertas, revision manual |
| PCI DSS incumplimiento | Baja | Critico | No almacenar datos sensibles, usar tokens |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Cuentas de sandbox de MercadoPago y Clip
- [ ] Catalogo de asientos contables definido
- [x] Sin bloqueadores activos

## Definition of Done (DoD)

- [ ] Codigo implementado y revisado
- [ ] Tests pasando (unit, integration)
- [ ] Integracion MercadoPago funcional
- [ ] Integracion Clip funcional
- [ ] Webhooks procesando correctamente
- [ ] Asientos contables generandose
- [ ] Documentacion actualizada
- [ ] Inventarios actualizados
- [ ] Demo realizada
- [ ] Product Owner aprobo

---

## Documentacion Relacionada

- Requerimientos: `docs/03-requerimientos/RF-payments/`
- User Stories: `docs/05-user-stories/mgn-017/`
- DDL Spec: `docs/04-modelado/database-design/DDL-SPEC-integrations_payments.md`
- API MercadoPago: https://www.mercadopago.com.mx/developers/es/docs
- API Clip: https://developer.clip.mx/

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-05 | Creacion de epica | Requirements-Analyst |
| 2025-12-05 | Completado con Stakeholders, Riesgos, DoR/DoD | Requirements-Analyst |

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-05
**Ultima actualizacion:** 2025-12-05
