Aprenda a construir una capa de datos operativos (ODL) para desbloquear datos de pago aislados y así potenciar aplicaciones modernas.
Casos de uso: Pagos, Modernización
Industrias: Servicios financieros
Productos y herramientas: MongoDB Atlas, MongoDB Enterprise Advanced, Clústeres Atlas, Flujos de cambios deMongoDB, Búsquedaen Atlas, Gráficos Atlas, Auditoría y seguridad empresarialde Atlas, ConectorMongoDB Kafka, Cifradoconsultable, Series temporales
Socios: Confluent(para integración con Apache Kafka), AWS (para infraestructura y servicios en la nube)
Resumen de la solución
La industria de pagos actual cambia rápidamente y las empresas se esfuerzan por ofrecer soluciones de pago seguras y fáciles de usar. Esta necesidad se ve impulsada por factores como las nuevas regulaciones, las expectativas de los clientes y la competencia en el mercado. Las organizaciones de servicios financieros pueden usar MongoDB para modernizar sus sistemas de pago.
Esta solución muestra cómo usar MongoDB para crear un ODL. Puede implementar un ODL sobre sistemas heredados para modernizar su arquitectura sin la dificultad ni el riesgo que conlleva reemplazar completamente los sistemas heredados.
Modernización de los sistemas de pago
Varios factores impulsan la modernización de los sistemas de pago:
Pagos en tiempo real: los clientes y las empresas esperan que los pagos se procesen de inmediato.
Cambios regulatorios: Nuevas leyes y regulaciones, como la PSD2 en Europa, fomentan sistemas de pago más abiertos y flexibles.
Expectativas del cliente: la gente quiere que los procesos de pago sean fluidos e integrados en diferentes plataformas.
Banca abierta: La banca abierta hace que el sector financiero sea más competitivo e innovador, permitiendo el desarrollo de nuevos servicios de pago.
Competencia: Las nuevasempresas Fintech ofrecen nuevas soluciones de pago, desafiando a las instituciones financieras tradicionales a actualizar sus sistemas.
Desafíos de la modernización
Actualizar los sistemas de pago es un desafío debido a:
Sistemas complejos: Los sistemas de pago involucran muchas partes y regulaciones diferentes, lo que hace que los cambios sean complicados.
Tecnología antigua: Los sistemas obsoletos ralentizan la innovación y dificultan el cumplimiento de los estándares actuales.
Costos elevados: Actualizar sistemas antiguos puede ser costoso y consumir mucho tiempo.
Deuda técnica: Los atajos previos en el diseño del sistema pueden limitar el crecimiento y la adaptabilidad futuros.
En esta solución de ejemplo, puede aprender cómo utilizar MongoDB para modernizar los sistemas de pago.
Enfoques de la modernización
Las empresas están adoptando las siguientes estrategias al actualizar sus sistemas:
Diseño impulsado por el dominio: al alinear el desarrollo del sistema con las necesidades comerciales, el diseño impulsado por el dominio garantiza que los cambios tecnológicos sirvan a los objetivos comerciales.
Arquitectura de microservicios: al pasar de una arquitectura monolítica a una arquitectura de microservicios, puede actualizar y escalar su sistema de manera más eficiente.
Cómo MongoDB apoya la modernización
Las siguientes características de MongoDB respaldan los esfuerzos de modernización de pagos:
Modelo de documento flexible: el modelo de documento de MongoDB le permite incorporar nuevos tipos de pago y estructuras de datos, lo que garantiza que su sistema pueda evolucionar con el mercado.
Capa de datos operativa: MongoDB presenta una capa de datos unificada que simplifica el acceso a los datos en varios servicios, lo que es crucial para crear soluciones de pago integradas.
Compatibilidad con las mejores prácticas: MongoDB proporciona a las empresas las herramientas que necesitan para seguir las mejores prácticas de la industria, como transacciones seguras y análisis en tiempo real.
Arquitecturas de Referencia
El siguiente diagrama detalla la arquitectura utilizada por esta solución de pagos. Para obtener más información sobre cómo funciona con MongoDB, visite nuestra Página de pagos en tiempo real.

Figura 1. Diagrama de la arquitectura de la solución de pagos
Enfoque del modelo de datos
Esta solución se centra en las relaciones entre entidades como cuentas de usuario, transacciones, cuentas bancarias y métodos de pago. Incluye atributos de datos e información detallada de cada entidad.
Arquitectura de microservicios
Una arquitectura de microservicios fragmenta grandes aplicaciones monolíticas en partes más pequeñas. Permite un desarrollo más rápido, modularidad, flexibilidad y escalabilidad, resiliencia, alineación organizacional y reducción de costos.
La arquitectura de microservicios utilizada en esta solución se divide en los siguientes servicios:
Gestión de usuarios
Procesamiento de transacciones
Historial de transacciones
Reconciliación de cuentas
Verificación de pago
Presentación de informes
Notificaciones
Gestión de usuarios
Este servicio facilita la interacción entre usuarios y cuentas. El diagrama a continuación muestra el proceso de creación de cuentas.
El diagrama involucra las siguientes entidades:
Entidades de datos: Cuenta de usuario, Método de pago, Cuenta bancaria
Permisos: Lectura/escritura en cuenta de usuario, método de pago y cuenta bancaria
Entradas: Detalles del usuario, Detalles del método de pago, Detalles de la cuenta bancaria
Salidas: Confirmación de creación de cuenta de usuario, Confirmación de adición de método de pago, Confirmación de adición de cuenta bancaria

Figura 2. Flujo de creación de cuenta
Puedes ver una aplicación de este flujo en este repositorio de GitHub.
Procesamiento de transacciones
Este servicio gestiona operaciones relacionadas con transacciones, como iniciar, completar o reembolsar una transacción. En el siguiente diagrama, puedes ver el flujo principal para iniciar una transacción.
Este diagrama involucra las siguientes entidades:
Entidades de datos: Transacción, Cuenta bancaria
Permisos: Lectura/escritura en transacciones, lectura en cuentas bancarias
Entradas: Detalles de la transacción, como monto, remitente y receptor.
Salidas: Actualización del estado de la transacción, como pendiente, completada o fallida
Puedes ver una aplicación de este flujo en este repositorio de GitHub.

Figura 3. Flujo de transacciones
Este microservicio también se encarga de gestionar las transacciones de proveedores externos. Por ejemplo, la solución incluye una demostración de un usuario que recibe un pago de PayPal. El esquema flexible de MongoDB permite la variación en los documentos que representan las transacciones.
El siguiente diagrama muestra el proceso para la transacción simulada de PayPal.

Figura 4. Flujo de transacciones externas
Historial de transacciones
Este servicio se encarga del registro y archivo de transacciones. Involucra a las siguientes entidades:
Entidades de datos: Historial de transacciones, Cuenta de usuario
Permisos: Leer el historial de transacciones, Leer la cuenta de usuario
Entradas: Número de cuenta de usuario
Salidas: Datos del historial de transacciones
Puedes ver una aplicación de estas entidades en este repositorio de GitHub.
Reconciliación de cuentas
Este servicio verifica que los datos de la cuenta estén actualizados. Participan las siguientes entidades:
Entidades de datos: Cuenta bancaria, Transacción
Permisos: Lectura/escritura en cuenta bancaria, lectura en transacción
Entradas: Detalles de la transacción, Detalles de la cuenta bancaria
Salidas: Estado de conciliación, Saldos de cuentas ajustados
Puedes ver una aplicación de estas entidades en este repositorio de GitHub.
Verificación de pago
Este servicio procesa el inicio de una transacción. El diagrama a continuación muestra los pasos del procesamiento de pagos, desde que el servicio reacciona a un pago hasta que notifica al usuario si este fue aprobado o rechazado.
Este servicio involucra a las siguientes entidades:
Entidades de datos: Transacción, Cuenta de usuario, Cuenta bancaria
Permisos: Leer en transacción, Leer en cuenta de usuario, Leer en cuenta bancaria
Entradas: Detalles de la transacción, Número de cuenta de usuario, Detalles de la cuenta bancaria
Salidas: Estado de verificación (éxito o fracaso)

Figura 5. Flujo de procesamiento de pagos
Puedes ver una aplicación de estas entidades en este repositorio de GitHub.
Presentación de informes
Para crear una vista de sus datos de pago, puede utilizar gráficos de MongoDB.
Esto involucra a las siguientes entidades:
Entidades de datos: Historial de transacciones, Cuenta de usuario
Permisos: Leer el historial de transacciones, Leer la cuenta de usuario
Entradas: Número de cuenta de usuario,criterios del informe (rango de fechas, tipo de transacción)
Resultados: Informes financieros generados
Notificaciones
Este servicio utiliza MongoDB Change Streams para notificar al usuario sobre cualquier cambio.
Esto involucra a las siguientes entidades:
Entidades de datos: Cuenta de usuario, Transacción
Permisos: Leer en cuenta de usuario, Leer en transacción
Entradas: Detalles de la cuenta de usuario, Detalles de la transacción
Salidas: Notificaciones y alertas a los usuarios
Puedes ver una aplicación de estas entidades en este repositorio de GitHub.
Esquema de base de datos y estructuras de documentos
Las siguientes estructuras de documentos y microservicios forman la columna vertebral de la solución de pago basada en MongoDB, garantizando escalabilidad, seguridad y gestión eficiente de datos.
Usuarios
Documentos en el users La colección tiene la siguiente estructura:
{ "_id": ObjectId, "username": String, "email": String, "password": String, // hashed "linkedAccounts": [ { "accountId": String, "accountType": String, "externalDetails": { "apiEndpoint": String, "accessKey": String, "additionalInfo": String } } ], "recentTransactions": [ { "transactionId": String, "date": Date, "amount": Number, "type": String, // e.g., 'debit', 'credit' "status": String // e.g., 'completed', 'pending' } ] }
Cuentas
Los documentos de la colección accounts tienen la siguiente estructura:
{ "_id": ObjectId, "userId": ObjectId, "accountNumber": String, // Encrypted "accountType": String, "balance": Number, "limitations": { "withdrawalLimit": Number, "transferLimit": Number, "otherLimitations": String }, "securityTags": [String], "encryptedDetails": String }
Transacciones
Los documentos de la colección transactions tienen la siguiente estructura:
{ "_id": ObjectId, "account_id": ObjectId, "amount": Number, "date": Date, "type": String, // e.g., 'debit', 'credit' "status": String, // e.g., 'completed', 'pending', 'refund' "details": String, // Encrypted if sensitive "referenceData": { "sender": { ... }, "receiver": { ... }, "steps": [{ ... }], "relatedTransactions": [{ ... }], "notes": String, "reportingTags": [String] } }
Notificaciones
Los documentos de la colección notifications tienen la siguiente estructura:
{ "_id": ObjectId, "relatedEntityId": ObjectId, "userIds": [ObjectId], "message": String, "createdAt": Date, "statuses": [ { "userId": ObjectId, "status": String // e.g., 'unread', 'read' } ] }
Construir la solución
El código de este tutorial se encuentra en este repositorio de GitHub. Para empezar, sigue las README instrucciones.
El tutorial utiliza las siguientes características en los diferentes servicios:
Microservicios cruzados
Indexación y escalabilidad
JSON schema validation
Permisos y segregación de datos
Auditoría
Microservicios de usuario y cuenta
Modelo de documento: utilice la flexibilidad de MongoDB para crear estructuras de usuarios y cuentas para diferentes cuentas y perfiles de usuario.
Conector de sumidero de Kafka: transmite datos desde fuentes externas.
Transacciones: Mantenga los datos de cuentas y usuarios compatibles con ACID.
Cifradoen uso: proteja sus datos durante todo su ciclo de vida.
Búsqueda de texto completo: busca ID de cuentas y nombres de usuario.
Microservicios de pagos
Colecciones de series de tiempo: utilice una colección de series de tiempo para conservar el historial de pagos.
Cifradoen uso: proteja sus datos durante todo su ciclo de vida.
Microservicios de notificación
Fuente deApache Kafka: utilice Kafka para transmitir notificaciones a sistemas y usuarios externos.
Flujos de cambio: los flujos de cambio capturan notificaciones, que luego son enviadas por Websockets.
Informes
Gráficos Atlas: utilice gráficos Atlas para preprocesar y visualizar sus datos.
Aprendizajes clave
Si utiliza esta solución, tenga en cuenta las siguientes consideraciones:
Seguridad y cumplimiento: Cumpla con GDPR, PCI DSS y otras regulaciones financieras.
Escalabilidad y rendimiento: garantice un procesamiento eficiente de consultas y manejo de datos.
Auditoría y registro: registro completo de pagos para respaldar auditorías.
Copia de seguridad y recuperación: plan sólido para la recuperación de datos utilizando MongoDB Atlas.
Autores
Pavel Duchovny, Relaciones con desarrolladores, MongoDB
Shiv Pullepu, Soluciones industriales, MongoDB
Raj Jain, arquitecto de soluciones, MongoDB
Jack Yallop, Marketing Industrial, MongoDB