π Transportes Suroeste - Diagramas de Flujo
1. Diagrama de Secuencia - Flujo de Pago
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Sistema de β β API Gateway β β ePayco β β Banco β
β Tickets β β (Este Sistema) β β β β β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β β β
β 1. POST /payments β β β
β (ticket_ref, amount) β β β
βββββββββββββββββββββββ>β β β
β β β β
β β 2. Validar request β β
β β Crear transacciΓ³n β β
β β Cifrar datos β β
β β β β
β 3. Response β β β
β {transaction_uuid, β β β
β payment_url} β β β
β<βββββββββββββββββββββββ β β
β β β β
β 4. Usuario va a β β β
β payment_url β β β
β β β β
β β 5. Tokenizar tarjeta β β
β βββββββββββββββββββββββ>β β
β β β β
β β 6. Token response β β
β β<βββββββββββββββββββββββ β
β β β β
β β 7. Procesar pago β β
β βββββββββββββββββββββββ>β β
β β β 8. Autorizar β
β β βββββββββββββββββββββββ>β
β β β β
β β β 9. Respuesta β
β β β<βββββββββββββββββββββββ
β β β β
β β 10. Resultado pago β β
β β<βββββββββββββββββββββββ β
β β β β
β β 11. Actualizar BD β β
β β Log auditorΓa β β
β β β β
β 12. Webhook β β β
β {status: approved} β β β
β<βββββββββββββββββββββββ β β
β β β β
β 13. Confirmar ticket β β β
β Enviar email β β β
β β β β
2. Diagrama de Estados de TransacciΓ³n
βββββββββββββββ
β INICIO β
ββββββββ¬βββββββ
β
βΌ
βββββββββββββββ
βββββββ PENDING βββββββ
β ββββββββ¬βββββββ β
β β β
Timeout Procesar Cancelar
β β β
βΌ βΌ βΌ
βββββββββββ βββββββββββββββ βββββββββββ
β EXPIRED β β PROCESSING β βCANCELLEDβ
βββββββββββ ββββββββ¬βββββββ βββββββββββ
β
ββββββββββββββΌβββββββββββββ
β β β
Aprobado Rechazado Error
β β β
βΌ βΌ βΌ
ββββββββββββ ββββββββββββ ββββββββββ
β APPROVED β β REJECTED β β FAILED β
ββββββ¬ββββββ ββββββββββββ ββββββββββ
β
Reembolso
β
βΌ
ββββββββββββ
β REFUNDED β
ββββββββββββ
3. Diagrama de Arquitectura
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAPA DE PRESENTACIΓN β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β public/index.php β β
β β (Router + Manejo de errores) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAPA DE MIDDLEWARE β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
β β Security β β RateLimiter β β Auth β β Input Validator β β
β β Middleware β β β β Middleware β β β β
β β - Headers β β - Anti-DDoS β β - API Key β β - SanitizaciΓ³n β β
β β - HTTPS β β - IP Block β β - HMAC β β - ValidaciΓ³n β β
β β - XSS/SQLi β β β β - Timestamp β β β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAPA DE CONTROLADORES β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ApiController β β
β β - createPayment() - processPayment() - getPayment() β β
β β - getPaymentByTicket() - handleCallback() - healthCheck() β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAPA DE SERVICIOS β
β ββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββββββββ β
β β PaymentService β β EncryptionServiceβ β LogService β β
β β - createPayment β β - encrypt/decryptβ β - transaction() β β
β β - processCard β β - hashPassword β β - security() β β
β β - callback β β - sign/verify β β - audit() β β
β β - getStatus β β - generateUuid β β - access() β β
β ββββββββββ¬ββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββ β
β β ePayco SDK β β
β β - token.create β β
β β - charge.create β β
β β - customer.createβ β
β ββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CAPA DE DATOS β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Database (PDO) β β
β β Prepared Statements - PrevenciΓ³n SQL Injection β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββββββ β
β βapi_clientsβ βtransactionsβ βaudit_trailβ β security β βrate_limit β β
β β β β β β β β _events β β_tracking β β
β βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4. Diagrama de Casos de Uso
βββββββββββββββββββββββββββββββββββββββββββ
β Sistema de Pagos β
β Transportes Suroeste β
βββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββ ββββββββββββ
β Sistema β β Admin β
β Tickets β β Sistema β
ββββββ¬ββββββ ββββββ¬ββββββ
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββ UC1: Crear TransacciΓ³n de Pago β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββ UC2: Consultar Estado de TransacciΓ³n β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββ UC3: Consultar por Referencia de Ticket β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββ UC4: Recibir NotificaciΓ³n Webhook βββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β UC5: Verificar Estado del Servicio (Health) βββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β UC6: Gestionar Clientes API βββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β UC7: Consultar Logs de AuditorΓa βββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β UC8: Generar Reportes de ConciliaciΓ³n βββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββ΄ββββββ ββββββ΄ββββββ
β ePayco β β Banco β
β β β β
ββββββββββββ ββββββββββββ
ACTORES:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ Sistema de Tickets: Sistema externo que vende los boletos de autobΓΊs
β’ Admin Sistema: Administrador de la pasarela de pagos
β’ ePayco: Proveedor de servicios de pago
β’ Banco: Entidad financiera que procesa la transacciΓ³n
5. Flujo de Datos Sensibles (Cifrado)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FLUJO DE DATOS SENSIBLES β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ENTRADA PROCESO ALMACENAMIENTO
βββββββ βββββββ ββββββββββββββ
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
β payer_email β ββββββ> β AES-256-GCM β ββββββ> β Campo cifrado β
β (texto plano)β β + HMAC-SHA512 β β en BD β
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
β payer_doc β ββββββ> β AES-256-GCM β ββββββ> β Campo cifrado β
β (texto plano)β β + HMAC-SHA512 β β en BD β
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
β payer_name β ββββββ> β AES-256-GCM β ββββββ> β Campo cifrado β
β (texto plano)β β + HMAC-SHA512 β β en BD β
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
β card_number β ββββββ> β ePayco Token β ββββββ> β Solo ΓΊltimos 4 β
β (texto plano)β β (nunca se β β dΓgitos en BD β
ββββββββββββββββ β almacena) β ββββββββββββββββββββ
ββββββββββββββββββ
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
β api_secret β ββββββ> β Argon2id β ββββββ> β Hash en BD β
β (texto plano)β β (one-way hash)β β (irreversible) β
ββββββββββββββββ ββββββββββββββββββ ββββββββββββββββββββ
ALGORITMOS UTILIZADOS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β’ Cifrado simΓ©trico: AES-256-GCM (autenticado)
β’ Integridad: HMAC-SHA512
β’ Hash de contraseΓ±as: Argon2id (memory-hard)
β’ Firmas: HMAC-SHA512
β’ GeneraciΓ³n de claves: random_bytes() (CSPRNG)