# POST /admin/api/withdraws/reconcile — 批量对账(扫超时 pending 单) > 所属:Admin·提现 组(前缀 `/admin/api/withdraws`) | 鉴权:Bearer admin_token(角色:`finance`,`super_admin` 恒通过) | [← 返回 API 索引](../../README.md) 扫描创建时间超过 `older_than_minutes` 分钟、仍为 `pending` 的提现单,逐单调微信查单并归一化(成功落 `success`;失败/已撤销则退款落 `failed`;查到 `WAIT_USER_CONFIRM` 视为用户放弃,撤单+退款)。用于解开"扣了款但转账没发起/没确认"的孤儿单。单笔失败不影响其余(内部 rollback 后继续,下轮再试)。 > 路由注册顺序上,静态路径 `/reconcile` 必须在路径参数 `/{out_bill_no}/refresh` 之前声明。 ## 入参 - 路径:无 - query: | 字段 | 类型 | 必填 | 默认 | 说明 | |---|---|---|---|---| | `older_than_minutes` | int | ❌ | 15 | 只扫创建时间早于「现在 − N 分钟」的 pending 单;`ge=0` | - body:无 ## 出参 响应 `200`:`ReconcileResult` **ReconcileResult** | 字段 | 类型 | 说明 | |---|---|---| | `checked` | int | 本次扫到的超时 pending 单数量 | | `resolved` | int | 其中被归一化为终态(success/failed)的数量 | ## 错误码 - `401` 未带/无效/过期 admin token、管理员被禁用(响应头带 `WWW-Authenticate: Bearer`) - `403` 角色不足(需 `finance` 或 `super_admin`) - `422` query 参数校验失败(如 `older_than_minutes < 0`) - `503` 微信支付未配置(捕获 `WxPayNotConfiguredError`,`detail="微信支付未配置"`) ## 说明 - 调用底层 `app.repositories.wallet.reconcile_pending_withdraws`(内部逐单调微信查单/撤单/退款,各自 commit)。 - 写操作记审计 [admin_audit_log](../database/admin_audit_log.md)(`action="withdraw.reconcile"`,`detail` 为 `{checked, resolved}`,含触发管理员与客户端 IP)。 - 关联 [withdraw_order](../database/withdraw_order.md)。