Skip to content

支付功能设计 ​

这篇解决什么 ​

支付中心怎么分层:应用和渠道是主数据,订单 / 退款 / 转账是业务单,回调先回支付模块再通知业务。读完先对模块边界和表,再进模拟支付、钱包、支付宝等功能篇。

默认端口 48080,前缀 /admin-api。工程启动见 快速开始。

业务流程及架构 ​

支付自己不算流程引擎,没有 processDefinitionKey。业务只调 PayOrderApi 建单;真正打款、退款由渠道客户端做。渠道编码以 PayChannelEnum 为准:mock / wallet / alipay_* / wx_*。

示意图:业务建支付单。渠道打款后回调 /pay/notify/order,支付模块再通知业务。

名称说明仓库路径
应用 / 渠道pay_app + pay_channel菜单应用 1126
模拟支付渠道码 mock,不走回调模拟支付、退款
钱包pay_wallet,渠道码 wallet钱包充值、支付、退款
支付宝alipay_*支付宝支付接入
微信wx_pub / wx_lite微信公众号支付、微信小程序支付
退款pay_refund支付宝、微信退款接入
转账pay_transfer支付宝转账、微信转账
移动支付搬家移动端支付

渠道回调要公网

yudao.pay.order-notify-url 指向 PayNotifyController 的 /pay/notify/order。支付宝、微信会再拼 /{channelId}。本机地址渠道打不进来。模拟支付不走回调,可以先联调。

数据表 ER ​

主干表按 DO 画出。示例单 pay_demo_order / pay_demo_withdraw、通知日志不进这张图。

示意图:应用下开渠道。订单挂应用和渠道。成功后再通知业务。钱包是余额账本,不是第二套网关。

前后端代码 ​

名称说明仓库路径
模块api + serverruoyi-office/yudao-module-pay/
单体引入yudao-module-pay-serverruoyi-office/yudao-server/pom.xml
渠道编码mock / wallet / alipay_* / wx_*PayChannelEnum
回调@RequestMapping 下 /pay/notify/orderPayNotifyController
管理端支付目录ruoyi-office-vben/apps/web-antd/src/views/pay/

官方菜单:1117 支付管理(/pay)。应用 1126,订单 1173,退款 1161,回调 2301,钱包目录 2551。看不到菜单先查角色。

支付应用

本系统截图:支付管理 → 应用信息。能进列表说明模块和菜单已经在跑。

支付订单

本系统截图:支付管理 → 支付订单。业务单只认支付单号,不要去改渠道后台。

功能开启 ​

单体 -P boot 时已经依赖支付实现,没有单独的「支付开关」页。启动 YudaoServerApplication 即可。

客户默认包 ruoyi-office-db/dump/latest/:先 schema_*.sql 再 static_data_*.sql,带 pay_* 表、菜单、字典 pay_channel_code,以及通知 Job。以后改表走 ruoyi-office-db/update/。

示例订单写死应用标识 demo。先在应用信息建一条 appKey = demo,再去接入示例下单。

XXL-Job 还要挂 payNotifyJob、payOrderSyncJob、payOrderExpireJob、payRefundSyncJob。转账另挂 payTransferSyncJob。payNotifyJob 没挂,业务单的「已支付」回调不会重试。

示意图:先应用后渠道。模拟渠道可以先把闭环跑通。

旧文 支付功能开启 已并入本页,请收藏本篇。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版