# 💰 钱包充值功能 - 测试指南 > 创建时间: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分钟