Changes include: - Updated architecture documentation - Enhanced module definitions (OQI-001 to OQI-008) - ML integration documentation updates - Trading strategies documentation - Orchestration and inventory updates - Docker configuration updates 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
218 lines
6.8 KiB
Markdown
218 lines
6.8 KiB
Markdown
---
|
|
id: "MAP-OQI-005-payments-stripe"
|
|
title: "Mapa de OQI-005-payments-stripe"
|
|
type: "Index"
|
|
project: "trading-platform"
|
|
updated_date: "2026-01-04"
|
|
---
|
|
|
|
# _MAP: OQI-005 - Pagos y Stripe
|
|
|
|
**Última actualización:** 2025-12-05
|
|
**Estado:** Parcialmente Implementado
|
|
**Versión:** 1.0.0
|
|
|
|
---
|
|
|
|
## Propósito
|
|
|
|
Esta épica implementa el sistema completo de pagos integrado con Stripe, incluyendo suscripciones (Free, Basic, Pro, Premium), compra de cursos, wallet interno, depósitos para inversión y facturación automática.
|
|
|
|
---
|
|
|
|
## Contenido del Directorio
|
|
|
|
```
|
|
OQI-005-payments-stripe/
|
|
├── README.md # Documentación técnica existente
|
|
├── _MAP.md # Este archivo - índice
|
|
├── requerimientos/ # Documentos de requerimientos funcionales
|
|
│ ├── RF-PAY-001-suscripciones.md # Planes de suscripción
|
|
│ ├── RF-PAY-002-checkout.md # Checkout y pagos
|
|
│ ├── RF-PAY-003-wallet.md # Wallet interno
|
|
│ ├── RF-PAY-004-facturacion.md # Facturación automática
|
|
│ ├── RF-PAY-005-webhooks.md # Webhooks de Stripe
|
|
│ └── RF-PAY-006-reembolsos.md # Sistema de reembolsos
|
|
├── especificaciones/ # Especificaciones técnicas
|
|
│ ├── ET-PAY-001-database.md # Modelo de datos
|
|
│ ├── ET-PAY-002-stripe-api.md # Integración Stripe
|
|
│ ├── ET-PAY-003-webhooks.md # Manejo de webhooks
|
|
│ ├── ET-PAY-004-api.md # Endpoints REST
|
|
│ ├── ET-PAY-005-frontend.md # Componentes React
|
|
│ └── ET-PAY-006-security.md # Seguridad PCI DSS
|
|
├── historias-usuario/ # User Stories
|
|
│ ├── US-PAY-001-ver-planes.md
|
|
│ ├── US-PAY-002-suscribirse.md
|
|
│ ├── US-PAY-003-cambiar-plan.md
|
|
│ ├── US-PAY-004-cancelar-suscripcion.md
|
|
│ ├── US-PAY-005-comprar-curso.md
|
|
│ ├── US-PAY-006-agregar-metodo-pago.md
|
|
│ ├── US-PAY-007-ver-facturas.md
|
|
│ ├── US-PAY-008-depositar-wallet.md
|
|
│ ├── US-PAY-009-retirar-wallet.md
|
|
│ ├── US-PAY-010-ver-historial.md
|
|
│ ├── US-PAY-011-solicitar-reembolso.md
|
|
│ └── US-PAY-012-actualizar-tarjeta.md
|
|
└── implementacion/ # Trazabilidad de implementación
|
|
└── TRACEABILITY.yml
|
|
```
|
|
|
|
---
|
|
|
|
## Requerimientos Funcionales
|
|
|
|
| ID | Nombre | Prioridad | SP | Estado |
|
|
|----|--------|-----------|-----|--------|
|
|
| RF-PAY-001 | Planes de Suscripción | P0 | 8 | ✅ Implementado |
|
|
| RF-PAY-002 | Checkout y Pagos | P0 | 8 | ✅ Implementado |
|
|
| RF-PAY-003 | Wallet Interno | P1 | 8 | Pendiente |
|
|
| RF-PAY-004 | Facturación Automática | P1 | 5 | Pendiente |
|
|
| RF-PAY-005 | Webhooks Stripe | P0 | 5 | ✅ Implementado |
|
|
| RF-PAY-006 | Sistema de Reembolsos | P2 | 6 | Pendiente |
|
|
|
|
**Total:** 40 SP
|
|
|
|
---
|
|
|
|
## Especificaciones Técnicas
|
|
|
|
| ID | Nombre | Componente | Estado |
|
|
|----|--------|------------|--------|
|
|
| ET-PAY-001 | Database | Database | ✅ Schema existe |
|
|
| ET-PAY-002 | Stripe API | Backend | ✅ Implementado |
|
|
| ET-PAY-003 | Webhooks | Backend | ✅ Implementado |
|
|
| ET-PAY-004 | API REST | Backend | ✅ Parcial |
|
|
| ET-PAY-005 | Frontend | Frontend | Pendiente |
|
|
| ET-PAY-006 | Security | Backend | ✅ Implementado |
|
|
|
|
---
|
|
|
|
## Historias de Usuario
|
|
|
|
| ID | Historia | Prioridad | SP | Estado |
|
|
|----|----------|-----------|-----|--------|
|
|
| US-PAY-001 | Ver planes de suscripción | P0 | 2 | Pendiente |
|
|
| US-PAY-002 | Suscribirse a un plan | P0 | 5 | ✅ Backend listo |
|
|
| US-PAY-003 | Cambiar plan de suscripción | P1 | 3 | Pendiente |
|
|
| US-PAY-004 | Cancelar suscripción | P1 | 3 | Pendiente |
|
|
| US-PAY-005 | Comprar curso individual | P1 | 3 | ✅ Backend listo |
|
|
| US-PAY-006 | Agregar método de pago | P0 | 3 | Pendiente |
|
|
| US-PAY-007 | Ver historial de facturas | P1 | 3 | Pendiente |
|
|
| US-PAY-008 | Depositar en wallet | P1 | 5 | Pendiente |
|
|
| US-PAY-009 | Retirar de wallet | P2 | 5 | Pendiente |
|
|
| US-PAY-010 | Ver historial de transacciones | P1 | 2 | Pendiente |
|
|
| US-PAY-011 | Solicitar reembolso | P2 | 3 | Pendiente |
|
|
| US-PAY-012 | Actualizar tarjeta | P1 | 3 | Pendiente |
|
|
|
|
**Total:** 40 SP
|
|
|
|
---
|
|
|
|
## Planes de Suscripción
|
|
|
|
| Plan | Precio | Stripe Price ID | Features |
|
|
|------|--------|-----------------|----------|
|
|
| **Free** | $0/mes | - | Paper trading, cursos básicos, 3 señales/día |
|
|
| **Basic** | $19/mes | `price_1Sb3k64dPtEGmLmpeAdxvmIu` | Trading real, 10 señales/día, 1 agente |
|
|
| **Pro** | $49/mes | `price_1Sb3k64dPtEGmLmpm5n5bbJH` | Señales ilimitadas, 3 agentes, soporte prioritario |
|
|
| **Premium** | $99/mes | `price_1Sb3k74dPtEGmLmpHfLpUkvQ` | API access, white label, soporte dedicado |
|
|
|
|
---
|
|
|
|
## Dependencias
|
|
|
|
### Depende de:
|
|
|
|
- **OQI-001:** Autenticación (usuarios) - ✅ Completado
|
|
|
|
### Bloquea:
|
|
|
|
- **OQI-002:** Education (compra de cursos premium)
|
|
- **OQI-004:** Investment (depósitos)
|
|
|
|
---
|
|
|
|
## Stack Técnico
|
|
|
|
| Capa | Tecnología | Uso |
|
|
|------|------------|-----|
|
|
| Frontend | React + Stripe Elements | UI de pagos |
|
|
| Backend | Express.js + Stripe SDK | API |
|
|
| Database | PostgreSQL | Transacciones |
|
|
| Payments | Stripe | Procesamiento |
|
|
|
|
---
|
|
|
|
## Webhooks Configurados
|
|
|
|
| Evento | Acción |
|
|
|--------|--------|
|
|
| `payment_intent.succeeded` | Actualizar pago, otorgar acceso |
|
|
| `payment_intent.payment_failed` | Notificar usuario, marcar fallido |
|
|
| `customer.subscription.created` | Activar suscripción |
|
|
| `customer.subscription.updated` | Sincronizar estado |
|
|
| `customer.subscription.deleted` | Cancelar acceso |
|
|
| `invoice.paid` | Registrar factura pagada |
|
|
| `invoice.payment_failed` | Notificar problema de pago |
|
|
|
|
---
|
|
|
|
## Seguridad
|
|
|
|
### PCI DSS Compliance
|
|
- Nunca almacenar números de tarjeta
|
|
- Usar Stripe Elements (tokenización)
|
|
- Validar webhook signatures
|
|
- HTTPS obligatorio
|
|
|
|
### Rate Limiting
|
|
| Endpoint | Límite |
|
|
|----------|--------|
|
|
| `/payments/*` | 20/hora |
|
|
| `/webhooks` | Ilimitado (validación Stripe) |
|
|
|
|
---
|
|
|
|
## Criterios de Aceptación
|
|
|
|
### Funcionales
|
|
|
|
- [ ] Usuarios pueden ver y comparar planes
|
|
- [ ] Checkout con Stripe Elements funciona
|
|
- [ ] Suscripciones se activan automáticamente
|
|
- [ ] Webhooks procesan todos los eventos
|
|
- [ ] Facturas disponibles para descarga
|
|
- [ ] Wallet permite depósitos y retiros
|
|
|
|
### No Funcionales
|
|
|
|
- [ ] Checkout carga en < 2 segundos
|
|
- [ ] 99.9% uptime en procesamiento de pagos
|
|
- [ ] Transacciones atómicas
|
|
|
|
### Técnicos
|
|
|
|
- [ ] Cobertura de tests > 80%
|
|
- [ ] Logs de auditoría para pagos
|
|
- [ ] Modo test/producción separados
|
|
|
|
---
|
|
|
|
## Hitos
|
|
|
|
| Hito | Entregables | Target |
|
|
|------|-------------|--------|
|
|
| M1 | Planes + checkout básico | Sprint 5 ✅ |
|
|
| M2 | Suscripciones completas | Sprint 5 |
|
|
| M3 | Wallet + facturación | Sprint 6 |
|
|
| M4 | Reembolsos + polish | Sprint 6 |
|
|
|
|
---
|
|
|
|
## Referencias
|
|
|
|
- [README Técnico](./README.md)
|
|
- [Stripe Dashboard](https://dashboard.stripe.com)
|
|
- [Vision del Producto](../../00-vision-general/VISION-PRODUCTO.md)
|
|
- [_MAP Fase MVP](../_MAP.md)
|