2026-03-03 18:05:24 +08:00

82 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 构建 SiweMessagescheme、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` 中追加