# 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)。金额单位为分。
