PaymentSvc
El Servicio de Pagos (PaymentSvc) gestiona todas las transacciones financieras del sistema, incluyendo procesamiento de pagos, reembolsos, facturación y registros financieros.
Responsabilidades Principales
PaymentSvc es responsable de:
- Procesamiento de Pagos: Integración con pasarelas de pago y procesadores
- Gestión de Reembolsos: Procesamiento completo o parcial de devoluciones
- Facturación: Generación y gestión de facturas para clientes
- Registros Financieros: Mantenimiento de transacciones para contabilidad
- Verificación de Fraude: Detección de transacciones sospechosas
Arquitectura
El servicio implementa una arquitectura hexagonal con CQRS y segregación de escritura/lectura:
Modelo de Datos
Entidades principales:
| Entidad | Descripción |
|---|---|
| Pago | Registro de transacción de pago |
| Método de Pago | Tarjeta, cuenta bancaria u otro método registrado |
| Factura | Documento formal para transacciones |
| Reembolso | Registro de devolución de fondos |
| Transacción | Registro genérico de movimiento financiero |
| Cliente Financiero | Datos fiscales y financieros del cliente |
Implementación CQRS
Comandos
ProcesarPago: Ejecutar un nuevo pagoAutorizarPago: Reservar fondos sin capturarCapturarPago: Confirmar un pago autorizadoProcesarReembolso: Ejecutar devolución completa o parcialGenerarFactura: Crear nueva facturaAnularTransacción: Cancelar transacción pendienteActualizarMétodoPago: Modificar datos de pago
Consultas
ObtenerHistorialPagos: Listar pagos con filtrosVerDetalleTransacción: Consultar transacción completaObtenerFacturas: Listar facturas disponiblesDescargarFactura: Obtener documento PDFConsultarEstadoReembolso: Verificar estadoObtenerMétodosPago: Listar métodos disponiblesObtenerEstadísticasFinancieras: Reportes agregados
Endpoints API
Pagos
POST /api/payments: Procesar nuevo pagoPOST /api/payments/authorize: Autorizar pagoPOST /api/payments/{id}/capture: Capturar pago autorizadoGET /api/payments: Listar pagos con filtrosGET /api/payments/{id}: Ver detalles de pago
Reembolsos
POST /api/refunds: Procesar reembolsoGET /api/refunds: Listar reembolsosGET /api/refunds/{id}: Ver detalles de reembolso
Facturas
GET /api/invoices: Listar facturasGET /api/invoices/{id}: Ver detalles de facturaGET /api/invoices/{id}/download: Descargar factura (PDF)POST /api/invoices/generate: Generar factura manualmente
Métodos de Pago
GET /api/payment-methods: Listar métodos de pagoPOST /api/payment-methods: Registrar nuevo métodoDELETE /api/payment-methods/{id}: Eliminar método
Eventos Publicados
El servicio publica los siguientes eventos en RabbitMQ:
PagoCompletado: Cuando se completa un pago exitosoPagoFallido: Cuando un intento de pago fallaReembolsoProcesado: Cuando se completa un reembolsoFacturaGenerada: Cuando se crea una nueva facturaFraudePotencialDetectado: Cuando se identifica actividad sospechosaMétodoPagoActualizado: Cuando se modifica un método de pago
Eventos Consumidos
El servicio escucha los siguientes eventos:
PedidoCreado(OrderSvc): Para procesar el pago inicialPedidoCancelado(OrderSvc): Para gestionar reembolso automáticoDevoluciónAprobada(OrderSvc): Para iniciar reembolsoClienteActualizado(UserSvc): Para actualizar datos fiscales
Integración con Pasarelas de Pago
Adaptadores para múltiples proveedores:
- Stripe: Procesamiento principal de tarjetas
- PayPal: Pagos desde cuentas PayPal
- Redsys: Pasarela para bancos españoles
- Transferencias Bancarias: Para pagos manuales
Tecnologías Utilizadas
- .NET 10: Framework base
- PostgreSQL: Base de datos principal
- Dapper: Micro ORM para acceso a datos
- RabbitMQ: Sistema de mensajería para eventos
- Redis: Caché y bloqueos distribuidos
- Hangfire: Procesamiento de trabajos programados
- Serilog: Logging estructurado
- Polly: Gestión de reintentos y resiliencia
Seguridad y Cumplimiento
- Encriptación de datos sensibles (PCI DSS)
- Tokenización de información de tarjetas
- Auditoría completa de todas las operaciones
- Cumplimiento con GDPR para datos financieros
- Doble factor para operaciones de alto riesgo
- Sistema de alertas por actividad inusual
Resiliencia y Recuperación
- Transacciones distribuidas con Sagas
- Reintentos automáticos con backoff exponencial
- Procesamiento asíncrono para operaciones largas
- Circuito breaker para servicios externos
- Estado idempotente para operaciones críticas
Despliegue
- Despliegue directo en servidores dedicados
- Alta disponibilidad: múltiples instancias
- Copias de seguridad diarias
- Actualizaciones Blue/Green para minimizar tiempo de inactividad
Monitoreo
- Dashboard financiero en tiempo real
- Alertas en tiempo real para transacciones fallidas
- Monitoreo de tasas de éxito por pasarela
- Detección de anomalías en patrones de pago
- Métricas de rendimiento y latencia
- Logs estructurados con correlación entre servicios