SecurePay es un sistema avanzado de simulación para el procesamiento de pagos electrónicos, diseñado para entornos de prueba, educación y desarrollo. Permite recrear el ciclo completo de una transacción con tarjeta, incluyendo validaciones, procesamiento bancario, verificación 3D Secure, pruebas masivas y análisis estadístico.
graph TD subgraph SecurePay_App_Core["SecurePay App Core (loader.js, main.js)"] direction LR A_Core[ ] end subgraph Modules direction TB Config["core/config.js"] Services["services/data.js (data-service.js)"] Payment["payment/ (payment, bank, ui, ws)"] Cards["cards/cards.js"] Statistics["statistics/stats.js (statistics.js)"] Store["store/ (store.js, store-data.js)"] BulkTesting["bulk-testing/ (bulk-tests.js)"] end %% Core to Module Connections SecurePay_App_Core --> Config SecurePay_App_Core --> Services SecurePay_App_Core --> Payment SecurePay_App_Core --> Cards SecurePay_App_Core --> Statistics SecurePay_App_Core --> Store SecurePay_App_Core --> BulkTesting %% Inter-Module Interactions Payment -->|uses| Services Store -->|uses| Services Store -->|uses| Payment Cards -->|uses| Services Payment -->|feeds| Statistics BulkTesting -->|feeds| Statistics %% Styling (optional, can be done via init) classDef core fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#0369a1 classDef module fill:#f0f9ff,stroke:#7dd3fc,stroke-width:1.5px,color:#0c4a6e class SecurePay_App_Core core class Config,Services,Payment,Cards,Statistics,Store,BulkTesting module
Módulo | Descripción |
---|---|
loader.js | Gestiona la carga inicial de la aplicación, incluyendo la configuración, datos de prueba y la inicialización de componentes clave. Se asegura de que el DOM esté completamente cargado antes de ejecutar scripts principales. También maneja la carga de datos desde LocalStorage y la configuración de elementos de la interfaz de usuario. |
payment.js | Orquesta el proceso de pago completo. Interactúa con el formulario de pago, valida los datos de la tarjeta, se comunica con el `bank-system.js` para la autorización y actualiza la interfaz de usuario a través de `bank-ui.js` para reflejar el resultado de la transacción. Maneja diferentes escenarios de pago, incluyendo pagos exitosos, rechazados y errores. |
bank-system.js | Simula la lógica interna de un sistema bancario o procesador de pagos. Es responsable de verificar los detalles de la tarjeta, el saldo (simulado), y decidir si una transacción es aprobada o rechazada. Implementa reglas de negocio para la autorización de pagos, como la validación de CVV, fecha de caducidad, y la simulación de la autenticación 3D Secure. |
bank-ui.js | Controla los aspectos de la interfaz de usuario relacionados con la simulación del proceso de pago y la interacción con el banco. Muestra mensajes de estado, actualiza visualmente el estado de la transacción (por ejemplo, mostrando un mensaje de "procesando", "aprobado" o "rechazado"), y maneja la visualización de la interfaz de simulación 3D Secure. |
statistics.js | Recopila y muestra estadísticas sobre las transacciones procesadas. Calcula métricas como el número total de transacciones, tasas de aprobación/rechazo, y puede generar gráficos o tablas para visualizar estos datos. Ayuda a los usuarios a entender el rendimiento y los patrones de las transacciones simuladas. |
bulk-tests.js | Permite a los usuarios realizar pruebas masivas de transacciones. Los usuarios pueden cargar un conjunto de datos de prueba (por ejemplo, desde un archivo CSV) y el script procesará cada transacción simulada, registrando los resultados. Es útil para probar el sistema bajo carga o con una variedad de escenarios de tarjetas y transacciones. |
data-service.js | Actúa como una capa de abstracción para la gestión de datos. Podría ser responsable de cargar datos de configuración, datos de prueba, o interactuar con el LocalStorage para persistir y recuperar información del estado de la aplicación, como las tarjetas guardadas o los resultados de las pruebas. |
store.js | Gestiona la lógica de la tienda de demostración (`store.html`). Esto incluye la visualización de productos, la adición de productos al carrito, y la iniciación del proceso de pago cuando el usuario decide comprar. Interactúa con `store-data.js` para obtener la información de los productos. |
store-data.js | Proporciona los datos de los productos para la tienda de demostración. Contiene un catálogo de artículos con sus nombres, precios, descripciones e imágenes, que son utilizados por `store.js` para renderizar la tienda. |
cards.js | Maneja la funcionalidad relacionada con la gestión de tarjetas de crédito/débito de prueba. Permite a los usuarios agregar, visualizar, y posiblemente eliminar tarjetas de prueba que se pueden utilizar en las simulaciones de pago. Interactúa con `data-service.js` para persistir esta información. |
config.js | Gestiona la configuración de la aplicación. Permite a los usuarios personalizar diversos parámetros de la simulación, como los tiempos de respuesta del banco, las tasas de error simuladas, o la activación/desactivación de ciertas funcionalidades como 3D Secure. Los cambios se guardan y se aplican en toda la aplicación. |
main.js | Es el script principal que coordina la inicialización y el comportamiento general de la aplicación. Puede ser responsable de configurar los manejadores de eventos globales, inicializar los diferentes módulos y asegurar que todos los componentes funcionen juntos de manera cohesiva. |
websocket.js | Implementa la comunicación a través de WebSockets. En el contexto de SecurePay, esto se utiliza para simular la comunicación en tiempo real que podría ocurrir durante un proceso de pago, como la actualización del estado de una transacción o la recepción de notificaciones del sistema bancario simulado. |
La aplicación SecurePay se compone de varias interfaces HTML que proporcionan la funcionalidad al usuario. A continuación, se describen las principales:
Archivo HTML | Descripción |
---|---|
index.html | Es la página principal de la aplicación. Proporciona la interfaz para realizar una simulación de pago individual. Incluye el formulario para ingresar los detalles de la tarjeta, el monto y seleccionar opciones de simulación. También muestra el resultado de la transacción. |
procesador.html | Simula la página de un procesador de pagos o la interfaz de autenticación 3D Secure. Se muestra durante el proceso de pago si la autenticación 3D Secure está habilitada, solicitando al usuario que ingrese un código de verificación (simulado). |
cards.html | Permite a los usuarios gestionar un conjunto de tarjetas de prueba. Los usuarios pueden agregar nuevas tarjetas con diferentes características (válida, inválida, fondos insuficientes, etc.) para usarlas en las simulaciones. |
config.html | Proporciona una interfaz para configurar los parámetros de simulación de la aplicación. Esto puede incluir la configuración de tiempos de respuesta, tasas de error, y otras variables que afectan el comportamiento del sistema bancario simulado. |
store.html | Presenta una tienda de demostración simple con productos que los usuarios pueden agregar a un carrito y "comprar" utilizando el sistema de simulación de pagos. Es útil para probar el flujo de pago en un contexto de comercio electrónico. |
banco.html | Representa la interfaz del "banco" o sistema donde se pueden ver los resultados de las transacciones y, potencialmente, el estado de las cuentas simuladas. Podría mostrar un log de transacciones o un resumen del comportamiento del sistema bancario. |
docs.html | Esta misma página de documentación. Proporciona información detallada sobre la arquitectura, módulos, y uso de la aplicación SecurePay. |
La página config.html
permite a los usuarios personalizar el comportamiento del simulador SecurePay. Estas configuraciones afectan directamente cómo se procesan las transacciones simuladas y qué escenarios se pueden probar. Las opciones se guardan en el LocalStorage del navegador para persistir entre sesiones.
procesador.html
para ingresar un código de 6 dígitos.index.html
con datos de prueba válidos, agilizando las pruebas repetitivas.procesador.html
antes de que la transacción falle por tiempo expirado.SecurePay permite simular varios flujos de trabajo comunes en los sistemas de pago electrónico. A continuación se describen los más importantes:
index.html
(o inicia un pago desde store.html
).config.html
:
procesador.html
.payment.js
y bank-system.js
) procesa la transacción.bank-ui.js
).statistics.js
).bank-system.js
determina que la transacción debe ser rechazada por fondos insuficientes.bank-ui.js
).procesador.html
repetidamente (superando los intentos configurados) o el tiempo de espera expira.bank-system.js
) rechaza la transacción debido a fallo en la autenticación 3D Secure.bank-ui.js
).cards.html
.data-service.js
(LocalStorage) para uso futuro.bulk-tests.js
).bulk-tests.js
procesa cada transacción simulada.SecurePay implementa varias validaciones en el lado del cliente (JavaScript) para asegurar la integridad de los datos ingresados y simular un comportamiento realista de un sistema de pagos. Estas validaciones se realizan principalmente en payment.js
y cards.js
.
index.html
)cards.html
)Similares a las del formulario de pago, asegurando que las tarjetas de prueba guardadas tengan datos coherentes.
procesador.html
)SecurePay incluye una simulación del proceso de autenticación 3D Secure (como Verified by Visa o Mastercard SecureCode). Esta es una capa adicional de seguridad para las transacciones en línea.
config.html
.procesador.html
después de ingresar los datos de la tarjeta.procesador.html
, se solicita al usuario que ingrese un código de autenticación de 6 dígitos que simula ser enviado a su teléfono.bank-ui.js
maneja la visualización y la interacción en esta página, mientras que bank-system.js
valida el código ingresado.config.html
)procesador.html
.Esta simulación ayuda a los desarrolladores y testers a comprender el flujo de usuario cuando 3D Secure está involucrado y a probar cómo sus sistemas manejan los diferentes resultados de este paso de autenticación.
SecurePay utiliza WebSockets para simular la comunicación en tiempo real entre el cliente (navegador) y un servidor de procesamiento de pagos o sistema bancario. Esto permite una experiencia más dinámica y realista, especialmente para mostrar actualizaciones de estado de transacciones o notificaciones.
js/payment/websocket.js
)websocket.js
es el encargado de establecer y gestionar la conexión WebSocket.ws://localhost:8080
). Es importante notar que para que esta funcionalidad opere correctamente, debe existir un servidor WebSocket escuchando en dicha dirección y puerto, capaz de entender los mensajes enviados por SecurePay y responder de manera adecuada. La aplicación SecurePay por sí misma (como conjunto de archivos HTML/JS estáticos) no incluye este servidor WebSocket; este debe ser un componente separado si se desea una comunicación real.onopen
), cierre (onclose
), y error (onerror
) de la conexión.sendMessage
): Proporciona una función para enviar datos (generalmente objetos JSON serializados) al servidor WebSocket. Esto se usaría, por ejemplo, para enviar los detalles de una transacción para su procesamiento.onmessage
): Define cómo se manejan los mensajes recibidos del servidor. Estos mensajes podrían ser actualizaciones del estado de la transacción (ej. "procesando", "aprobado", "rechazado"), solicitudes de información adicional, o notificaciones. El script parsea el mensaje (asumiendo que es JSON) y puede disparar eventos o llamar a otras funciones (ej. en bank-ui.js
) para actualizar la interfaz de usuario.websocket.js
está preparado para comunicación real, si no hay un servidor WebSocket activo, la aplicación puede recurrir a una simulación local de estos eventos para mantener la funcionalidad (esto dependerá de cómo esté integrado websocket.js
con el resto de los módulos como payment.js
).El uso de WebSockets en SecurePay tiene como objetivo principal demostrar cómo una aplicación de pagos moderna podría interactuar con un backend para proporcionar feedback instantáneo al usuario durante el proceso de pago.
SecurePay proporciona una funcionalidad de estadísticas para rastrear y visualizar los resultados de las transacciones simuladas. Esta característica es gestionada principalmente por js/statistics/statistics.js
y los datos se visualizan en varias partes de la aplicación, incluyendo una sección dedicada en banco.html
o directamente en index.html
después de cada transacción.
statistics.js
es invocado para registrar el evento.Las estadísticas se presentan al usuario de varias maneras:
La página banco.html
suele ser el lugar centralizado para ver estas visualizaciones detalladas, aunque resúmenes pueden aparecer en otras páginas.
El módulo de estadísticas es crucial para que los usuarios puedan analizar el comportamiento del sistema de pagos simulado bajo diferentes condiciones y configuraciones, identificar patrones de error y evaluar el impacto de las configuraciones de simulación.
Documentación de las funciones y métodos expuestos por los módulos JavaScript de SecurePay. Incluye ejemplos de uso y descripción de parámetros y retornos.
payment.processPayment(amount, cardDetails)
: Procesa un pago con el monto y detalles de la tarjeta proporcionados.payment.onPaymentSuccess(callback)
: Registra un callback que se ejecuta cuando el pago es exitoso.payment.onPaymentError(callback)
: Registra un callback que se ejecuta cuando hay un error en el pago.
statistics.getTotalTransactions()
: Retorna el número total de transacciones procesadas.statistics.getApprovalRate()
: Retorna la tasa de aprobación de transacciones.statistics.getRejectionRate()
: Retorna la tasa de rechazo de transacciones.
Sección dedicada a ayudar a los usuarios a resolver problemas comunes que pueden surgir durante el uso de SecurePay.
Instrucciones sobre cómo desplegar SecurePay en un entorno de producción, incluyendo requisitos del servidor, configuración de base de datos, y pasos para la instalación.
SecurePay no requiere una base de datos en el servidor, ya que utiliza almacenamiento local (LocalStorage) para guardar la información de las transacciones y configuración.
Información para desarrolladores que deseen contribuir al proyecto o personalizar SecurePay para sus necesidades.
El código fuente de SecurePay está organizado en módulos JavaScript independientes, cada uno encargado de una parte específica de la funcionalidad:
loader.js
: Carga y configuración inicial.payment.js
: Procesamiento de pagos.bank-system.js
: Simulación del sistema bancario.statistics.js
: Generación de estadísticas.bulk-tests.js
: Pruebas masivas.data-service.js
: Gestión de datos.store.js
: Lógica de la tienda de demostración.cards.js
: Gestión de tarjetas de prueba.config.js
: Configuración de la aplicación.main.js
: Script principal de la aplicación.websocket.js
: Comunicación por WebSocket.SecurePay utiliza TailwindCSS para el diseño de la interfaz, lo que permite una personalización fácil y rápida de los estilos.
Las contribuciones son bienvenidas. Por favor, siga las pautas de contribución en el repositorio oficial.
SecurePay incluye un conjunto de pruebas automatizadas para asegurar la calidad y funcionalidad del sistema. Estas pruebas cubren los principales flujos de trabajo y validaciones.
Para ejecutar las pruebas, abra la consola del navegador y ejecute:
npm run test
SecurePay está diseñado para ser eficiente y rápido, incluso en entornos de bajo recurso. Se han implementado varias optimizaciones para asegurar un rendimiento fluido.
Los recursos se cargan de manera asíncrona y se minimiza el uso de bibliotecas pesadas. Además, se utiliza almacenamiento en caché para acelerar la carga de datos frecuentes.
config.html
).
SecurePay es software libre distribuido bajo la Licencia GNU GPL v3.
Consulte el archivo LICENSE
para más detalles.