Aprenda a construir una capa de datos operativos (ODL) para desbloquear datos de pago aislados y así potenciar aplicaciones modernas.
caso de uso: Pagos, Modernización
Industrias: Servicios financieros
Productos y herramientas: MongoDB Atlas, MongoDB Enterprise Advanced, Atlas Clusters, MongoDB Change Streams, Atlas Search, Atlas Charts, Atlas Auditing and Enterprise Security, MongoDB Kafka Connector, QueryablemEncryption, Time Series
Socios: Confluent (para la integración con Apache Kafka), AWS (para la infraestructura y servicios de 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 están impulsando 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 PSD2 en Europa, fomentan sistemas de pago más abiertos y flexibles.
Expectativas del cliente: Las personas quieren 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 fintech empresas emergentes 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 obsoleta: los sistemas obsoletos ralentizan la innovación y dificultan el cumplimiento de los estándares actuales.
Altos costos: Actualizar los sistemas antiguos puede ser costoso y requerir mucho tiempo.
Deuda técnica: Los atajos previos en el diseño del sistema pueden limitar el crecimiento futuro y la adaptabilidad.
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 orientado al dominio: Al alinear el desarrollo del sistema con las necesidades del negocio, el diseño orientado al dominio asegura que los cambios tecnológicos sirvan a los objetivos empresariales.
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 funcionalidades 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 operativos: MongoDB introduce una capa de datos unificada que simplifica el acceso a los datos en varios servicios, lo cual es crucial para construir soluciones de pagos integradas.
Soporte para mejores prácticas: MongoDB equipa a las empresas con las herramientas necesarias 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 arquitectura de la solución de pagos
Enfoque de 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 para cada entidad.
Arquitectura de microservicios
Una arquitectura de microservicios divide grandes aplicaciones monolíticas en piezas 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 flujo para la creación de cuentas.
El diagrama involucra las siguientes entidades:
Entidades de datos: Cuenta de usuario, método de pago, cuenta bancaria
Permisos: lectura/guardado en la cuenta del 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 cuentas
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 incluye las siguientes entidades:
Entidades de datos: Transacción, Cuenta bancaria
Permisos: Lectura/Escritura en transacciones, lectura en cuenta bancaria
Entradas: Detalles de la transacción, como cantidad, 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 es responsable de gestionar las transacciones de proveedores externos. Por ejemplo, la solución incluye una demostración de un usuario que recibe un pago a través de PayPal. El esquema flexible de MongoDB permite la variación en los documentos que representan 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. Incluye las siguientes entidades:
Entidades de datos: Historial de transacciones, cuenta de usuario
Permisos: Lectura sobre el Historial de transacciones, Lectura sobre la Cuenta de Usuario
Entradas: Número de cuenta de usuario
Salidas: Datos del historial de transacciones
Se puede ver una aplicación de estas entidades en este repositorio 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/guardar en la 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
Se puede ver una aplicación de estas entidades en este repositorio GitHub.
Verificación de Pago
Este servicio procesa la iniciación de una transacción. El siguiente diagrama muestra los pasos para el procesamiento de pagos, comenzando desde que el servicio reacciona a un pago y terminando cuando notifica al usuario si el pago fue aprobado o rechazado.
Este servicio implica las siguientes entidades:
Entidades de datos: Transacción, Cuenta de usuario, Cuenta bancaria
Permisos: Lectura en transacción, lectura en cuenta de usuario, lectura en cuenta bancaria
Entradas: Detalles de la transacción, número de cuenta del usuario, detalles de la cuenta bancaria
Salidas: Estado de verificación (éxito o fallo)

Figura 5. Flujo de procesamiento de pagos
Se puede ver una aplicación de estas entidades en este repositorio GitHub.
Presentación de informes
Para crear una vista de los datos de tu pago, puedes utilizar MongoDB Charts.
Esto implica las siguientes entidades:
Entidades de datos: Historial de transacciones, Cuenta de usuario
Permisos: Lectura sobre el Historial de transacciones, Lectura sobre la Cuenta de Usuario
Entradas: Número de cuenta de usuario, Criterios de 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 implica las siguientes entidades:
Entidades de datos: Cuenta de usuario, Transacción
Permisos: Lectura en la Cuenta de usuario, Lectura en la Transacción
Entradas: Detalles de la cuenta de usuario, Detalles de la transacción
Resultados: Notificaciones y alertas para los usuarios
Se puede ver una aplicación de estas entidades en este repositorio GitHub.
Esquema de base de datos y estructuras de documentos
Las siguientes estructuras de documentos y microservicios conforman la columna vertebral de la solución de pagos basada en MongoDB, garantizando escalabilidad, seguridad y gestión de datos eficiente.
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 en 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 en 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 en 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' } ] }
Compilar la solución
El código para este tutorial se puede encontrar en este repositorio de GitHub. Para comenzar, sigue las README instrucciones.
El tutorial utiliza las siguientes características en los diferentes servicios:
Microserviços cruzados
Indexación y escalabilidad
JSON schema validation
Permiso 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.
Kafka Sink Connector: Transmite datos desde fuentes externas.
Transacciones: Mantenga los datos de cuentas y usuarios compatibles con ACID.
Cifrado en uso: Protege tus datos durante todo su ciclo de vida.
Búsqueda de texto completo: busca ID de cuentas y nombres de usuario.
Microservicios de pagos
Colección de series de tiempo: Utiliza una colección de series de tiempo para mantener el historial de pagos.
Cifrado en uso: Protege tus datos durante todo su ciclo de vida.
Microservicios de notificaciones
Apache Kafka fuente: Utiliza Kafka para transmitir notificaciones a sistemas externos y usuarios.
Flujos de cambio: los flujos de cambio capturan notificaciones, que luego son enviadas por Websockets.
Informes
Atlas Charts: Utiliza los Atlas Charts para preprocesar y visualizar tus datos.
Lecciones clave
Si utiliza esta solución, tenga en cuenta las siguientes consideraciones:
Seguridad y cumplimiento: Cumplir con el GDPR, PCI DSS y otras regulaciones financieras.
Escalabilidad y rendimiento: Garantiza un procesamiento eficiente de query y manejo de datos.
Auditoría y registros: Registro integral de pagos para respaldar las 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 para la Industria, MongoDB
Raj Jain, arquitecto de soluciones, MongoDB
Jack Yallop, Marketing en la industria, MongoDB