Developer SDK
Python 最小生产闭环
示例展示签名请求、行情查询和下单调用的统一工程模式,可直接迁移到内部策略服务。
Python 3.12 · requests + hmac + hashlib
import hashlib
import hmac
import json
import time
import requests
BASE = "https://api.your-domain.com"
API_KEY = "pmk_live_xxx"
API_SECRET = "pmsec_live_xxx"
TENANT_ID = "tenant_xxx"
def sign(method, path, query=None, body=None):
query = query or ""
body_text = json.dumps(body or {}, separators=(",", ":"), ensure_ascii=False) if method != "GET" else ""
body_hash = hashlib.sha256(body_text.encode("utf-8")).hexdigest()
ts = str(int(time.time() * 1000))
canonical = "\n".join([ts, method, path, query, body_hash])
signature = hmac.new(API_SECRET.encode("utf-8"), canonical.encode("utf-8"), hashlib.sha256).hexdigest()
headers = {
"X-PM-API-KEY": API_KEY,
"X-PM-TIMESTAMP": ts,
"X-PM-SIGNATURE": signature,
"X-PM-TENANT-ID": TENANT_ID,
"Content-Type": "application/json",
}
return headers, body_text
headers, _ = sign("GET", "/v1/quotes", query="symbols=AAPL.US,BTCUSD.CRYPTO&depth=1")
quotes = requests.get(f"{BASE}/v1/quotes?symbols=AAPL.US,BTCUSD.CRYPTO&depth=1", headers=headers, timeout=10).json()
order = {
"symbol": "AAPL.US",
"side": "buy",
"type": "limit",
"quantity": "10",
"price": "188.00",
"time_in_force": "DAY",
}
headers, body_text = sign("POST", "/v1/orders", body=order)
headers["Idempotency-Key"] = "idem-order-2026-001"
result = requests.post(f"{BASE}/v1/orders", headers=headers, data=body_text, timeout=10).json()
Engineering Checklist
生产接入清单
建议按以下顺序推进,降低首次上线风险。
- 完成用户注册、邮箱验证、API Key 签发与轮换策略。
- 接入 `/v1/status`、`/v1/quotes`、`/v1/orders` 作为核心健康链路。
- 为所有写接口设置幂等键与重试退避策略。
- 按连接器目录优先级分阶段接入,并设置 failover 预案。
- 管理员侧启用审计事件查询与 SMTP 告警通知。
Docs
文档入口
开发、测试、部署和治理文档统一维护,保证跨团队沟通一致性。