# 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`,list 项含 amount、requestNo、chain、status、createdAt、reason、payoutError 等。 ## 扩展方式 - 新增其他 pmset 相关接口时,在 `src/api/pmset.ts` 中追加