fa4127b9e5
Reviewed-on: #128
38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
# POST /api/v1/wallet/withdraw — 发起提现到微信零钱
|
||
|
||
> 所属:Wallet 组(前缀 `/api/v1/wallet`) | 鉴权:Bearer | 限流:同 IP ≤20 次/分 | [← 返回 API 索引](../README.md)
|
||
>
|
||
> 集成实现:见 [integrations/wxpay](../../integrations/wxpay.md)(微信 V3 商家转账、签名、实名加密)。
|
||
|
||
## 入参
|
||
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|---|---|---|---|
|
||
| `amount_cents` | int | ✅(>0) | 提现金额(分),须落在 `[min_cents, max_cents]` |
|
||
| `source` | string | ❌(默认 `coin_cash`) | 提现账户来源(#121 分账):`coin_cash`(金币兑换的现金)/ `invite_cash`(邀请奖励金)。按它扣对应余额、流水落对应账本([cash_transaction](../../database/cash_transaction.md) / [invite_cash_transaction](../../database/invite_cash_transaction.md)) |
|
||
| `user_name` | string | ❌ | 实名(达额时微信商家转账要求,可空) |
|
||
| `out_bill_no` | string | ❌ | **客户端幂等键(商户单号)**:同号重试不重复转账;不传则服务端生成 |
|
||
|
||
## 出参
|
||
响应 `200`:`WithdrawResultOut`
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `out_bill_no` | string | 商户提现单号(查单用) |
|
||
| `status` | string | `pending` / `success` / `failed` |
|
||
| `wechat_state` | string \| null | 微信侧原始状态 |
|
||
| `amount_cents` | int | 本次提现额(分) |
|
||
| `cash_balance_cents` | int | 提现后现金余额(分) |
|
||
| `package_info` | string \| null | 拉起微信确认页用(`WXOpenBusinessView` requestMerchantTransfer) |
|
||
| `mch_id` | string \| null | 商户号 |
|
||
| `app_id` | string \| null | 微信 AppID |
|
||
|
||
## 错误码
|
||
- `400` 金额越界 / 未绑定微信
|
||
- `409` 现金余额不足
|
||
- `502` 微信转账调用失败(余额已退回)
|
||
- `503` 微信支付未配置
|
||
|
||
## 说明
|
||
走微信「商家转账到零钱」V3。先扣余额建单再调微信,转账失败则退回余额。`out_bill_no` 幂等防止网络重试重复打款。返回的 `package_info`/`mch_id`/`app_id` 供 App 拉起微信确认页;确认结果由 [wallet-withdraw-status](./wallet-withdraw-status.md) 轮询。
|