Sprint 3-4 deliverables: - 28 epics documented (MCH-001 to MCH-028) - 7 development phases fully documented - DATABASE_INVENTORY.yml, BACKEND_INVENTORY.yml, FRONTEND_INVENTORY.yml - Task traces for database and frontend 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.6 KiB
3.6 KiB
MCH-005: Integraciones de Pago
Metadata
- Codigo: MCH-005
- Fase: 1 - MVP Core
- Prioridad: P0
- Estado: Completado
- Fecha inicio: 2026-01-06
- Fecha fin: 2026-01-07
Descripcion
Integracion con proveedores de pago populares en Mexico para aceptar pagos con tarjeta: Mercado Pago (lector bluetooth), Clip, y efectivo. Soporte para suscripciones via Stripe.
Objetivos
- Integracion Mercado Pago Point
- Integracion Clip
- Registro de pagos en efectivo
- Stripe para suscripciones
- Conciliacion de pagos
Alcance
Incluido
- Mercado Pago Point (lector bluetooth)
- Clip (terminal)
- Efectivo (registro manual)
- Stripe (suscripciones y OXXO)
- Webhooks para confirmacion
Excluido
- CoDi/SPEI - MCH-024
- Pagos QR propios - fase posterior
- Terminales bancarias tradicionales
Proveedores
Mercado Pago
- Uso: Pagos con tarjeta en tienda
- Hardware: Point Bluetooth
- Comision: ~3.5%
- Integracion: SDK + Webhooks
Clip
- Uso: Pagos con tarjeta en tienda
- Hardware: Terminal Clip
- Comision: ~3.6%
- Integracion: SDK + Webhooks
Stripe
- Uso: Suscripciones, pagos en linea, OXXO
- Comision: ~3.6% + $3 MXN
- Integracion: API + Webhooks
Efectivo
- Uso: Pagos en efectivo
- Registro: Manual en POS
- Control: Corte de caja
Endpoints API
| Metodo | Endpoint | Descripcion |
|---|---|---|
| POST | /payments/intent | Crear intencion de pago |
| POST | /payments/confirm | Confirmar pago |
| GET | /payments/:id | Obtener pago |
| POST | /payments/webhook | Webhook de proveedores |
| GET | /payments/methods | Metodos disponibles |
Flujos de Pago
Pago con Tarjeta (MercadoPago/Clip)
1. Venta creada en POS
2. Empleado selecciona "Tarjeta"
3. Se envia monto a terminal
4. Cliente pasa tarjeta
5. Webhook confirma pago
6. Venta marcada como pagada
7. Ticket generado
Pago en Efectivo
1. Venta creada en POS
2. Empleado selecciona "Efectivo"
3. Ingresa monto recibido
4. Sistema calcula cambio
5. Venta registrada
6. Actualiza caja
Pago OXXO (Stripe)
1. Cliente solicita pago en OXXO
2. Sistema genera referencia Stripe
3. Se muestra codigo de barras
4. Cliente paga en OXXO
5. Webhook confirma (24-48h)
6. Pedido/suscripcion activada
Modelo de Datos
Tablas
payments (en sales schema)
- id, sale_id, provider, amount
- reference, status, metadata
- created_at, confirmed_at
payment_methods (por tenant)
- id, tenant_id, provider, credentials
- settings, active
Entregables
| Entregable | Estado | Archivo |
|---|---|---|
| payments.module | Completado | modules/payments/ |
| stripe.provider | Completado | providers/stripe.provider.ts |
| mercadopago.provider | Completado | providers/mercadopago.provider.ts |
| PaymentModal | Completado | components/pos/PaymentModal.tsx |
Dependencias
Depende de
- MCH-001 (Infraestructura)
- MCH-002 (Auth)
- MCH-004 (POS)
Bloquea a
- MCH-018 (Suscripciones)
- MCH-020 (Pagos online)
Criterios de Aceptacion
- Mercado Pago procesa pagos
- Webhooks se reciben correctamente
- Efectivo registra correctamente
- Stripe funciona para suscripciones
- Conciliacion de pagos funciona
Configuracion por Tenant
// tenant_integrations
{
provider: 'mercadopago',
credentials: {
access_token: 'encrypted...',
public_key: '...'
},
settings: {
point_device_id: '...'
}
}
Seguridad
- Credenciales encriptadas en BD
- Webhooks verificados con firma
- Logs de todas las transacciones
- PCI compliance delegado a proveedores
Ultima actualizacion: 2026-01-07