连接 bingX API v2 时错误时间戳无效

问题描述 投票:0回答:1

我希望你能帮助我,因为我找不到问题。

我使用的是 v1 版本的 bingX API,但它无缘无故停止工作,因此我决定创建一个完整的新代码并将其更新到 v2 版本。然而,我遇到了一个错误,我无法解决它的时间比我尝试解决它的时间还要长。

尝试连接到 API 并生成某些操作或查询时,出现以下错误:

placeMarketOrder: {"code":80014,"msg":"时间戳无效","data":{}}

执行获取查询时遇到的另一个错误是这样的或类似的:

placeMarketOrder: {"code":80014,"msg":"空时间戳或时间戳不匹配","data":{}}

我不确定这个错误是由于时间戳还是签名造成的。

这些是文档中的错误代码:

常见业务错误代码:

100001 - 签名验证失败,
100500 - 内部系统错误,
80001 - 请求失败,
80012 - 服务不可用,
80014 - 参数无效,
80016 - 订单不存在,
80017 - 职位不存在。

我正在测试的代码来自GitHub上的BingX文档:

<?php

$url = "https://open-api.bingx.com";
$apiKey = "Set your api key here!!";
$secretKey = "Set your secret key here!!";

function getOriginString(array $params) {
    // combine origin string
    $originString = "";
    $first = true;
    foreach($params as $n => $v) {
          if (!$first) {
              $originString .= "&";
          }
          $first = false;
          $originString .= $n . "=" . $v;
    }
    return $originString;
}

function getSignature(string $originString) {
    global $secretKey;
    $signature = hash_hmac('sha256', $originString, $secretKey, true);
    $signature = bin2hex($signature);
    return $signature;
}

function getRequestUrl(string $path, array $params) {
    global $url;
    $requestUrl = $url.$path."?";
    $first = true;
    foreach($params as $n => $v) {
          if (!$first) {
              $requestUrl .= "&";
          }
          $first = false;
          $requestUrl .= $n . "=" . $v;
    }
    return $requestUrl;
}

function httpPost($url)
{
    global $apiKey;
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_USERAGENT, "curl/7.80.0");
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        "X-BX-APIKEY:".$apiKey,
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}

function placeMarketOrder(string $symbol, string $side, string $quantity, string $positionSide) {

    // interface info
    $path = "/openApi/swap/v2/trade/order";

    // interface params
    $params = array();
    $params['symbol'] = $symbol;
    $params['side'] = $side;
    $params['type'] = "MARKET";
    $params['quantity'] = $quantity;
    $params['positionSide'] = $positionSide;
    $date = new DateTime();
    $params['timestamp'] = $date->getTimestamp()*1000;

    // generate signature
    $originString = getOriginString($params);
    $signature = getSignature($originString);
    $params["signature"] = $signature;

    // send http request
    $requestUrl = getRequestUrl($path, $params);
    $result = httpPost($requestUrl);
    echo "\t";
    echo $result;
    echo "\n";
}

echo "placeMarketOrder:\n";
placeMarketOrder("LINK-USDT", "BUY", "5", "LONG");

?>

BingX API 代码和文档的 github 链接

API v2 文档的链接

php timestamp
1个回答
0
投票

添加参数“recvWindow”=>“10000”

© www.soinside.com 2019 - 2024. All rights reserved.