12 KiB
12 KiB
提现功能 API 文档
目录
收款账号管理 API
1. 查询收款账号列表
请求
GET /api/payment-accounts?page=1&page_size=20
Authorization: Bearer {user_token}
响应
{
"code": 0,
"message": "success",
"data": {
"items": [
{
"id": 1,
"user_id": 123,
"account_type": "alipay",
"account_name": "张三",
"account_no": "138****5678",
"bank_name": "",
"bank_branch": "",
"certificate_urls": ["https://..."],
"is_default": true,
"status": "active",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:00:00Z"
}
],
"total": 1,
"page": 1,
"page_size": 20
}
}
2. 查询收款账号详情
请求
GET /api/payment-accounts/:id
Authorization: Bearer {user_token}
响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"user_id": 123,
"account_type": "alipay",
"account_name": "张三",
"account_no": "138****5678",
"bank_name": "",
"bank_branch": "",
"certificate_urls": ["https://..."],
"is_default": true,
"status": "active",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:00:00Z"
}
}
3. 添加收款账号
请求
POST /api/payment-accounts
Authorization: Bearer {user_token}
Content-Type: application/json
{
"account_type": "alipay", // alipay | wechat | bank
"account_name": "张三", // 必须与实名认证姓名一致
"account_no": "13812345678", // 支付宝账号/微信号/银行卡号
"bank_name": "中国工商银行", // 银行卡必填
"bank_branch": "北京分行", // 银行卡可选
"certificate_urls": [ // 凭证截图(可选)
"https://..."
]
}
响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"user_id": 123,
"account_type": "alipay",
"account_name": "张三",
"account_no": "138****5678",
"is_default": false,
"status": "active",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:00:00Z"
}
}
错误响应
{
"code": 40001,
"message": "账户名必须与实名认证姓名一致"
}
{
"code": 40002,
"message": "请先完成实名认证"
}
{
"code": 40003,
"message": "收款账号数量已达上限(最多5个)"
}
4. 更新收款账号
请求
PUT /api/payment-accounts/:id
Authorization: Bearer {user_token}
Content-Type: application/json
{
"bank_branch": "北京朝阳支行",
"certificate_urls": ["https://..."]
}
响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"account_type": "bank",
"account_name": "张三",
"account_no": "6222****1234",
"bank_name": "中国工商银行",
"bank_branch": "北京朝阳支行",
"is_default": false,
"status": "active",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:05:00Z"
}
}
5. 删除收款账号
请求
DELETE /api/payment-accounts/:id
Authorization: Bearer {user_token}
响应
{
"code": 0,
"message": "success",
"data": {
"deleted": true
}
}
6. 设置默认收款账号
请求
POST /api/payment-accounts/:id/set-default
Authorization: Bearer {user_token}
响应
{
"code": 0,
"message": "success",
"data": {
"updated": true
}
}
提现申请 API (用户端)
1. 创建提现申请
请求
POST /api/withdrawals
Authorization: Bearer {user_token}
Content-Type: application/json
{
"payment_account_id": 1,
"amount": 100.00
}
响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"user_id": 123,
"amount": 100.00,
"fee": 0.00,
"actual_amount": 100.00,
"account_type": "alipay",
"account_name": "张三",
"account_no": "138****5678",
"bank_name": "",
"status": "pending",
"review_remark": "",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:00:00Z",
"reviewed_at": null,
"paid_at": null
}
}
错误响应
{
"code": 40001,
"message": "提现金额低于最小限额"
}
{
"code": 40002,
"message": "提现金额超过最大限额"
}
{
"code": 40003,
"message": "余额不足"
}
2. 查询提现列表
请求
GET /api/withdrawals?page=1&page_size=20
Authorization: Bearer {user_token}
响应
{
"code": 0,
"message": "success",
"data": {
"items": [
{
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"user_id": 123,
"amount": 100.00,
"fee": 0.00,
"actual_amount": 100.00,
"account_type": "alipay",
"account_name": "张三",
"account_no": "138****5678",
"bank_name": "",
"status": "completed",
"review_remark": "审核通过",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:30:00Z",
"reviewed_at": "2026-06-06T10:10:00Z",
"paid_at": "2026-06-06T10:30:00Z"
}
],
"total": 1,
"page": 1,
"page_size": 20
}
}
3. 查询提现详情
请求
GET /api/withdrawals/:id
Authorization: Bearer {user_token}
响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"user_id": 123,
"amount": 100.00,
"fee": 0.00,
"actual_amount": 100.00,
"account_type": "alipay",
"account_name": "张三",
"account_no": "138****5678",
"bank_name": "",
"status": "processing",
"review_remark": "审核通过",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:10:00Z",
"reviewed_at": "2026-06-06T10:10:00Z",
"paid_at": null
}
}
4. 取消提现申请
请求
POST /api/withdrawals/:id/cancel
Authorization: Bearer {user_token}
响应
{
"code": 0,
"message": "success",
"data": {
"cancelled": true
}
}
错误响应
{
"code": 40001,
"message": "提现申请状态已锁定,无法操作"
}
提现管理 API (管理员端)
1. 查询提现列表
请求
GET /api/admin/withdrawals?status=pending&page=1&page_size=20
Authorization: Bearer {admin_token}
X-Required-Permission: withdrawal:list
查询参数
status: 状态筛选 (pending | processing | completed | rejected | cancelled)user_id: 用户ID筛选page: 页码page_size: 每页数量
响应
{
"code": 0,
"message": "success",
"data": {
"items": [
{
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"user_id": 123,
"user_nickname": "用户昵称",
"user_phone": "138****5678",
"amount": 100.00,
"fee": 0.00,
"actual_amount": 100.00,
"payment_account_id": 1,
"account_type": "alipay",
"account_name": "张三",
"account_no": "13812345678", // 管理员可见完整账号
"bank_name": "",
"bank_branch": "",
"status": "pending",
"reviewed_by": null,
"reviewed_by_name": "",
"reviewed_at": null,
"review_remark": "",
"paid_by": null,
"paid_by_name": "",
"paid_at": null,
"payment_proof_url": "",
"payment_remark": "",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:00:00Z"
}
],
"total": 1,
"page": 1,
"page_size": 20
}
}
2. 查询提现详情
请求
GET /api/admin/withdrawals/:id
Authorization: Bearer {admin_token}
X-Required-Permission: withdrawal:detail
响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"user_id": 123,
"user_nickname": "用户昵称",
"user_phone": "13812345678",
"amount": 100.00,
"fee": 0.00,
"actual_amount": 100.00,
"payment_account_id": 1,
"account_type": "alipay",
"account_name": "张三",
"account_no": "13812345678",
"bank_name": "",
"bank_branch": "",
"status": "pending",
"reviewed_by": null,
"reviewed_by_name": "",
"reviewed_at": null,
"review_remark": "",
"paid_by": null,
"paid_by_name": "",
"paid_at": null,
"payment_proof_url": "",
"payment_remark": "",
"created_at": "2026-06-06T10:00:00Z",
"updated_at": "2026-06-06T10:00:00Z"
}
}
3. 审核提现申请
请求
POST /api/admin/withdrawals/:id/review
Authorization: Bearer {admin_token}
X-Required-Permission: withdrawal:review
Content-Type: application/json
{
"approved": true,
"remark": "审核通过"
}
审核通过响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"status": "processing",
"reviewed_by": 10,
"reviewed_by_name": "财务管理员",
"reviewed_at": "2026-06-06T10:10:00Z",
"review_remark": "审核通过",
...
}
}
审核拒绝请求
{
"approved": false,
"remark": "账号信息不符"
}
审核拒绝响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"status": "rejected",
"reviewed_by": 10,
"reviewed_by_name": "财务管理员",
"reviewed_at": "2026-06-06T10:10:00Z",
"review_remark": "账号信息不符",
...
}
}
4. 确认打款
请求
POST /api/admin/withdrawals/:id/confirm-payment
Authorization: Bearer {admin_token}
X-Required-Permission: withdrawal:pay
Content-Type: application/json
{
"payment_proof_url": "https://storage.example.com/proofs/proof_123.jpg",
"remark": "已通过支付宝转账"
}
响应
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"withdraw_no": "WD17362512001a2b3c4d",
"status": "completed",
"paid_by": 10,
"paid_by_name": "财务管理员",
"paid_at": "2026-06-06T10:30:00Z",
"payment_proof_url": "https://storage.example.com/proofs/proof_123.jpg",
"payment_remark": "已通过支付宝转账",
...
}
}
状态说明
提现状态 (status)
| 状态 | 说明 | 允许操作 |
|---|---|---|
pending |
待审核 | 用户可取消、管理员可审核 |
processing |
处理中 | 管理员可确认打款 |
completed |
已完成 | 无 |
rejected |
已拒绝 | 无 |
cancelled |
已取消 | 无 |
账号类型 (account_type)
| 类型 | 说明 |
|---|---|
alipay |
支付宝 |
wechat |
微信 |
bank |
银行卡 |
错误码说明
| 错误码 | 说明 |
|---|---|
| 40001 | 请求参数错误 |
| 40002 | 实名认证未通过 |
| 40003 | 账号数量限制 |
| 40004 | 提现金额错误 |
| 40005 | 余额不足 |
| 40006 | 状态锁定 |
| 40401 | 未找到资源 |
| 40301 | 未授权 |
| 50001 | 服务器错误 |
接口权限说明
用户端接口
所有用户端接口需要携带用户 Token (Authorization: Bearer {user_token})
管理员端接口
所有管理员端接口需要:
- 携带管理员 Token (
Authorization: Bearer {admin_token}) - 拥有对应的权限
提现管理权限列表
withdrawal:list- 查看提现申请列表withdrawal:detail- 查看提现详情withdrawal:review- 审核提现申请withdrawal:pay- 确认打款
财务角色 (finance) 默认拥有以上所有权限。