все еще пытаюсь разобраться с API и связями.
Я пытаюсь сделать заказ на покупку для Binance, но продолжаю получать ответ 400.Я знаю, что это было проблемой для некоторых других, но я просто не могу понять, где я иду не так.Надеюсь, что кто-то может мне помочь.
Это проблемы только с POST, все запросы GET работают нормально, и поэтому с подписью и отметкой времени ... или, по крайней мере, я получаю ответы для своей учетной записи, поэтому япредположим, что так.
Первый CURL предназначен только для serverTime, а второй CURL - для ордера на покупку / продажу.
Это ответ, который я получаю сейчас ...
"Object ([code] => -1102 [msg] => Обязательный параметр 'side' не был отправлен,был пустым / пустым или неправильно сформирован.) "
Если я ввожу строку вручную, она работает просто отлично, но по той или иной причине, когда я передаю $ qs, это вызывает вышеуказанную ошибку.Я отобразил $ qs на экран и скопировал его вместо передачи $ qs, и это сработало, когда я вставил новую метку времени.Я в тупике ...
"символ = TRXUSDC & сторона = ПРОДАЖА и тип = LIMIT & timeInForce = GTC & количество = 63000.00000000 & цена = 0.02550000 & recvWindow = 1000000 × тамп = 1550922237310"
любой совет?
$header = array('X-MBX-APIKEY:' . KEY);
$url = BINANCE . 'api/v1/time';
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_URL,$url);
$response = curl_exec($curl);
if (FALSE === $response){
echo curl_error($curl), curl_errno($curl);
}
$serverTime = json_decode($response);
curl_close($curl);
$url = BINANCE . "api/v3/order";
$signature = NULL;
$queryString = NULL;
$query = array(
"symbol" => "TRXUSDC",
"side" => "SELL",
"type" => "LIMIT",
"timeInForce" => "GTC",
"quantity" => number_format(63000.00000000,8,'.',''),
"price" => number_format(0.02550000,8,'.',''),
"recvWindow" => 1000000,
"timestamp" => $serverTime->serverTime);
$qs = htmlentities(http_build_query(array_unique($query)));
$query['signature'] = hash_hmac('SHA256', $qs, SECRET );
$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_ENCODING, "application/x-www-form-urlencoded");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl,CURLOPT_FAILONERROR,FALSE);
curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS,$qs);
curl_setopt($curl, CURLOPT_URL, $url);
$response = curl_exec($curl);
if (FALSE === $response){
echo curl_error($curl).':'.curl_errno($curl);
}
$obj = json_decode($response);
curl_close($curl);