最后修改日期: 2025-03-15
版本: v1.0
作者: 项目组
OSPAY是一个主要用于处理代收(DS)和代付(DF)交易。系统采用前后端分离架构,由多个子系统组成,提供完整的支付流程管理、订单处理、商户管理和实时通知功能。
graph TB
%% 用户层
subgraph 用户层
U1[终端用户]
U2[商户]
U3[管理员]
end
%% 前端层
subgraph 前端层
F1[Lakshmi UniApp<br>移动端应用]
F2[Merchant Frontend<br>商户平台前端]
F3[Admin Frontend<br>管理后台前端]
end
%% 服务层
subgraph 服务层
S1[ospay_api<br>核心API服务]
S2[ospay_merchant<br>商户平台服务]
S3[ospay_admin<br>管理后台服务]
end
%% 业务逻辑层
subgraph 业务逻辑层
B1[支付处理]
B2[订单管理]
B3[商户管理]
B4[WebSocket通信]
B5[风控系统]
B6[统计报表]
B7[第三方集成]
end
%% 数据层
subgraph 数据层
D1[(MySQL)]
D2[(Redis)]
end
%% 外部服务层
subgraph 外部服务层
E1[支付通道]
E2[代付通道]
E3[银行API]
E4[第三方服务]
end
%% 用户到前端的连接
U1 --- F1
U2 --- F2
U3 --- F3
%% 前端到服务层的连接
F1 -->|HTTP/WebSocket| S1
F2 -->|HTTP/WebSocket| S2
F3 -->|HTTP/WebSocket| S3
%% 服务层之间的关系
S2 -->|内部API| S1
S3 -->|内部API| S1
%% 服务层到业务逻辑层的连接
S1 --- B1 & B2 & B3 & B4 & B5 & B6 & B7
%% 业务逻辑层到数据层的连接
B1 & B2 & B3 & B5 & B6 -->|数据读写| D1
B1 & B2 & B4 & B5 -->|缓存/消息队列| D2
%% 业务逻辑层到外部服务的连接
B1 -->|集成| E1 & E2
B7 -->|集成| E3 & E4
- 终端用户: 使用Lakshmi UniApp移动应用进行支付和交易的最终用户
- 商户: 接入系统进行支付处理的商户或合作伙伴
- 管理员: 系统管理人员,负责系统配置和监控
- Lakshmi UniApp: 基于uni-app框架的跨平台移动应用,面向终端用户
- Merchant Frontend: 商户平台前端,为商户提供订单管理、余额查询等功能
- Admin Frontend: 管理后台前端,为管理员提供系统管理功能
- ospay_api: 系统核心API服务,处理所有业务逻辑,基于Python Tornado框架
- ospay_merchant: 商户平台服务,处理商户相关操作
- ospay_admin: 管理后台服务,处理管理员操作和系统配置
- 支付处理: 处理代收和代付交易,支持多种支付渠道
- 订单管理: 管理订单生命周期,状态更新和查询
- 商户管理: 商户信息、余额和佣金管理
- WebSocket通信: 提供实时通知和状态更新
- 风控系统: 交易风险控制和异常检测
- 统计报表: 数据统计和报表生成
- 第三方集成: 与第三方服务和API的集成
- MySQL: 关系型数据库,存储核心业务数据
- Redis: 用于缓存、消息队列和WebSocket会话管理
- 支付通道: 第三方支付处理服务
- 代付通道: 第三方付款处理服务
- 银行API: 银行系统集成接口
- 第三方服务: 短信、邮件等辅助服务
sequenceDiagram
participant M as 商户系统
participant API as ospay_api
participant P as 支付处理
participant DB as 数据库
participant CH as 支付通道
participant WS as WebSocket
M->>API: 发起代收请求
API->>P: 处理代收请求
P->>DB: 创建订单记录
P->>CH: 向支付通道发起请求
CH-->>P: 返回支付链接/二维码
P-->>API: 返回支付链接/二维码
API-->>M: 返回支付结果
Note over CH,DB: 用户完成支付
CH->>API: 支付通知回调
API->>P: 处理支付通知
P->>DB: 更新订单状态
P->>DB: 更新商户余额
P->>WS: 发送实时通知
WS->>M: WebSocket实时推送
API->>M: HTTP回调通知
sequenceDiagram
participant M as 商户系统
participant API as ospay_api
participant P as 支付处理
participant DB as 数据库
participant CH as 代付通道
participant WS as WebSocket
M->>API: 发起代付请求
API->>P: 处理代付请求
P->>DB: 检查商户余额
P->>DB: 创建代付订单
P->>CH: 向代付通道发起请求
alt 实时处理
CH-->>P: 返回处理结果
P->>DB: 更新订单状态
P->>DB: 更新商户余额
P-->>API: 返回处理结果
API-->>M: 返回代付结果
else 异步处理
CH-->>P: 确认接收请求
P-->>API: 返回接收确认
API-->>M: 返回接收确认
Note over CH,DB: 代付通道异步处理
CH->>API: 代付结果回调
API->>P: 处理代付通知
P->>DB: 更新订单状态
P->>DB: 更新商户余额
P->>WS: 发送实时通知
WS->>M: WebSocket实时推送
API->>M: HTTP回调通知
end
sequenceDiagram
participant C as 客户端
participant WS as WebSocket服务
participant P as 业务处理模块
participant R as Redis
C->>WS: 建立WebSocket连接
WS->>C: 连接成功
C->>WS: 发送认证消息
WS->>P: 验证认证信息
P->>WS: 认证结果
WS->>C: 认证响应
alt 认证成功
WS->>R: 记录客户连接信息
Note over P,R: 系统事件触发
P->>R: 发布消息通知
R->>WS: 接收订阅消息
WS->>C: 推送消息到客户端
loop 心跳机制
C->>WS: ping消息
WS->>C: pong响应
end
else 认证失败
WS->>C: 发送错误消息
WS->>C: 关闭连接
end
classDiagram
class MERCHANT {
+int id
+string merchant_id
+string name
+string api_key
+decimal ds_balance
+decimal df_balance
+int status
+datetime created_at
}
class ORDER_DS {
+int id
+string order_id
+string merchant_order_id
+int merchant_id
+decimal amount
+string status
+datetime created_at
+datetime updated_at
+string callback_url
}
class ORDER_DF {
+int id
+string order_id
+string merchant_order_id
+int merchant_id
+decimal amount
+string status
+datetime created_at
+datetime updated_at
+string callback_url
}
class PAYMENT {
+int id
+string payment_method
+string payment_channel
+int status
+string upi_id
+int is_active
}
class TRANSACTION {
+int id
+int order_id
+string tx_type
+decimal amount
+decimal fee
+datetime created_at
+string status
}
MERCHANT "1" -- "0..*" ORDER_DS : has
MERCHANT "1" -- "0..*" ORDER_DF : has
ORDER_DS "1" -- "0..*" TRANSACTION : has
ORDER_DF "1" -- "0..*" TRANSACTION : has
PAYMENT "1" -- "0..*" ORDER_DS : processes
- Lakshmi UniApp: Vue 3、TypeScript、uni-app框架、Pinia状态管理
- Admin/Merchant Frontend: Vue.js、Element UI、Axios、Vuex
- 主要语言: Python
- Web框架: Tornado
- 数据库: MySQL、Redis
- 异步处理: asyncio、aiomysql、aioredis
- API风格: RESTful API + WebSocket
- 容器化: Docker、Docker Compose
- Web服务器: Nginx
- 监控: Prometheus、Grafana
- 通信加密: HTTPS/WSS
- API签名验证
- 多重身份验证(MFA)
- IP白名单过滤
- 敏感数据加密存储
- 访问控制与权限管理
- 防DDOS措施
- 服务水平扩展能力
- 数据库主从复制
- Redis集群
- 负载均衡
- 异步处理队列
- 任务调度与重试机制
- 灾备与数据备份策略