Я занимаюсь разработкой небольшого программного обеспечения на основе запросов API с помощью php cURL.
Я столкнулся с проблемой частных запросов API. Одним из параметров запроса является «nonce» (метка времени unix), но ответом является «недопустимое nonce».
Обращаясь в службу поддержки, они отвечают мне, что:
" Неверный одноразовый номер отправляется, когда отправленный вами одноразовый номер меньше или равен ранее отправленному одноразовому номеру. "
И
" если вы делаете 2 запроса в секунду, вам нужно увеличить одноразовый номер для второго запроса (вы можете использовать микро уникальную метку, чтобы за одну секунду вы могли создать 1000000 уникальных одноразовых номеров за 1 секунду). "
Мой вопрос : Какую функцию я могу использовать для решения этой проблемы !? Я пробовал функцию microtime (), но я получаю ту же ошибку.
Спасибо и извините за мой плохой английский.
Мой код:
$unix_time = time();
$microtime = number_format(microtime(true), 5, '', '')
$message = $unix_time.$customer_id.$API_KEY; //nonce + customer id + api key
$signature = hash_hmac('sha256', $message, $API_SECRET);
$ticker_url = "https://www.bitstamp.net/api/v2/ticker/btceur";
$balance_url = "https://www.bitstamp.net/api/v2/balance/btceur/";
$param_array = array(
"key" => $API_KEY,
"signature" => strtoupper($signature),
"nonce" => $microtime
);
switch($_POST['action']){
case 'ticker_btceur':
ticker_btceur($param_array, $ticker_url);
break;
case 'balance_btceur':
balance_btceur($param_array, $balance_url);
break;
}
function ticker_btceur($da, $b_url){ // cURL GET
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $b_url."?key=".$da['key']."&signature=".$da['signature']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/cacert.pem");
if(curl_exec($ch) === false){
echo "Errore: ". curl_error($ch)." - Codice errore: ".curl_errno($ch);
}
else{
$result = curl_exec($ch);
echo $result;
}
curl_close($ch);
}
function balance_btceur($pa, $b_url){ // cURL POST
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $b_url);
curl_setopt($ch,CURLOPT_POST, count($pa));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($pa));
if(curl_exec($ch) === false){
echo "Errore: ". curl_error($ch)." - Codice errore: ".curl_errno($ch);
}
else{
$result = curl_exec($ch);
echo $result;
}
curl_close($ch);
}