1

分享此资讯给好友,自动附带您的名片信息

聚合支付

聚合支付系统设计方案

CSDN博客2026/03/06 12:54原文

聚合支付系统设计方案 原创 于 2026-03-06 20:54:32 发布 · 268 阅读 标签 #后端 1. 引言 1.1 聚合支付定义 聚合支付(Aggregate Payment),又称“第四方支付”,是指通过一个平台整合多家第三方支付机构、银行、以及其他支付渠道的支付能力,为商户提供统一的支付接口和结算服务。商户无需逐个对接不同的支付渠道,只需接入聚合支付平台,即可实现微信支付、支付宝、银联云闪付、银行卡等多种支付方式的收单。 1.2 项目背景与目标 随着移动支付的普及,商户面临的支付渠道日益增多,对接多个渠道的研发成本、维护成本、对账成本居高不下。聚合支付系统旨在解决这一痛点,提供: 统一接口:一套API对接所有主流支付方式。 智能路由:根据费率、成功率、渠道稳定性等因素动态选择最优渠道。 统一对账:自动汇总各渠道交易,生成统一对账单。 资金结算:支持T+N结算到商户银行账户。 增值服务:如营销工具、会员管理、数据报表等。 1.3 适用范围 本设计方案适用于金融科技公司、SaaS服务商、电商平台等需要构建聚合支付能力的企业。系统设计需满足高并发、高可用、数据一致性和安全性要求。 2. 需求分析 2.1 功能性需求 商户接入:支持商户入驻、资质审核、费率配置、API密钥生成。 支付能力:涵盖公众号支付、APP支付、扫码支付、H5支付、小程序支付、刷脸支付等。 交易管理:订单查询、退款、关闭、撤销等操作。

原创 于 2026-03-06 20:54:32 发布 · 268 阅读

标签

#后端

1. 引言

1.1 聚合支付定义

聚合支付(Aggregate Payment),又称“第四方支付”,是指通过一个平台整合多家第三方支付机构、银行、以及其他支付渠道的支付能力,为商户提供统一的支付接口和结算服务。商户无需逐个对接不同的支付渠道,只需接入聚合支付平台,即可实现微信支付、支付宝、银联云闪付、银行卡等多种支付方式的收单。

1.2 项目背景与目标

随着移动支付的普及,商户面临的支付渠道日益增多,对接多个渠道的研发成本、维护成本、对账成本居高不下。聚合支付系统旨在解决这一痛点,提供:

统一接口:一套API对接所有主流支付方式。

智能路由:根据费率、成功率、渠道稳定性等因素动态选择最优渠道。

统一对账:自动汇总各渠道交易,生成统一对账单。

资金结算:支持T+N结算到商户银行账户。

增值服务:如营销工具、会员管理、数据报表等。

1.3 适用范围

本设计方案适用于金融科技公司、SaaS服务商、电商平台等需要构建聚合支付能力的企业。系统设计需满足高并发、高可用、数据一致性和安全性要求。

2. 需求分析

2.1 功能性需求

商户接入:支持商户入驻、资质审核、费率配置、API密钥生成。

支付能力:涵盖公众号支付、APP支付、扫码支付、H5支付、小程序支付、刷脸支付等。

交易管理:订单查询、退款、关闭、撤销等操作。

渠道路由:根据规则(金额、商户、渠道权重、成本)自动选择支付渠道。

对账清算:每日自动拉取渠道对账单,与系统交易记录进行勾兑,生成差异报表。

结算管理:计算商户应收净额,生成结算单,通过银行或第三方代付到商户银行卡。

风控管理:交易监控、黑名单、限频、限额、反洗钱筛查。

通知系统:向商户服务器发送支付结果、退款结果等异步通知。

报表统计:交易趋势、渠道分析、商户营收报表。

2.2 非功能性需求

高并发:峰值TPS > 5000,系统可水平扩展。

高可用:99.99%可用性,核心链路无单点故障。

数据一致性:支付状态最终一致,避免资金损失。

安全性:符合PCI DSS标准,数据传输加密,敏感信息脱敏。

可扩展性:支持快速接入新支付渠道。

可维护性:完善的日志、监控、链路追踪。

2.3 用户角色

商户:使用聚合支付服务的商家。

终端用户:实际付款的消费者。

运营人员:管理商户、渠道、风控规则。

财务人员:处理对账、结算、差错。

系统管理员:系统配置、监控、运维。

3. 总体架构设计

3.1 架构原则

微服务化:按业务域拆分服务,独立部署、独立扩展。

分层架构:接入层、业务层、核心层、基础设施层。

异步化:长耗时操作(如对账、结算)通过消息队列异步处理。

数据最终一致性:采用TCC、本地消息表等保证分布式事务。

开放封闭原则:对扩展开放,对修改封闭,渠道接入通过插件化实现。

3.2 逻辑架构图

text

+-------------------+ +-------------------+ +-------------------+

| 接入层 (API Gateway) | | 商户控制台 (Web) | | 运营后台 (Admin) |

+-------------------+ +-------------------+ +-------------------+

| | |

v v v

+-----------------------------------------------------------------------+

| 业务服务层 |

| +-------------+ +-------------+ +-------------+ +-------------+ |

| | 商户服务 | | 订单服务 | | 支付服务 | | 路由服务 | |

| +-------------+ +-------------+ +-------------+ +-------------+ |

| +-------------+ +-------------+ +-------------+ +-------------+ |

| | 渠道适配器 | | 对账服务 | | 结算服务 | | 风控服务 | |

| +-------------+ +-------------+ +-------------+ +-------------+ |

+-----------------------------------------------------------------------+

| | |

v v v

+-----------------------------------------------------------------------+

| 核心服务层 |

| +-------------+ +-------------+ +-------------+ +-------------+ |

| | 账户服务 | | 记账服务 | | 资金服务 | | 通知服务 | |

| +-------------+ +-------------+ +-------------+ +-------------+ |

+-----------------------------------------------------------------------+

| | |

v v v

+-----------------------------------------------------------------------+

| 基础设施层 |

| (MySQL, Redis, RocketMQ, Elasticsearch, MinIO, Prometheus, etc.) |

+-----------------------------------------------------------------------+

3.3 技术栈选择

开发语言:Java 11 (Spring Boot 2.x, Spring Cloud Alibaba)

服务注册与发现:Nacos

配置中心:Nacos

API网关:Spring Cloud Gateway + Sentinel

RPC框架:Dubbo / Spring Cloud OpenFeign

消息队列:RocketMQ (支持事务消息)

分布式事务:Seata (AT模式)

数据库:MySQL 8.0 (分库分表: ShardingSphere)

缓存:Redis 6.x (Cluster模式)

搜索引擎:Elasticsearch (用于日志和交易查询)

对象存储:MinIO (对账单文件存储)

监控:Prometheus + Grafana

链路追踪:SkyWalking

容器化:Docker + Kubernetes

CI/CD:GitLab CI + Jenkins

4. 核心模块详细设计

4.1 商户管理模块

功能:

商户入驻申请、资料提交(营业执照、法人信息、结算账户)。

资质审核(人工或自动)。

商户信息维护(费率、结算周期、API密钥、IP白名单)。

商户状态管理(启用、禁用、冻结)。

关键设计:

商户表 merchant :

id, merchant_no, name , contact , status, fee_rate , settle_cycle, api_key, secret_key, ip_whitelist, created_at, updated_at

采用雪花算法生成唯一商户号。

API密钥使用HS256或RSA,商户请求需签名,响应也需加密(可选)。

费率支持阶梯费率、按渠道定制费率,可配置在 merchant_channel_rate 表中。

4.2 渠道管理模块

功能:

维护支付渠道信息(微信、支付宝、银联等)。

渠道参数配置(AppID、商户号、API密钥、证书)。

渠道开关控制(上下线、维护状态)。

渠道权重、优先级配置(用于路由)。

关键设计:

渠道表 channel:id, channel_code, channel_name , status , weight , priority , fee_rate (渠道成本费率)

渠道参数表 channel_config:id , channel_id, param_key , param_value, encrypted (是否加密)

敏感信息(如证书、密钥)需加密存储,使用AES-256或HSM。

4.3 订单管理模块

功能:

接收商户下单请求,生成聚合订单。

订单状态流转:待支付 -> 支付中 -> 支付成功/失败 -> 已退款/部分退款。

提供订单查询接口。

关键设计:

订单表 payment_order :

order_no (聚合订单号), merchant_order_no (商户订单号), merchant_id

amount, currency , subject, body

status (0-待支付,1-支付成功,2-支付失败,3-已退款,4-关闭)

channel_code, channel_order_no (渠道订单号)

notify_url, return_url

expire_time, created_at, updated_at

订单号生成:使用雪花算法,保证全局唯一。

为防止订单号重复,需在数据库对 merchant_id + merchant_order_no 建立唯一索引。

订单超时处理:使用Redis延迟队列或RocketMQ定时消息,超时后自动关闭订单。

4.4 路由引擎模块

功能:

根据商户、金额、渠道状态、费率、成功率等动态选择最优渠道。

支持规则配置(如金额<100元优先使用微信,>100元优先使用银联)。

支持渠道降级(当主渠道失败时自动切换备用渠道)。

关键设计:

规则引擎可采用 Drools 或自研简单规则链。

路由因子:商户指定渠道(可选)、渠道状态(在线/离线)、渠道权重、渠道成本、历史成功率、时间段、金额区间、卡类型(借贷记)。

路由结果缓存,避免每次计算。

可配置渠道探针,定时检测渠道可用性,动态调整权重。

4.5 支付核心模块

功能:

调用渠道适配器发起支付请求。

处理同步响应(如二维码链接)和异步通知(支付结果)。

幂等处理(防止重复通知)。

记录支付流水。

关键设计:

支付流水表 payment_flow:

flow_no, order_no, channel_code , request_amount , response_amount

status (0-处理中,1-成功,2-失败), error_code, error_msg

request_time, response_time, notify_time

异步通知处理:当收到渠道异步通知时,更新订单状态,并触发商户通知。

幂等设计:使用Redis分布式锁,根据 channel_order_no 或 order_no 保证同一通知只处理一次。

支付结果需通过消息队列广播,供其他服务(如风控、积分)消费。

4.6 渠道适配器模块

功能:

封装各支付渠道的接口差异,提供统一调用方式。

每个渠道一个适配器,实现 ChannelAdapter 接口。

支持热插拔,新渠道只需新增适配器,无需修改核心代码。

关键设计:

接口定义:

java

public interface ChannelAdapter {

PayResponse pay(PayRequest request);

RefundResponse refund(RefundRequest request);

QueryResponse query(QueryRequest request);

CloseResponse close(CloseRequest request);

NotifyResult parseNotify(Map<String, String> params); // 解析异步通知

}

适配器内部实现HTTP请求、签名、验签、异常处理。

渠道返回的原始数据需完整保存至 channel_raw_data 表,用于对账和排查。

4.7 对账模块

功能:

定时拉取各渠道的对账单文件(通常为T+1)。

解析对账单,与系统交易流水进行逐笔勾对。

生成对账差异报告(长款、短款、金额不一致等)。

自动处理部分差异(如手续费差异),人工介入处理无法自动处理的。

关键设计:

对账任务调度:使用XXL-JOB或Quartz。

对账单文件存储:MinIO,按日期/渠道组织。

对账流程:

下载渠道对账单。

解析为内部对账记录。

将系统交易流水(昨日成功订单)与对账记录进行匹配。

匹配字段:订单号、金额、时间、状态。

生成差异记录表 reconciliation_diff。

自动调账:例如手续费差异,生成调账流水;长款/短款需人工审核。

对账完成后,更新订单的对账状态。

4.8 结算模块

功能:

根据商户的结算周期(T+1、D+1、D+0)生成结算单。

计算商户应收金额(交易金额 - 手续费 - 其他费用)。

通过银行或第三方代付接口打款至商户结算账户。

生成结算记录,供商户查询。

关键设计:

结算表 settlement:

settle_no, merchant_id, start_date, end_date

total_amount, fee_amount, net_amount, status (0-待结算,1-结算中,2-已结算,3-失败)

bank_card_no, bank_name, settle_time , fail_reason

结算任务:每日定时汇总商户昨日成功交易(已对账一致),生成结算单。

结算打款通过对接银行代付接口,需考虑重试、幂等。

结算失败需告警,人工介入。

4.9 风控模块

功能:

实时风控:交易前检查(黑名单、限频、限额、IP风险)。

事后风控:交易监控(大额交易、频繁交易)、反洗钱规则。

黑白名单管理。

风险交易拦截或人工审核。

关键设计:

风控规则引擎:可使用EasyRules或自研,支持动态配置。

实时风控点:下单前、支付前、退款前。

风控因子:商户历史交易、用户设备指纹、IP地理位置、交易金额、时间。

风控结果记录表 risk_check_result。

与支付核心集成:支付核心调用风控服务,若风控拒绝,则返回失败。

4.10 用户中心(终端用户)

功能:

管理终端用户信息(可选,用于绑定支付方式、查询订单等)。

提供用户支付记录查询。

关键设计:

如果聚合支付需要用户体系,可设计用户表 user,与商户订单关联。

通常聚合支付不存储用户敏感信息,只保留openid等渠道用户标识。

4.11 通知模块

功能:

向商户服务器发送异步通知(支付结果、退款结果)。

支持重试机制(最多重试N次,间隔递增)。

记录通知日志。

关键设计:

通知表 notify_task :

id, order_no, merchant_id , notify_url, content (通知内容), status (0-待通知,1-成功,2-失败)

retry_count, next_retry_time, last_error

通知服务定时扫描待通知任务,发送HTTP POST请求。

商户需返回“SUCCESS”字符串表示接收成功,否则重试。

支持手动触发补发通知。

5. 数据模型设计

5.1 核心表结构

以下列出关键表及其字段:

merchant (商户表)

id bigint PK

merchant_no varchar(32) UK

name varchar(100)

contact_name varchar(50)

contact_phone varchar(20)

email varchar(50)

status tinyint (0-待审核,1-正常,2-冻结,3-注销)

fee_rate decimal(10,4) (默认费率,百分数)

settle_cycle varchar(10) (T+1, D+1, D+0)

api_key varchar(64)

secret_key varchar(128)

ip_whitelist text (JSON数组)

created_at datetime

updated_at datetime

merchant_channel_rate (商户渠道费率)

id bigint PK

merchant_id bigint

channel_code varchar(20)

fee_rate decimal(10,4) (该渠道的商户费率,可为空表示使用默认)

status tinyint (0-关闭,1-开启)

created_at datetime

channel (渠道表)

id int PK

channel_code varchar(20) UK

channel_name varchar(50)

status tinyint (0-下线,1-上线)

weight int (路由权重,越大越优先)

priority int (优先级,数字小优先)

cost_rate decimal(10,4) (渠道成本费率)

created_at datetime

channel_config (渠道配置)

id bigint PK

channel_code varchar(20)

param_key varchar(50)

param_value text

encrypted tinyint (0-明文,1-加密)

created_at datetime

payment_order (支付订单)

id bigint PK

order_no varchar(32) UK

merchant_id bigint

merchant_order_no varchar(64)

amount bigint (单位分)

currency varchar(3) default 'CNY'

subject varchar(200)

body text

status tinyint (0-待支付,1-支付成功,2-支付失败,3-已退款,4-关闭)

channel_code varchar(20)

channel_order_no varchar(64)

pay_time datetime

expire_time datetime

notify_url varchar(200)

return_url varchar(200)

client_ip varchar(45)

device_info varchar(100)

created_at datetime

updated_at datetime

index (merchant_id, merchant_order_no) UK

payment_flow (支付流水)

id bigint PK

flow_no varchar(32) UK

order_no varchar(32)

channel_code varchar(20)

request_amount bigint

response_amount bigint

status tinyint (0-处理中,1-成功,2-失败)

error_code varchar(50)

error_msg varchar(200)

request_time datetime

response_time datetime

notify_time datetime

raw_data text (渠道返回原始数据)

created_at datetime

refund_order (退款订单)

id bigint PK

refund_no varchar(32) UK

order_no varchar(32)

merchant_refund_no varchar(64)

amount bigint

reason varchar(200)

status tinyint (0-待退款,1-退款成功,2-退款失败)

channel_refund_no varchar(64)

refund_time datetime

created_at datetime

index (merchant_id, merchant_refund_no) UK

reconciliation_record (对账记录)

id bigint PK

channel_code varchar(20)

bill_date date

order_no varchar(32)

channel_order_no varchar(64)

trade_amount bigint

fee_amount bigint

trade_time datetime

status varchar(20) (match, mismatch, long, short) 匹配状态

created_at datetime

settlement (结算单)

id bigint PK

settle_no varchar(32) UK

merchant_id bigint

start_date date

end_date date

total_amount bigint

fee_amount bigint

net_amount bigint

status tinyint (0-待结算,1-结算中,2-已结算,3-失败)

bank_card_no varchar(30)

bank_name varchar(100)

settle_time datetime

fail_reason varchar(200)

created_at datetime

notify_task (通知任务)

id bigint PK

order_no varchar(32)

merchant_id bigint

notify_url varchar(200)

content text

sta...

福铁科技

福铁科技

专注支付行业 16 年

0591-83334386
支付系统各类支付接口分账接口银行电子户行业场景化定制方案

分享此资讯给好友,自动附带您的名片信息