Почему не выполняется пользовательская функция?

Доброго времени суток. Работа с API платформы, есть код:
<?

$KEY = "kCw1.......Be";
$SECRET = "xo......ejVX8Cyj2NN";
$BASE_URL = 'https://api.site.com/';

    for ($x = 0; $x < 42; $x++){
        $sql = mysqli_query($db, "SELECT * FROM `sale`");    
        if(mysqli_num_rows($sql) > 0) { 
            $result = mysqli_fetch_assoc($sql);
            $tic = $result['tic']; 
            $id = $result['id'];
            $symbol = $tic;
                
        if($result['side'] == 'BUY') {                
                        $response = signedRequest('GET', 'api/v3/', [
                          'symbol' => $symbol
                        ]);
                    
                        if($response[0]['symbol'] == $symbol and $response[0]['side'] == "BUY") {
                            //  Ничего пока что не делаем
                        } else {
                            $num_coins = $result['numbers_of_coin'];
                            $take_price = $result['take_price'];
                            
                            $zapros = "api/v3/exchange=".$symbol;
                            $response = sendRequest('GET', $zapros);
                            $count_sym = strpos($response['symbols'][0]['filters'][0]['tckSize'], '1')-2+1;      
                            $take_price = number_format($take_price, $count_sym, '.', ',');
                            
                            $response = signedRequest('POST', 'api/v3/', [
                              'symbol' => $symbol,
                              'side' => 'BUY', 
                              'type' => 'LIMIT',
                              'timeInForce' => 'GTC',
                              'quantity' => $num_coins,
                              'price' => $take_price,
                            ]);   
                            
                            echo json_encode($response) . "<br><br>";
   
                        }                     
                } 

            function signature($query_string, $secret) {
                return hash_hmac('sha256', $query_string, $secret);
            }

            function signedRequest($method, $path, $parameters = []) {
              global $SECRET;
            
              $parameters['timestamp'] = round(microtime(true) * 1000);
              $query = buildQuery($parameters);
              $signature = signature($query, $SECRET);
              return sendRequest($method, "${path}?${query}&signature=${signature}");
            }
                        
            function sendRequest($method, $path) {
              global $KEY;
              global $BASE_URL;
              
              $url = "${BASE_URL}${path}";
            
              echo "Запрос: ". PHP_EOL;
              echo $url. PHP_EOL . "<br>";
              $ch = curl_init();
              curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-MBX-APIKEY:'.$KEY));    
              curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
              curl_setopt($ch, CURLOPT_URL, $url);
              curl_setopt($ch, CURLOPT_POST, $method == "POST" ? true : false);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              $execResult = curl_exec($ch);
              $response = curl_getinfo($ch);
                
              curl_close ($ch);
              return json_decode($execResult, true);
            }
            
            function buildQuery(array $params)
            {
                $query_array = array();
                foreach ($params as $key => $value) {
                    if (is_array($value)) {
                        $query_array = array_merge($query_array, array_map(function ($v) use ($key) {
                            return urlencode($key) . '=' . urlencode($v);
                        }, $value));
                    } else {
                        $query_array[] = urlencode($key) . '=' . urlencode($value);
                    }
                }
                return implode('&', $query_array);
            }              
?>

В итоге $response = signedRequest вообще не исполняется, как будто его и нет.
Или иногда возникает ошибка
PHP Fatal error: Cannot redeclare signature() (previously declared
.

Не могу понять, в чём проблем. Скрипт либо просто игнорирует часть с $response = signedRequest без ошибок.
Либо выдаёт ошибку выше. Почему так? Спасибо заранее за помощь.
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 2
Вы в цикле функции объявляете. На что вы надеетесь?)
Ответ написан
@rPman
Попробуй ccxt там поддержка больше сотни бирж (криптовалютных) в частности для твоего binance поддержка торговли спот точно поддерживалась, несколько месяцев назад когда я смотрел, фьючи глючили (еще не обновили поддержку в библиотеке и я пользовался nodejs от jaggedsoft либой).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы