Hab mal damit ein wenig rumgespielt und folgende Dinge gefunden :
Deine Variablen sind nicht richtig benannt und unvollständig : Im Header müssen sie Sign und Key heißen und beide vorhanden sein.
Deine Postparameter enthalten nicht getInfo als Method, sondern nur Info.
Die Postparameter müssen folgende sein : nonce und method.
Du hashst als Sign die komplette Url, du musst nur die Postparameter Hashen.
Das Sleep solltest du nicht brauchen, da der Request synchron ist und das Skript erst weiterläuft wenn eine Antwort da ist oder es einen Timeout gibt.
Hab mir mal die Freiheit genommen und hier eine funktionierende verbesserte Version :
function make_private_api_call($query)
{
$apikey = "";
$apisecret = "";
$base_url = "
https://yobit.net/tapi/";
$req['method'] = $query;
$req['nonce'] = time();
$post_data = http_build_query($req, '', '&');
$sign = hash_hmac("sha512", $post_data, $apisecret);
$headers = array(
'Sign: '.$sign,
'Key: '.$apikey,
);
$ch = curl_init($base_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_ENCODING , 'gzip');
$execResult = curl_exec($ch);
$result = json_decode($execResult, true);
return $result;
}
function get_balance()
{
$command = "getInfo";
$params = "";
$query = "$command";
$result = make_private_api_call($query);
return $result;
}