7.8 KiB
MPay V2 Development Progress
更新日期:2026-03-13
本文档用于记录当前项目完成度、明显缺口和建议推进顺序,方便后续继续开发时快速接手。
1. 当前总体判断
项目已经完成了“支付中台基础骨架 + 后台配置能力 + Epay 协议首条链路”的主体搭建。
更准确地说:
- 数据模型已经比较完整
- 后台配置能力已经具备可用性
- 支付流程主链路已经跑通到“下单并返回拉起参数”
- 真正需要继续补的是“真实渠道闭环、规则执行、异步补偿、通用协议扩展”
2. 已完成
2.1 基础框架与环境
- Webman 项目骨架已搭建
- MySQL / Redis / JWT / Cache / Event / Redis Queue 依赖已接入
- 管理后台与 API 路由已拆分
2.2 管理后台能力
- 验证码登录
- JWT 鉴权中间件
- 管理员信息查询
- 菜单与系统配置读取
- 商户 CRUD
- 商户应用 CRUD
- 支付方式 CRUD
- 支付插件注册 CRUD
- 支付通道 CRUD
- 订单列表 / 详情 / 后台发起退款
2.3 核心支付数据结构
已建表并落地:
- 商户
- 商户应用
- 支付方式
- 插件注册
- 支付通道
- 支付订单
- 回调日志
- 商户通知任务
- 回调幂等收件箱
2.4 下单主链路
已打通:
- Epay 参数校验
- Epay MD5 验签
- 商户应用识别
- 幂等订单创建
- 通道路由
- 插件实例化
- 插件下单
- 订单回写支付参数
- 返回兼容 Epay 的响应结构
2.5 支付状态基础设施
- 订单状态机服务已存在
- 成功 / 失败 / 全额退款关单状态迁移已定义
- 回调日志记录能力已存在
- 回调幂等收件箱已存在
- 商户通知任务创建逻辑已存在
2.6 插件体系
已建立统一插件契约:
PaymentInterfacePayPluginInterfaceBasePayment
说明后续继续接入新渠道时,整体扩展方式已经明确。
3. 部分完成
3.1 Epay 兼容是“主路径”,但还不是“全量兼容”
当前已实现:
submit.phpmapi.phpapi.php?act=orderapi.php?act=refund
但 doc/epay.md 中提到的一些能力,如 query、settle、orders 等,代码中暂未实现。
3.2 支付宝插件代码较完整,但未在当前数据库启用
现状:
AlipayPayment.php已实现- 当前开发库
ma_pay_plugin中只有lakala
这意味着支付宝更多处于“代码已写好、配置未接入”的状态。
3.3 回调后通知商户的基础逻辑存在,但补偿闭环还不完整
已完成:
- 创建通知任务
- 发送通知
- 失败重试时间计算
待确认 / 待补齐:
- 当前没有看到明确的任务投递入口
- 也没有看到定时调度
NotifyMerchantJob的配置闭环 NotifyMerchantJob虽然存在,但尚未形成明确的可运行消费链路
更保守地说,商户通知补偿链路还没有真正闭环。
4. 待完成
4.1 通用 OpenAPI
当前状态:
PayController只有骨架create/query/close/refund都返回501OpenApiAuthMiddleware已存在,但未挂到路由
建议判断:这是下一阶段最适合补完的能力之一。
4.2 拉卡拉真实对接
当前状态:
LakalaPayment::pay()只返回 mock 二维码query/close/refund/notify全部未实现
影响:
- 现在只能用于打通订单创建流程
- 还不能进行真实线上支付联调
4.3 通道路由规则执行
数据库已设计的字段很多,但运行期并未全部生效:
daily_limit未校验daily_cnt未校验min_amount未校验max_amount未校验split_ratio当前只存储,未看到清算分账逻辑- 路由策略目前只是“按排序取第一条可用通道”
这块是项目从“能下单”走向“可运营”的关键缺口。
4.4 Epay 协议映射细节
当前内部支付方式代码使用:
alipaywechat
但传统 Epay 常见值通常还有:
wxpayqqpay
当前代码里没有看到统一别名映射层,说明“协议兼容”仍偏接口形态兼容,而不是完整字段语义兼容。
4.5 插件注册与初始化数据同步
代码、SQL、数据库现状存在轻微偏差:
database/dev_seed.sql里准备了alipay和lakala- 当前开发库只看到
lakala
建议后续把“代码存在但数据库未启用”的状态统一起来,减少联调歧义。
4.6 通道安全与敏感配置
当前通道配置直接存在 config_json 中,后续建议补充:
- 敏感字段加密存储
- 后台展示脱敏
- 配置变更审计日志
4.7 测试体系
当前仓库里没有看到成体系的:
- 单元测试
- 协议测试
- 插件对接测试
- 回调幂等测试
- 退款回归测试
这会让后续迭代的回归成本越来越高。
5. 风险与注意点
5.1 当前“多通道”能力更偏配置层,而不是调度层
虽然表结构和后台已经支持多通道,但运行时路由还比较简单,不能完全体现:
- 限额控制
- 金额区间控制
- 通道健康度切换
- 优先级与容灾
5.2 退款能力目前偏基础版
当前退款服务已存在,但从实现上看:
- 更适合单次退款 / 全额退款
- 全额退款后直接把订单关闭
- 没有独立退款单模型
- 没有完整的部分退款累计能力
5.3 回调成功后的订单与通知一致性要继续加强
当前已经有:
- 幂等收件箱
- 状态机
- 通知任务表
这是很好的基础。
但真正生产级还建议再补:
- 事务边界说明
- 异常重放工具
- 回调人工补单工具
- 通知签名
6. 建议优先级
P0:优先补完,直接影响可用性
- 实现真实渠道插件,至少先补完一个可联调通道
- 补完 OpenAPI 主链路
- 在路由阶段执行金额限制 / 限额 / 笔数规则
- 打通商户通知任务的实际调度与重试闭环
P1:补齐可运营能力
- 增加支付方式别名映射,提升 Epay 兼容度
- 把
AlipayPayment正式接入插件注册与通道配置 - 增加后台对通道能力、产品、环境的可视化说明
- 增加日志检索与问题排查手段
P2:走向平台化
- 增加更多协议兼容层
- 增加清算 / 分账 / 对账
- 增加风控规则
- 增加监控、告警、报表
7. 建议后续开发方向
方向一:先做“一个真实可用通道”
建议优先把某一个通道做成完整闭环:
- 下单
- 回调
- 查单
- 关单
- 退款
这样项目就能从“框架完成”升级为“真实可上线联调”。
方向二:补通用 OpenAPI
原因:
- 你已经明确后续可能兼容更多接口
- 当前通用控制器和鉴权中间件已经有雏形
- 补完之后,项目会从“单协议适配器”升级为“统一支付网关”
方向三:把通道路由做成真正的策略引擎
建议把下面这些字段从“仅存储”升级为“真实执行”:
- 金额范围
- 单日限额
- 单日限笔
- 通道优先级
- 通道健康状态
- 权重或降级策略
方向四:补测试与排障工具
优先建议增加:
- 下单幂等测试
- 回调幂等测试
- 退款状态测试
- 协议字段兼容测试
- 一键重发通知工具
8. 推荐继续开发顺序
如果下一次直接继续往下做,我建议按这个顺序推进:
- 选定一个真实渠道作为首个闭环目标
- 补完该插件的
notify/query/refund/close - 接入并验证商户通知补偿链路
- 在
ChannelRouterService前后补齐通道规则校验 - 正式实现
PayController - 抽象协议适配层,准备支持更多接口
- 增加测试与后台排障能力
9. 当前一句话结论
这是一个“骨架已经成型、第一条协议已打通、非常适合继续往生产级推进”的支付中台项目;下一阶段的重点不是重写,而是把已有设计真正补成闭环。