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