# POST /admin/api/withdraws/{out_bill_no}/refresh — 单笔提现重试查单 > 所属:Admin·提现 组(前缀 `/admin/api/withdraws`) | 鉴权:Bearer admin_token(角色:`finance`,`super_admin` 恒通过) | [← 返回 API 索引](../../README.md) 对单笔提现单调微信查单并归一化:`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](../database/admin_audit_log.md)(`action="withdraw.refresh"`,`target_id=out_bill_no`,`detail` 为 `{status, wechat_state}`,含触发管理员与客户端 IP)。 - 关联 [withdraw_order](../database/withdraw_order.md)。金额单位为分。