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

PHP集成Binance Spot API问题:找不到端点及Timestamp作用咨询

PHP集成Binance现货API问题解决

一、现货钱包接口的正确端点

你之前用的api/v1/balances是旧版废弃端点,Binance当前用于查询现货账户资产的有效接口是:
GET /api/v3/account
这个接口会返回所有现货资产的余额、可用金额、冻结金额等完整信息,满足你管理现货钱包的需求。

二、Timestamp(时间戳)的作用

  • 防重放攻击:Binance服务器会验证请求时间戳与自身当前时间的差值(默认允许5秒误差),超出范围直接拒绝请求,避免攻击者重复提交旧的合法请求。
  • 保证请求时效性:确保请求是在有效窗口内发起的,避免因网络延迟导致过期请求被错误处理。

三、你的测试代码修正

代码主要问题是端点错误,还有冗余的curl设置,修正后代码如下:

$secret = "mySecretKey";
$key = "myApiKey";

// 生成毫秒级时间戳(Binance要求毫秒格式)
$timestamp = time() * 1000;
$queryString = "timestamp={$timestamp}";

// 生成HMAC-SHA256签名
$signature = hash_hmac('SHA256', $queryString, $secret);

// 正确的现货账户接口URL
$url = "https://api.binance.com/api/v3/account?{$queryString}&signature={$signature}";

$ch = curl_init($url);
// 设置API Key请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-MBX-APIKEY: {$key}"]);
// 要求返回结果而非直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 本地测试可临时关闭SSL验证,生产环境建议开启并配置CA证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$result = curl_exec($ch);
curl_close($ch);

// 解析并打印结果
$resultData = json_decode($result, true);
echo '<pre>';
var_dump($resultData);
echo '</pre>';

额外注意点

  • 确认你的API Key已在Binance后台开启现货账户权限,否则会返回权限错误。
  • 如果遇到时间戳验证失败,可调用GET /api/v3/time接口获取Binance服务器的精准时间,替换本地生成的时间戳,避免本地时间与服务器不同步。
  • 生产环境务必开启CURLOPT_SSL_VERIFYPEER为true,并配置正确的CA证书路径,保障请求安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:26:27