7.4 KiB
7.4 KiB
💰 钱包充值功能 - 测试指南
创建时间:2026-01-25
状态:已实施,待测试
✅ 已完成的修改
后端修改:
- ✅
WalletController.java- 添加 @CurrentUser 注解 - ✅ 新增接口:
/api/wallet/recharge-request- 创建充值请求 - ✅ 新增接口:
/api/wallet/mock-pay- 模拟支付成功 - ✅ 新增接口:
/api/wallet/recharge-callback- 支付回调
前端修改:
- ✅
recharge.vue- 改造充值流程为两步:创建请求 → 模拟支付 - ✅ 添加真实支付方法(已注释,后期启用)
🧪 测试步骤
步骤1:重启后端服务
# 进入后端目录
cd peidu/backend
# 重新编译
mvn clean compile
# 启动服务
mvn spring-boot:run
步骤2:测试充值功能(前端)
2.1 登录系统
- 打开小程序
- 使用测试账号登录
- 确保登录成功并获取到 token
2.2 进入钱包页面
- 点击"我的" → "我的钱包"
- 查看当前余额(应该显示 ¥0.00 或之前的余额)
2.3 测试充值
- 点击"充值"按钮
- 选择充值金额(如 ¥100)
- 选择支付方式(微信支付或支付宝)
- 点击"确认充值"
- 观察控制台日志:
创建充值请求: {amount: 100, paymentChannel: 'wechat'} 充值请求响应: {code: 200, data: {...}} 充值请求创建成功: {transactionNo: 'RCH...', amount: 100, ...} 开始模拟支付... 模拟支付响应: {code: 200, data: '充值成功'} - 应该看到"充值成功"提示
- 自动返回钱包页面
- 余额应该增加 ¥100
步骤3:测试订单支付(钱包扣款)
3.1 创建订单
- 选择服务和陪伴员
- 创建订单
- 记录订单ID
3.2 使用钱包支付
- 在订单详情页选择"钱包支付"
- 点击"立即支付"
- 应该看到"支付成功"提示
- 订单状态变为"已支付"
3.3 验证余额
- 返回钱包页面
- 余额应该减少(订单金额)
- 查看交易记录,应该有一条"订单支付"记录
步骤4:测试退款功能
4.1 取消订单
- 在订单详情页点击"取消订单"
- 选择取消原因
- 确认取消
4.2 验证退款
- 返回钱包页面
- 余额应该增加(退回订单金额)
- 查看交易记录,应该有一条"订单退款"记录
步骤5:测试交易记录
- 在钱包页面点击"交易记录"
- 应该看到所有交易记录:
- 充值记录(类型:recharge)
- 消费记录(类型:consume)
- 退款记录(类型:refund)
- 每条记录应该显示:
- 交易类型
- 交易金额
- 交易前余额
- 交易后余额
- 交易时间
🔍 后端API测试(可选)
使用Postman或curl测试
1. 登录获取token
POST http://localhost:8080/api/auth/login
Content-Type: application/json
{
"phone": "13800138000",
"password": "123456"
}
# 响应:
{
"code": 200,
"data": {
"token": "eyJhbGciOiJIUzUxMiJ9...",
"userInfo": {...}
}
}
2. 查看钱包信息
GET http://localhost:8080/api/wallet/info
Authorization: Bearer {token}
# 响应:
{
"code": 200,
"data": {
"id": 1,
"userId": 1,
"balance": 0.00,
"frozenAmount": 0.00,
"totalRecharge": 0.00,
"totalConsume": 0.00,
...
}
}
3. 创建充值请求
POST http://localhost:8080/api/wallet/recharge-request
Authorization: Bearer {token}
Content-Type: application/json
{
"amount": 100,
"paymentChannel": "wechat"
}
# 响应:
{
"code": 200,
"data": {
"transactionNo": "RCH1737792000000ABCD1234",
"amount": 100,
"paymentChannel": "wechat",
"userId": 1
}
}
4. 模拟支付
POST http://localhost:8080/api/wallet/mock-pay
Authorization: Bearer {token}
Content-Type: application/json
{
"transactionNo": "RCH1737792000000ABCD1234",
"amount": 100,
"paymentChannel": "wechat"
}
# 响应:
{
"code": 200,
"data": "充值成功"
}
5. 再次查看钱包信息
GET http://localhost:8080/api/wallet/info
Authorization: Bearer {token}
# 响应:
{
"code": 200,
"data": {
"balance": 100.00, # 余额增加了
"totalRecharge": 100.00, # 累计充值增加了
...
}
}
6. 查看交易记录
GET http://localhost:8080/api/wallet/transactions
Authorization: Bearer {token}
# 响应:
{
"code": 200,
"data": [
{
"id": 1,
"userId": 1,
"transactionType": "recharge",
"amount": 100.00,
"balanceBefore": 0.00,
"balanceAfter": 100.00,
"transactionNo": "RCH1737792000000ABCD1234",
"paymentChannel": "wechat",
"status": 1,
"remark": "钱包充值",
"createdTime": "2026-01-25 14:00:00"
}
]
}
⚠️ 常见问题排查
问题1:充值失败,提示"未登录"
原因: token未正确传递或已过期
解决:
- 检查前端是否正确存储了token
- 检查请求头是否包含
Authorization: Bearer {token} - 重新登录获取新token
问题2:充值失败,提示"创建充值请求失败"
原因: 后端接口参数错误
解决:
- 查看后端日志
- 检查
WalletController.rechargeRequest()方法 - 确认 @CurrentUser 注解是否生效
问题3:模拟支付失败
原因: 钱包服务异常
解决:
- 查看后端日志
- 检查数据库 wallet 表是否存在
- 检查 WalletService.recharge() 方法
问题4:余额没有增加
原因: 数据库更新失败或前端未刷新
解决:
- 查看数据库 wallet 表,确认余额是否更新
- 查看 wallet_transaction 表,确认交易记录是否创建
- 前端重新进入钱包页面刷新数据
📊 数据库验证
查看钱包余额
SELECT * FROM wallet WHERE user_id = 1;
查看交易记录
SELECT * FROM wallet_transaction
WHERE user_id = 1
ORDER BY created_time DESC
LIMIT 10;
验证数据一致性
-- 验证余额 = 累计充值 - 累计消费 - 累计提现
SELECT
user_id,
balance,
total_recharge,
total_consume,
total_withdraw,
(total_recharge - total_consume - total_withdraw) AS calculated_balance,
(balance - (total_recharge - total_consume - total_withdraw)) AS difference
FROM wallet
WHERE user_id = 1;
-- difference 应该为 0
✅ 测试检查清单
- 后端服务已重启
- 登录成功,获取到token
- 钱包页面显示正常
- 充值功能正常(金额增加)
- 订单支付功能正常(金额减少)
- 退款功能正常(金额退回)
- 交易记录显示正常
- 数据库数据一致性验证通过
🎉 测试通过标准
- ✅ 充值成功,余额正确增加
- ✅ 订单支付成功,余额正确减少
- ✅ 退款成功,余额正确退回
- ✅ 交易记录完整准确
- ✅ 数据库数据一致性正确
- ✅ 无报错,日志正常
📝 测试完成后
测试通过后,你就拥有了:
- ✅ 完整的模拟支付流程
- ✅ 钱包充值、扣款、退款功能
- ✅ 交易记录查询
- ✅ 易于替换为真实支付的架构
下一步: 集成真实的微信/支付宝支付(参考实施方案文档)
创建时间: 2026-01-25
预计测试时间: 15分钟