TESTS.md 4.0 KB

Pacifica 集成测试说明(可直接运行)

一、准备工作

  • 环境变量(.env):
    • PACIFICA_BASE_URL=https://api.pacifica.fi
    • PACIFICA_WS_URL=wss://ws.pacifica.fi
    • PACIFICA_ACCOUNT(主账户公钥,Base58)
    • PACIFICA_PRIVATE_KEYPACIFICA_ACCOUNT_PRIVATE_KEY(主账户私钥,Base58 或 32/64 字节 JSON 数组)
    • 可选代理钱包:PACIFICA_AGENT_WALLETPACIFICA_AGENT_PRIVATE_KEY
  • 推荐开启 debug:PACIFICA_DEBUG=1(会打印签名数据与打码后的最终请求体)

二、测试脚本

  • 入口:examples/pacifica_test.ts
  • 运行:

    PACIFICA_ENABLE_TEST_ORDER=1 yarn test:pacifica
    # 启用 TP/SL 单例测试
    PACIFICA_ENABLE_TEST_ORDER=1 PACIFICA_ENABLE_TEST_STOP=1 yarn test:pacifica
    # WebSocket 简易订阅(深度/订单/余额/成交),默认 15s 后退出
    yarn test:pacifica:ws
    

三、覆盖范围(已打通)

  • 市价下单(BUY/SELL,IOC)
  • 限价下单(GTC)与撤单(cancelOrder)
  • 全撤(cancelAll)
  • 仓位 TP/SL(使用 /api/v1/positions/tpslset_position_tpsl 签名)
    • 支持单独设置 TPSL(推荐先验证单例,可规避部分后端校验路径)
  • 批量接口(/api/v1/orders/batch):
    • 混合用例(Create 两笔 + Cancel 其中一笔),逐动作单独签名
    • 注意 Create 的签名字段需包含 reduce_only

四、重要细节

  • 符号规范化:下单/TP/SL/订单簿等都使用基础符号(如 BTC),测试脚本已统一处理
  • 签名仅覆盖业务字段;account/agent_wallet 不参与签名
  • client_order_id 使用 UUID;slippage_percent 默认 0.5
  • 知悉问题:openOrders() 在当前环境返回 403(CDN/白名单/权限),不影响其他路径
  • WebSocket(无需 login):

    • 连接 wss://ws.pacifica.fi/ws,然后直接发送订阅消息:

      {"method":"subscribe","params":{"source":"prices"}}
      {"method":"subscribe","params":{"source":"book","symbol":"BTC","agg_level":1}}
      {"method":"subscribe","params":{"source":"account_info","account":"<BASE58>"}}
      {"method":"subscribe","params":{"source":"account_balance","account":"<BASE58>"}}
      {"method":"subscribe","params":{"source":"account_positions","account":"<BASE58>"}}
      {"method":"subscribe","params":{"source":"account_orders","account":"<BASE58>"}}
      
  • 心跳:每 60s 内需有消息;建议每 30s 发送 {"method":"ping"},服务端会返回 {"channel":"pong"}

  • channel 值与订阅源一致:pricesbooktradesaccount_infoaccount_balanceaccount_positionsaccount_orders

五、常见错误与处理

  • Verification failed:
    • 检查签名字段是否与文档一致(大小写、嵌套结构);
    • 检查 PACIFICA_ACCOUNT 与私钥派生公钥是否一致;
  • 500 Internal server error(TP/SL):
    • 先用 TP 或 SL 单例测试;保留 PACIFICA_DEBUG=1 日志提交官方定位

六、参考文档