LogoLogo
X👾💡🎒
中文支持文档
  • Support Docs
  • Technical Docs
  • API Docs
中文支持文档
  • 开始使用
    • 下载链接
    • 移动端下载指南
  • 交易所
    • 账户功能
      • 更改邮箱
      • 止盈止损订单(TP/SL)
      • 导出交易历史(CSV)
      • 订单类型与执行方式
      • 生成 Backpack 交易所 API 密钥
    • 身份验证
      • 如何进行账户验证
        • 创建新账户
        • 身份验证(KYC)指南
      • KYC身份验证待处理
      • 支持地区
    • 充值和提现
      • 充提币问题解决指南
      • 如何充币
      • 如何提币
      • 提现费用
      • 法定货币
        • 如何通过电汇充值
        • 如何通过电汇提现
        • 常见问题解答
          • 充值
          • 提现
        • 银行指南
          • 众安银行(ZA Bank)
            • 通过 ZA Bank 向 Backpack 充值 USD
            • 从 Backpack 提现 USD 到 ZA Bank
          • Chase
            • 如何通过电汇方式充值 — Chase Bank
            • 如何通过电汇方式提现 — Chase Bank
    • 登录与安全
      • 账户身份验证要求
      • 重置密码
      • OTP验证码
      • 重置 2FA
      • 未经授权的访问
      • 排查网络连接指南
    • 产品常见问题
      • 现货交易常见问题
      • 借贷常见问题
    • 项目与计划
      • 积分计划
      • 邀请返佣
      • 联盟计划
        • 灵活佣金分享
      • 做市商计划
      • VIP计划
      • 交易等级及查询方式
      • 代币上线申请
      • 漏洞赏金计划
    • 交易费用
    • API与开发者文档
      • API客户端
      • Python API 指南
  • 钱包
    • 什么是 Backpack 钱包?
    • 入门指南
      • 支持的浏览器和平台
      • 导入/恢复钱包
    • 钱包操作
      • 代币兑换
      • 如何通过 MoonPay 在 Backpack 钱包中买卖加密货币
        • 在 Backpack 钱包中使用 MoonPay 购买加密货币
        • 在 Backpack 钱包中使用 MoonPay 出售加密货币
      • 质押 SOL
      • 邀请、兑换并赚取奖励
      • SOL/ETH 跨链桥
      • NFT 资产保护
      • 添加网络
      • 连接硬件钱包
      • 多重签名(Multisig)
      • 自定义 RPC 地址
      • 添加开发者测试网
    • 问题排查
      • 隐藏垃圾NFT
      • 隐藏代币
      • 钱包无法加载
      • 查看助记词和私钥
  • 报告问题或漏洞
    • 交易所
    • 钱包
  • 法律信息
    • General Legal
      • User Agreement
      • Privacy Policy
      • Cookie Policy
    • VARA Disclosures
      • Virtual Asset Standards
      • VARA License Information
      • Risk Disclosures
      • Price Quotes
      • Exchange Trading Rules
      • Complaints
      • Available Digital Assets
    • Backpack Wallet
      • Terms and Conditions
      • Privacy Notice
Powered by GitBook

@ 2025 Backpack Exchange

On this page
  • 公共端点
  • 私有端点
  • 注意:
  • SDK
Export as PDF
  1. 交易所
  2. API与开发者文档

Python API 指南

PreviousAPI客户端Next钱包

Last updated 1 month ago

如果你打算使用账户端点,请先获取你的 API 密钥:

安装所需的 Python 库:

  • cryptography – 用于 X-Signature(仅限)

  • requests – 用于发起 HTTP 请求(如果你偏好异步方式,可使用 aiohttp)

pip3 install cryptography requests 

如果你打算使用,请安装 dotenv-python 以通过环境变量安全管理你的密钥。

pip3 install python-dotenv

创建一个a .env文件并像下面这样存储你的密钥:

PUBLIC_KEY=zDIJj9qneWIY0IYZ5aXoHcNMCm+XDhVcTssiT0HyY0A=
SECRET_KEY=4odxgSUxFrC/zsKWZF4OQwYAgnNu9hnWH3NxWfLAPz4=

创建一个 a .gitignore文件并添加 .env以将其排除在版本控制之外。

.env

以下所有示例中,我们将使用同步的 requests 库。首先导入它:

import requests

公共端点

对于公共端点,仅需发送一个 GET 请求。不需要 API 密钥。

举例:

# https://docs.backpack.exchange/#tag/Markets/operation/get_open_interest
BASE_URL: str = ""  # 所有请求的基础 API 地址
symbol: str = "SOL_USDC_PERP"  # 指定交易对
result_url: str = f"{BASE_URL}api/v1/openInterest?symbol={symbol}"  # 将参数作为查询字符串添加。对于GET请求,你只需要查询字符串
from json import JSONDecodeError

response = requests.get(url=result_url)  # 发起 GET 请求
print(f"response status code: {response}")
if response.status_code == 200:
    # 为防止接收到意外数据,确保代码安全
    try:
        print(f"response json: {response.json()}") 
        
        open_interest: str = response.json()[0]["openInterest"]
        print(f"open interest: {open_interest}")
    except JSONDecodeError:
        print(f"如果响应不是 JSON 的内容: {response.text}")
else:
    ...
response status code: <Response [200]>
response json: [{'openInterest': '81420.17', 'symbol': 'SOL_USDC_PERP'}]
open interest: 81420.17

如果你有多个参数,使用 & 符号连接它们。

私有端点

对于私有端点,我们需要创建特定的请求头和请求体(对于 POST 请求)。

import base64  # 用于 base64 编码签名
from time import time  # 获取时间戳
import os  # 访问环境变量

from cryptography.hazmat.primitives.asymmetric import ed25519  #导入ed25519 以创建用于签名消息的私钥
# 在你的代码中使用以下内容:
# from dotenv import load_dotenv, find_dotenv  
# load_dotenv(find_dotenv())
# public_key: str = os.getenv("PUBLIC_KEY")
# secret_key: str = os.getenv("SECRET_KEY")

public_key: str = "zDIJj9qneWIY0IYZ5aXoHcNMCm+XDhVcTssiT0HyY0A="  # 不安全示例
secret_key: str = "4odxgSUxFrC/zsKWZF4OQwYAgnNu9hnWH3NxWfLAPz4="  # 不安全示例

private_key = ed25519.Ed25519PrivateKey.from_private_bytes(
            base64.b64decode(secret_key)
        )

timestamp = int(time() * 1e3)  # 毫秒级 UNIX 时间戳
window: str = "5000"  # 请求有效的时间窗口(毫秒)

现在,X-Timestamp(时间戳)、X-Window(窗口)和 X-API-Key (公钥)都已准备就绪。接下来我们将创建 X-Signature:

instruction: str = "depositAddressQuery"
sign_str = f"instruction={instruction}"

# 此端点要求带上 "blockchain" 参数
params: dict = {
    "blockchain": "Solana",
}
# 通用代码:根据任意参数生成有效的查询字符串
sorted_params_list = []
for key, value in sorted(params.items()):
    if isinstance(value, bool):  # 布尔值需转小写
        value = str(value).lower()
    sorted_params_list.append(f"{key}={value}")
sorted_params = "&".join(sorted_params_list)

if sorted_params:
    sign_str += "&" + sorted_params
sign_str += f"&timestamp={timestamp}&window={window}" 

print(sign_str)

输出示例:

instruction=depositAddressQuery&blockchain=Solana&timestamp=1743731167786&window=5000

签名:

signature_bytes = private_key.sign(sign_str.encode())
encoded_signature = base64.b64encode(signature_bytes).decode()
print(f"signed query string: {encoded_signature}")

输出示例:

signed query string: lLc/zjqju853/hmCdb9dXtMhUijoetARooBn56hqbxPNXZTV9Gy1

创建请求头:

headers = {
    "X-API-Key": public_key,
    "X-Signature": encoded_signature,
    "X-Timestamp": str(timestamp),
    "X-Window": window,
    "Content-Type": "application/json; charset=utf-8",
}

发送请求:

url = ""
response = requests.get(url=url, headers=headers, params=params)
print(response.json())

输出示例:

{'address': '8PzpK8s8ezuSnXPjdPxR2FdZfzm5urkcUePrDL419PRC'}

注意:

对于 POST 请求,包含 JSON 请求体并使用 post() 方法。

POST 示例:

url_example = ""
response = (url=url, headers=headers, json=params)

SDK

SDK可大大简化开发流程!

示例:

获取充值地址:

https://backpack.exchange/portfolio/settings/api-keys
账户端点
账户端点
https://docs.backpack.exchange/#tag/Capital/operation/get_deposit_address
https://github.com/sndmndss/bpx-py