313 lines
7.5 KiB
Markdown
313 lines
7.5 KiB
Markdown
# 提现审核流程优化
|
||
|
||
## 需求
|
||
|
||
提现申请提交后,应该明确告知用户:
|
||
- ✅ 提现申请已提交
|
||
- ⏳ 正在审核中
|
||
- 💰 审核通过后会自动到账微信零钱
|
||
|
||
而不是误导用户以为已经立即到账。
|
||
|
||
## 修改内容
|
||
|
||
### 1. 后端提示优化
|
||
|
||
**文件**:`app/api/withdraw/route.ts`
|
||
|
||
```typescript
|
||
return NextResponse.json({
|
||
success: true,
|
||
message: '提现申请已提交,正在审核中,通过后会自动到账您的微信零钱',
|
||
data: {
|
||
withdrawId,
|
||
amount,
|
||
account,
|
||
accountType: accountType === 'alipay' ? '支付宝' : '微信',
|
||
status: 'pending' // ✅ 新增:返回状态
|
||
}
|
||
})
|
||
```
|
||
|
||
**变更**:
|
||
- ❌ 旧:`message: '提现成功'` (误导性)
|
||
- ✅ 新:`message: '提现申请已提交,正在审核中,通过后会自动到账您的微信零钱'` (准确)
|
||
- ✅ 新增 `status: 'pending'` 字段
|
||
|
||
### 2. 前端提示优化
|
||
|
||
**文件**:`miniprogram/pages/referral/referral.js`
|
||
|
||
```javascript
|
||
if (res.success) {
|
||
wx.showModal({
|
||
title: '提现申请已提交 ✅',
|
||
content: res.message || '正在审核中,通过后会自动到账您的微信零钱',
|
||
showCancel: false,
|
||
confirmText: '知道了'
|
||
})
|
||
|
||
// 刷新数据(此时待审核金额会增加,可提现金额会减少)
|
||
this.initData()
|
||
}
|
||
```
|
||
|
||
**变更**:
|
||
- ❌ 旧标题:`'提现成功 🎉'` (误导性)
|
||
- ✅ 新标题:`'提现申请已提交 ✅'` (准确)
|
||
- ❌ 旧内容:`'¥X.XX 已到账您的微信零钱'` (虚假)
|
||
- ✅ 新内容:`'正在审核中,通过后会自动到账您的微信零钱'` (真实)
|
||
- ❌ 旧按钮:`'好的'`
|
||
- ✅ 新按钮:`'知道了'`
|
||
|
||
### 3. 错误提示优化
|
||
|
||
```javascript
|
||
} else {
|
||
wx.showToast({
|
||
title: res.message || res.error || '提现失败',
|
||
icon: 'none',
|
||
duration: 3000 // ✅ 增加显示时间到3秒
|
||
})
|
||
}
|
||
```
|
||
|
||
## 提现流程说明
|
||
|
||
### 完整流程
|
||
|
||
```
|
||
1. 用户点击"申请提现"
|
||
↓
|
||
2. 前端验证:可提现金额 >= 最低提现金额
|
||
↓
|
||
3. 后端创建提现记录:status = 'pending'
|
||
↓
|
||
4. 提示用户:"提现申请已提交,正在审核中"
|
||
↓
|
||
5. 刷新分销中心数据:
|
||
- 待审核金额 += 提现金额
|
||
- 可提现金额 -= 提现金额
|
||
↓
|
||
6. 管理员在后台审核
|
||
↓
|
||
7. 审核通过:
|
||
- 更新 withdrawals.status = 'completed'
|
||
- 自动转账到微信零钱
|
||
- 发送微信通知给用户
|
||
```
|
||
|
||
### 状态说明
|
||
|
||
| 状态 | 英文 | 说明 | 用户提示 |
|
||
|------|------|------|----------|
|
||
| 待审核 | `pending` | 提现申请已提交,等待管理员审核 | 正在审核中 |
|
||
| 已完成 | `completed` | 审核通过,已转账到微信零钱 | 已到账 |
|
||
| 已拒绝 | `failed` | 审核未通过 | 提现失败 |
|
||
|
||
### 数据变化示例
|
||
|
||
**提现前**:
|
||
```
|
||
累计佣金: 100元
|
||
待审核金额: 0元
|
||
可提现金额: 100 - 0 = 100元
|
||
```
|
||
|
||
**申请提现50元后**:
|
||
```
|
||
累计佣金: 100元
|
||
待审核金额: 0 + 50 = 50元
|
||
可提现金额: 100 - 50 = 50元
|
||
```
|
||
|
||
**审核通过后**:
|
||
```
|
||
累计佣金: 100元
|
||
待审核金额: 50 - 50 = 0元
|
||
已提现金额: 0 + 50 = 50元
|
||
可提现金额: 100 - 0 = 100元 (如果有新订单)
|
||
```
|
||
|
||
## 用户体验对比
|
||
|
||
### 修改前(误导性)
|
||
|
||
```
|
||
┌─────────────────────┐
|
||
│ 提现成功 🎉 │
|
||
├─────────────────────┤
|
||
│ ¥50.00 已到账您的 │
|
||
│ 微信零钱 │
|
||
├─────────────────────┤
|
||
│ [好的] │
|
||
└─────────────────────┘
|
||
```
|
||
|
||
**问题**:
|
||
- ❌ 用户以为钱已经到账
|
||
- ❌ 用户去微信查看,发现没钱
|
||
- ❌ 产生疑惑和不满
|
||
|
||
### 修改后(准确清晰)
|
||
|
||
```
|
||
┌─────────────────────┐
|
||
│ 提现申请已提交 ✅ │
|
||
├─────────────────────┤
|
||
│ 正在审核中,通过后 │
|
||
│ 会自动到账您的微信 │
|
||
│ 零钱 │
|
||
├─────────────────────┤
|
||
│ [知道了] │
|
||
└─────────────────────┘
|
||
```
|
||
|
||
**优点**:
|
||
- ✅ 用户知道需要等待审核
|
||
- ✅ 用户知道审核通过后会自动到账
|
||
- ✅ 符合实际情况
|
||
|
||
## 后续优化建议
|
||
|
||
### 1. 审核通知
|
||
|
||
管理员审核通过后,发送微信模板消息通知用户:
|
||
|
||
```javascript
|
||
// 伪代码
|
||
wx.sendTemplateMessage({
|
||
touser: userOpenId,
|
||
template_id: 'OPENTM415934726',
|
||
data: {
|
||
thing1: { value: '提现申请' },
|
||
amount2: { value: '50.00元' },
|
||
phrase3: { value: '审核通过' },
|
||
time4: { value: '2026-02-04 15:30' }
|
||
}
|
||
})
|
||
```
|
||
|
||
### 2. 提现记录页面
|
||
|
||
在"我的"页面增加"提现记录"入口,让用户查看:
|
||
- 待审核的提现申请
|
||
- 已完成的提现记录
|
||
- 失败的提现记录及原因
|
||
|
||
### 3. 审核预计时间
|
||
|
||
在提示中增加审核时长预期:
|
||
|
||
```
|
||
正在审核中,预计1-3个工作日内完成审核,
|
||
通过后会自动到账您的微信零钱
|
||
```
|
||
|
||
### 4. 自动审核
|
||
|
||
对于小额提现(如50元以下),可以实现自动审核:
|
||
|
||
```javascript
|
||
if (amount <= 50) {
|
||
// 自动审核通过
|
||
await query(`UPDATE withdrawals SET status = 'completed' WHERE id = ?`, [withdrawId])
|
||
// 立即转账
|
||
await wechatPay.transferToWallet(...)
|
||
return { message: '提现成功,已到账您的微信零钱' }
|
||
} else {
|
||
// 需要人工审核
|
||
return { message: '提现申请已提交,正在审核中' }
|
||
}
|
||
```
|
||
|
||
## 管理后台提现审核功能
|
||
|
||
### 审核页面功能
|
||
|
||
1. **提现列表**:
|
||
- 显示所有待审核的提现申请
|
||
- 显示用户信息、提现金额、申请时间
|
||
- 显示用户的累计佣金、历史提现次数
|
||
|
||
2. **审核操作**:
|
||
- 通过:调用微信商家转账接口
|
||
- 拒绝:填写拒绝原因
|
||
|
||
3. **记录查询**:
|
||
- 已完成的提现记录
|
||
- 失败的提现记录
|
||
|
||
### 审核接口(待实现)
|
||
|
||
```typescript
|
||
// POST /api/admin/withdraw/approve
|
||
{
|
||
"withdrawId": "W1738694028123",
|
||
"action": "approve" | "reject",
|
||
"reason": "拒绝原因(可选)"
|
||
}
|
||
```
|
||
|
||
## 测试步骤
|
||
|
||
### 1. 测试提现申请
|
||
|
||
1. 在小程序中进入分销中心
|
||
2. 确保可提现金额 >= 5元
|
||
3. 点击"申请提现"按钮
|
||
4. 确认提现金额
|
||
5. 查看提示是否为"提现申请已提交,正在审核中"
|
||
|
||
### 2. 验证数据变化
|
||
|
||
提现后立即刷新页面,检查:
|
||
- ✅ 累计佣金不变
|
||
- ✅ 待审核金额增加
|
||
- ✅ 可提现金额减少
|
||
- ✅ 提现按钮重新判断是否可用
|
||
|
||
### 3. 查看数据库
|
||
|
||
```sql
|
||
-- 查看提现记录
|
||
SELECT * FROM withdrawals
|
||
WHERE user_id = 'ogpTW5fmXRGNpoUbXB3UEqnVe5Tg'
|
||
ORDER BY created_at DESC
|
||
LIMIT 5;
|
||
|
||
-- 应该看到最新的记录,status = 'pending'
|
||
```
|
||
|
||
### 4. 模拟审核通过
|
||
|
||
```sql
|
||
-- 手动更新状态为已完成
|
||
UPDATE withdrawals
|
||
SET status = 'completed',
|
||
completed_at = NOW()
|
||
WHERE id = 'W1738694028123';
|
||
```
|
||
|
||
再次刷新小程序,检查:
|
||
- ✅ 待审核金额减少
|
||
- ✅ 可提现金额恢复
|
||
|
||
## 相关文件
|
||
|
||
- `app/api/withdraw/route.ts` - 提现接口(修改返回消息)
|
||
- `miniprogram/pages/referral/referral.js` - 前端提现逻辑(修改提示)
|
||
|
||
## 总结
|
||
|
||
这次优化的核心是**准确传达信息**:
|
||
|
||
- ❌ 不要给用户虚假期望("已到账"实际未到账)
|
||
- ✅ 明确告知用户当前状态("正在审核")
|
||
- ✅ 告知用户后续流程("通过后会自动到账")
|
||
|
||
这样可以:
|
||
1. 提升用户体验(不会产生困惑)
|
||
2. 减少客服咨询(用户知道要等待)
|
||
3. 建立信任(说到做到)
|