钱包充值、支付、退款
这篇解决什么
会员钱包余额存在哪、充值怎么变成支付单、用钱包付款怎么扣款。读完能对上 pay_wallet、渠道码 wallet,以及充值套餐页。
默认端口 48080。管理端前缀 /admin-api,用户端 /app-api。先完成 支付功能设计。充值本身还要一个真渠道或模拟渠道。
示意图:充值是「用别的渠道付钱,成功后加余额」。钱包支付是「从余额扣款」。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | 钱包实现 | ruoyi-office/yudao-module-pay/ |
| 钱包 | @TableName("pay_wallet"),余额单位分 | PayWalletDO |
| 流水 | pay_wallet_transaction | PayWalletTransactionDO |
| 充值单 | pay_wallet_recharge | PayWalletRechargeDO |
| 套餐 | pay_wallet_recharge_package | 管理端维护 |
| 渠道 | wallet,配置为空 | WalletPayClient |
| 应用 key | 默认 wallet | yudao.pay.wallet-pay-app-key |
菜单:钱包管理 2551,钱包余额 2557(/pay/wallet/wallet-balance),充值套餐 2552。改余额权限字 pay:wallet:update-balance。

本系统截图:支付管理 → 钱包管理 → 钱包余额。一行对应一个用户、一种用户类型。
用户类型复用 UserTypeEnum:会员或管理员都能有钱包。userId + userType 唯一。冻结金额、累计充值、累计支出都在同一行。
充值和付款
充值走用户端 POST /pay/wallet-recharge/create。会先写充值单,再创建支付单。支付成功后加余额、记流水。套餐可以带赠送金额,在管理端配。
用钱包付业务单:应用下要开通 wallet 渠道。WalletPayClient 下单时从钱包扣款,退款时把钱加回去。渠道配置同样是空的。
充值不要选钱包渠道
充值单本身必须用 mock / 支付宝 / 微信等渠道付钱。用钱包充钱包会套娃。wallet 渠道只给「已经有余额」的业务单用。
示意图:左边充值,右边消费。中间是余额,不是第二套支付网关。
管理端可以手工调余额,但要记流水。会员端看余额、流水、充值记录走 AppPayWalletController 同一前缀 /pay/wallet。
配置与操作
走 钱包管理(2551)下的 钱包余额(2557,/pay/wallet/wallet-balance)和 充值套餐(2552)。改余额要权限字 pay:wallet:update-balance。套餐可带赠送金额。
用户端 POST /pay/wallet-recharge/create 先写充值单再创支付单,渠道成功后加 pay_wallet 余额并记流水。业务单要用钱包付款,须在应用下开通 wallet 渠道。充值本身不要选 wallet,须用 mock / 支付宝 / 微信。userId + userType 唯一,会员和管理员都能有钱包。开启见 支付功能设计。

本系统截图:支付管理 → 钱包管理 → 充值套餐。套餐可带赠送金额,给用户端充值选。
