0e42e96ddb
新增 admin 模块接口文档(auth login/me、admins CRUD、audit-logs、feedback 处理、stats 概览、user coins/detail/status、wallet 流水、withdraw 对账/刷新/列表) + admin_user/admin_audit_log 两张表文档,更新 api/database README 索引。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: OuYingJun1024 <1034284404@qq.com> Reviewed-on: #12 Co-authored-by: ouzhou <ouzhou@wonderable.ai> Co-committed-by: ouzhou <ouzhou@wonderable.ai>
2.2 KiB
2.2 KiB
POST /admin/api/withdraws/{out_bill_no}/refresh — 单笔提现重试查单
所属:Admin·提现 组(前缀
/admin/api/withdraws) | 鉴权:Bearer admin_token(角色:finance,super_admin恒通过) | ← 返回 API 索引
对单笔提现单调微信查单并归一化:SUCCESS→success;FAIL/CANCELLED/CLOSED→退款+failed;查到 WAIT_USER_CONFIRM 视为用户放弃(cancel_if_unconfirmed=True),撤单+退款;ACCEPTED/PROCESSING 等仍在途则保持 pending。已是终态的单直接返回、不再查。
入参
- 路径:
out_bill_no(string) — 商户提现单号 - body:无
出参
响应 200:WithdrawOrderOut(归一化后的最新提现单)
WithdrawOrderOut
| 字段 | 类型 | 说明 |
|---|---|---|
id |
int | 提现单主键 |
user_id |
int | 所属用户 |
out_bill_no |
string | 商户提现单号 |
amount_cents |
int | 提现金额,单位:分 |
status |
string | 单状态(pending / success / failed) |
wechat_state |
string | null | 微信侧转账状态 |
transfer_bill_no |
string | null | 微信转账单号 |
fail_reason |
string | null | 失败/退款原因 |
created_at |
datetime | 创建时间(ISO 8601 UTC) |
updated_at |
datetime | 更新时间(ISO 8601 UTC) |
错误码
401未带/无效/过期 admin token、管理员被禁用(响应头带WWW-Authenticate: Bearer)403角色不足(需finance或super_admin)404提现单不存在(detail="提现单不存在")503微信支付未配置(捕获WxPayNotConfiguredError,detail="微信支付未配置")
注:微信查单本身失败(非未配置)时不抛错、不改状态,单保持
pending等下次重试,故无502。
说明
- 调用底层
app.repositories.wallet.refresh_withdraw_status(..., cancel_if_unconfirmed=True)(内部调微信查单/撤单/退款并 commit)。 - 写操作记审计 admin_audit_log(
action="withdraw.refresh",target_id=out_bill_no,detail为{status, wechat_state},含触发管理员与客户端 IP)。 - 关联 withdraw_order。金额单位为分。