You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang开发HTX交易机器人,调用火币合约API返回余额为0求助

解决HTX合约API查询余额返回0的问题

1. 确认API密钥权限

  • 登录HTX后台的API管理页面,检查当前密钥是否开启了合约账户读取权限。默认创建的API密钥可能仅开放现货权限,需手动勾选Contract Account Read相关选项,保存后重新测试。

2. 验证接口参数与端点

  • 针对/swap-api/v1/swap_account_info接口,需明确传入margin_account参数(例如USDT永续合约填USDT),未指定该参数可能导致返回默认币种的空余额。
  • 确保接口匹配账户类型:若使用交割合约,需调用/linear-swap-api/v1/linear_swap_account_info而非永续合约的swap接口;确认基础URLhttps://api.hbdm.com为HTX国际站合约API的正确域名。

3. 核对资金账户归属

  • 在HTX网页端手动确认180美元是否转入永续合约账户(对应swap接口)。HTX的现货、永续合约、交割合约账户资金相互隔离,转错账户会导致API查询不到余额。

4. 排查Golang签名逻辑

  • 合约API属于私有接口,必须通过HMAC签名验证,确保代码实现符合HTX的签名规则:
    • 签名字符串需按timestamp + 请求方法 + 接口路径 + 查询参数/请求体的格式拼接(GET用查询参数,POST用请求体)。
    • 请求头必须包含ACCESS-KEY(你的API密钥)、ACCESS-SIGN(生成的签名)、ACCESS-TIMESTAMP(当前毫秒级时间戳)三个字段。
    • 示例签名逻辑(Golang):
      import (
          "crypto/hmac"
          "crypto/sha256"
          "encoding/base64"
          "fmt"
          "net/url"
          "strconv"
          "time"
      )
      
      func generateHTXSignature(apiSecret, method, path string, params url.Values) string {
          timestamp := strconv.FormatInt(time.Now().UnixMilli(), 10)
          signContent := fmt.Sprintf("%s%s%s%s", timestamp, method, path, params.Encode())
          h := hmac.New(sha256.New, []byte(apiSecret))
          h.Write([]byte(signContent))
          return base64.StdEncoding.EncodeToString(h.Sum(nil))
      }
      

5. 手动测试接口排除代码问题

  • 用Postman或curl构造签名后的请求,直接调用接口:
    • 例如GET请求:https://api.hbdm.com/swap-api/v1/swap_account_info?margin_account=USDT
    • 若手动请求能返回正确余额,说明问题出在Golang代码的签名或参数拼接;若手动请求仍返回0,需重新检查账户权限与资金归属。

内容的提问来源于stack exchange,提问作者CupaState

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:46:07