peixue-dev/Archive/peidu-temp-files/docs/[一次性]钱包充值功能-测试指南-2026-01-25.md

363 lines
7.4 KiB
Markdown
Raw Normal View History

2026-02-28 17:26:03 +08:00
# 💰 钱包充值功能 - 测试指南
> 创建时间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分钟