我正在努力使用 Binance 的 REST API。我已经设法通过查询字符串(例如 ping 服务器、股票信息等)获得有效的 GET 请求。我现在的挑战是使用 cURL 通过查询字符串执行 POST 请求。我一直在从各个地方抓取代码并参考 API 以使各个部分正常工作,但我不确定为什么会从结果中返回此错误... {"code":-1102,"msg": “强制参数‘签名’未发送,为空/null,或格式错误。”} (网页上显示的错误)。我回显了签名及其一堆乱码,所以我相信在顶部执行的 hash_hmac 会起作用,但老实说,让 GET 请求起作用我很幸运。有人对为什么会被破坏有任何建议吗?谢谢!
$apikey = "MYKEY";
$apisecret = "MYSECRET";
$timestamp = time()*1000; //get current timestamp in milliseconds
$signature = hash_hmac('sha256', "TRXBTC&type=market&side=buy&quantity=100.00&recvWindow=10000000000000000×tamp=".$timestamp, $apisecret);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.binance.com/api/v3/order/test");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "symbol=TRXBTC&type=market&side=buy&quantity=100.00&recvWindow=10000000000000000×tamp=".$timestamp);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded","X-MBX-APIKEY: ".$apikey,"signature: ".$signature));
$response = curl_exec($ch);
curl_close($ch);
echo $response;