82 lines
2.8 KiB
Markdown
82 lines
2.8 KiB
Markdown
# pmset.ts
|
||
|
||
**路径**:`src/api/pmset.ts`
|
||
|
||
## 功能用途
|
||
|
||
Polymarket 结算/提现相关 API:`withdrawByWallet` 用于客户端钱包提现申请,需钱包验签(SIWE)。
|
||
|
||
## 核心能力
|
||
|
||
- `withdrawByWallet`:POST /pmset/withdrawByWallet,提交提现申请,需钱包 personal_sign 验签
|
||
- `usdcToAmount`:将 USDC 显示金额转为 API 所需整数(6 位小数)
|
||
- `getSettlementRequestsList`:分页获取提现/结算请求列表(管理端),支持 status 筛选
|
||
- `getSettlementRequestsListClient`:客户端分页获取提现记录列表,支持 status 筛选(pending/success/rejected/failed)
|
||
|
||
## POST /pmset/withdrawByWallet
|
||
|
||
### 请求体(request.PmSettlementWithdrawByWallet)
|
||
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|------|------|------|------|
|
||
| amount | number | 是 | 提现金额,6 位小数(1000000 = 1 USDC) |
|
||
| chain | string | 是 | 链标识,如 polygon、ethereum、arbitrum、optimism |
|
||
| message | string | 是 | SIWE 签名消息 |
|
||
| nonce | string | 是 | 随机 nonce |
|
||
| signature | string | 是 | 钱包签名 |
|
||
| tokenAddress | string | 是 | 出金地址(用户接收资金的地址) |
|
||
| tokenSymbol | string | 是 | 代币符号,默认 USDC |
|
||
| walletAddress | string | 是 | 钱包地址,取用户信息的 externalWalletAddress |
|
||
|
||
### 响应
|
||
|
||
`{ code, data, msg }`,`data` 为 `{ idempotencyKey?, requestNo? }`。
|
||
|
||
### 验签流程(与 Login.vue 一致)
|
||
|
||
1. 使用 `eth_requestAccounts` 获取钱包地址
|
||
2. 使用 `eth_chainId` 获取链 ID
|
||
3. 构建 SiweMessage(scheme、domain、address、statement、uri、version、chainId、nonce)
|
||
4. `personal_sign` 签名消息
|
||
5. POST 请求体包含 message、nonce、signature、walletAddress、amount、chain
|
||
|
||
## 使用方式
|
||
|
||
```typescript
|
||
import { withdrawByWallet, usdcToAmount } from '@/api/pmset'
|
||
|
||
const amount = usdcToAmount(1.5) // 1500000
|
||
const res = await withdrawByWallet(
|
||
{ amount, chain: 'polygon', message, nonce, signature, walletAddress },
|
||
{ headers: authHeaders },
|
||
)
|
||
```
|
||
|
||
## GET /pmset/getPmSettlementRequestsListClient
|
||
|
||
客户端分页获取提现记录列表,需鉴权。钱包页面提现记录使用此接口。
|
||
|
||
### 响应 data 结构
|
||
|
||
`{ list, total, page, pageSize }`,list 项含:ID、CreatedAt、UpdatedAt、chain、amount、fee、status、reason、requestNo、tokenAddress。
|
||
|
||
## GET /pmset/getPmSettlementRequestsList
|
||
|
||
分页获取提现/结算请求列表(管理端),需鉴权。
|
||
|
||
### 请求参数
|
||
|
||
| 参数 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| page | number | 页码 |
|
||
| pageSize | number | 每页数量 |
|
||
| status | string | 状态筛选:pending、success、rejected、failed |
|
||
|
||
### 响应
|
||
|
||
`data` 为 `PageResult<SettlementRequestItem>`,list 项含 amount、requestNo、chain、status、createdAt、reason、payoutError 等。
|
||
|
||
## 扩展方式
|
||
|
||
- 新增其他 pmset 相关接口时,在 `src/api/pmset.ts` 中追加
|