Я борюсь с использованием REST API Binance. Мне удалось получить рабочий запрос GET через строку запроса, такую как пинг сервера, информация о тикере и т. Д. Моя задача сейчас — выполнить запрос POST через строку запроса с использованием cURL. Я собирал код из разных мест и обращался к API, чтобы заставить кусочки работать, но я не уверен, почему я получаю эту ошибку, возвращенную из результата … {«code»: — 1102, «msg»: «Обязательный параметр ‘signature’ не был отправлен, был пуст / пуст или неправильно сформирован.»}
(ОШИБКА, ВЫЯВЛЕННАЯ НА САЙТЕ). Я повторяю сигнатуру и ее бред, так что я думаю, что hash_hmac, выполненный сверху, будет работать, но, честно говоря, мне очень повезло, что запрос GET сработал. У кого-нибудь есть какие-либо предложения относительно того, почему это будет сломано? Спасибо!
$apikey = "MYKEY";
$apisecret = "MYSECRET";
$timestamp = time();
$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;
Согласно их документации по API:
Для подписанных конечных точек требуется дополнительный параметр, подпись, который должен быть отправлен в Строка запроса или же тело запроса.
Вы отправляете подпись ни одним из этих методов и вместо этого отправляете ее через заголовок.
Изменить это:
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));
К этому:
curl_setopt($ch, CURLOPT_POSTFIELDS, "symbol=TRXBTC&type=market&side=buy&quantity=100.00&recvWindow=10000000000000000×tamp=" . $timestamp . "&signature=" . $signature);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded","X-MBX-APIKEY: ".$apikey));
Других решений пока нет …