Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ /
Atlas 架构中心
/ / /

支付现代化解决方案加速器

了解如何构建运营数据层 (ODL),以解锁孤立的支付数据,从而为现代应用程序提供支持。

当今的支付行业日新月异,企业都在努力提供安全且易于使用的支付解决方案。这种需求是由新法规、客户期望和市场竞争等因素驱动的。金融服务组织可以使用MongoDB实现支付系统的现代化。

此解决方案展示了如何使用MongoDB构建ODL。您可以在传统系统之上部署ODL,对架构进行现代化改造,而不会遇到完全替换传统系统所带来的困难和风险。

多个因素正在推动支付系统的现代化:

  • 实时支付:客户和企业希望立即处理付款。

  • 监管变化:新的法律和法规(例如欧洲的 PSD2)鼓励建立更开放、更灵活的支付系统。

  • 客户期望:人们希望支付流程顺畅并跨不同平台进行集成。

  • 开放式银行业务:开放式银行业务提高了金融领域的竞争力和创新能力,从而有利于开发新的支付服务。

  • 竞争: 金融科技初创公司提供新的支付解决方案,迫使传统金融机构更新系统。

更新支付系统面临挑战,原因如下:

  • 复杂的系统:支付系统涉及许多不同的参与方和法规,使得变更变得复杂。

  • 旧技术:过时的系统减慢了创新速度,难以达到当前标准。

  • 高成本:升级旧系统可能既昂贵又耗时。

  • 技术债务:系统设计中之前采取的捷径可能会限制未来的增长和适应能力。

在此示例解决方案中,您可以学习;了解如何使用MongoDB实现支付系统的现代化。

企业在更新系统时采用以下策略:

  • 领域驱动设计:领域驱动设计使系统开发与业务需求保持一致,确保技术变更提供服务业务目标。

  • 微服务架构:通过从整体架构过渡到微服务架构,您可以更高效地更新和扩展系统。

以下MongoDB功能支持支付现代化的努力:

  • 灵活的文档模型:MongoDB 的文档模型允许您纳入新的支付类型和数据结构,确保您的系统可以与市场一起发展。

  • 操作数据层: MongoDB引入了统一数据层,简化了跨各种服务的数据访问权限,这对于构建集成支付解决方案至关重要。

  • 支持最佳实践: MongoDB为企业提供遵循行业最佳实践所需的工具,例如安全事务和实时分析。

下图详细说明了该支付解决方案所使用的架构。如需进一步学习;了解如何与MongoDB配合使用,请访问我们的实时支付页面。

支付解决方案架构图

图 1. 支付方案架构图

该解决方案侧重于用户帐户、交易、银行帐户和付款方式等实体之间的关系。它包括每个实体的数据属性和详细信息。

微服务架构将大型整体应用程序分解为较小的部分。它可以实现更快的开发、模块化、灵活性和可扩展性、韧性、组织协调和降低费用。

此解决方案中使用的微服务架构分为以下服务:

  • 用户管理

  • 事务处理

  • 事务历史记录

  • 账户调节

  • 付款验证

  • 报告

  • 通知

此服务促进用户和帐户交互。下图显示了帐户创建的流程。

该图涉及以下实体:

  • 数据实体:用户账号、支付方式、银行账户

  • 权限:读取/写入用户帐户、付款方式和银行帐户

  • 输入:用户详细信息、支付方式详细信息、银行账户详细信息

  • 输出:用户账户创建确认、支付方式添加确认、银行账户添加确认

账户创建流程

图2。账户创建流程

您可以在此 GitHub存储库中查看此流程的应用程序。

此服务管理与事务相关的操作,例如启动、完成或退款ACID 事务。下图中,您可以看到启动ACID 事务的主要流程。

该图涉及以下实体:

  • 数据实体:事务、银行账户

  • 权限:对交易进行读写,对银行账户进行读取

  • 输入:交易详情,如金额、发送方和接收方

  • 输出:事务状态更新,如待处理、已完成或已失败

您可以在此 GitHub存储库中查看此流程的应用程序。

交易流

图3.事务流程

该微服务还负责管理外部提供商事务。示例,该解决方案包括用户接受 PayPal 付款的演示。MongoDB 灵活的模式允许表示事务的文档存在变化。

下图显示了模拟 PayPalACID 事务的进程。

外部事务流

图4。外部事务流

该服务负责ACID 事务记录和存档。它涉及以下实体:

  • 数据实体:交易历史记录、用户账户

  • 权限:读取事务历史记录,读取用户帐户

  • 输入: 用户账户号码

  • 输出:交易记录数据

您可以在此 GitHub存储库中查看这些实体的应用程序。

此服务验证帐户详细信息是否是最新的。它涉及以下实体:

  • 数据实体:银行账户、事务

  • 权限:读取/写入银行账户,读取事务

  • 输入:事务详情、银行账户详情

  • 输出:对账状态,调整后的账户余额

您可以在此 GitHub存储库中查看这些实体的应用程序。

此服务处理ACID 事务启动。下图显示了付款处理步骤,从服务对付款做出反应开始,到通知用户付款是被批准还是被拒绝为止。

该服务涉及以下实体:

  • 数据实体:交易、用户账户、银行账户

  • 权限:读取事务、读取用户帐户、读取银行账户

  • 输入:事务详情、用户账户号码、银行账户详情

  • 输出:验证状态(成功或失败)

支付处理流程

图5.支付处理流程

您可以在此 GitHub存储库中查看这些实体的应用程序。

要创建付款数据的视图,您可以使用MongoDB Charts。

这涉及以下实体:

  • 数据实体:交易历史记录、用户账户

  • 权限:读取事务历史记录,读取用户帐户

  • 输入:用户账号,报告条件(日期范围、事务类型)

  • 输出:生成的财务报告

此服务使用MongoDB Change Streams通知用户任何更改。

这涉及以下实体:

  • 数据实体:用户账户、事务

  • 权限:读取用户账户,读取交易

  • 输入:用户账户详细信息、交易详细信息

  • 输出:用户通知和警报

您可以在此 GitHub存储库中查看这些实体的应用程序。

以下文档结构和微服务构成了基于 MongoDB 的支付解决方案的主干,确保可扩展性、安全性和高效的数据管理。

users集合中的文档具有以下结构:

{
"_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'
}
]
}

accounts集合中的文档具有以下结构:

{
"_id": ObjectId,
"userId": ObjectId,
"accountNumber": String, // Encrypted
"accountType": String,
"balance": Number,
"limitations": {
"withdrawalLimit": Number,
"transferLimit": Number,
"otherLimitations": String
},
"securityTags": [String],
"encryptedDetails": String
}

transactions集合中的文档具有以下结构:

{
"_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]
}
}

notifications集合中的文档具有以下结构:

{
"_id": ObjectId,
"relatedEntityId": ObjectId,
"userIds": [ObjectId],
"message": String,
"createdAt": Date,
"statuses": [
{
"userId": ObjectId,
"status": String // e.g., 'unread', 'read'
}
]
}

本教程的代码可以在此 GitHub存储库中找到。要开始使用,请按照 README说明进行操作。

本教程在不同服务中使用以下功能:

  • 索引和可扩展性

  • JSON schema validation

  • 权限和数据隔离

  • 审核

  • Atlas Charts:使用Atlas Charts对数据进行预处理和可视化。

如果使用此解决方案,请考虑以下注意事项:

  • 安全性与合规:遵守一般数据保护法规 (GDPR)、PCI DSS 和其他金融法规。

  • 可扩展性和性能:确保高效的查询处理和数据处理。

  • 审核和日志记录:全面记录付款以支持审核。

  • 备份和恢复:使用 MongoDB Atlas 进行数据恢复的稳健计划。

  • Pavel Duchovny,开发者关系,MongoDB

  • Shiv Pullepu,行业解决方案,MongoDB

  • MongoDB 解决方案架构师 Raj Jain

  • Jack Yallop,行业市场营销,MongoDB

后退

RAG 应用程序的统一接口

在此页面上