Я не могу получить API Bittrex V3 в PHP работает - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь заставить API v3 работать на PHP, не могли бы вы помочь мне разобраться, что я делаю неправильно?

Текущий ответ, который я получаю, - "НЕАВТОРИЗОВАННЫЙ" (старый v1. 1 работает с ключом api и секретом у меня).


    $timestamp = time()*1000;
    $url = "https://api.bittrex.com/v3/balances";
    $method = "GET";
    $contentHash = hash('sha512', '');
    $auth = $timestamp . $url . $method . $contentHash;
    $sign=hash_hmac('sha512',$auth,$apisecret);
    $headers = array (
        'Api-Key' => $apikey,
        'Api-Timestamp' => $timestamp,
        'Api-Content-Hash' => $contentHash,
        'Api-Signature' => $sign,
    );

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $execResult = curl_exec($ch);
    curl_close($ch);
    $obj = json_decode($execResult, TRUE);

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Вы можете попробовать добавить набор заголовков Content-Type в application / json.

$headers = array (
    'Api-Key' => $apikey,
    'Api-Timestamp' => $timestamp,
    'Api-Content-Hash' => $contentHash,
    'Api-Signature' => $sign,
    'Content-Type' => "application/json"
);
0 голосов
/ 12 октября 2019

    use Http\Promise\Promise;
    use GuzzleHttp\Client;
    use GuzzleHttp\Exception\RequestException;
    use GuzzleHttp\HandlerStack;
    use GuzzleRetry\GuzzleRetryMiddleware;
    use GuzzleHttp\Psr7\Request;
    use guzzle\guzzle;
    use Monolog\Logger;
    include '../vendor/autoload.php';

    function requestTimestamp()
    {
     list($usec, $sec) = explode(' ', microtime());
     return (int) ((int) $sec * 1000 + ((float) $usec * 1000));
    }

    $apiKey = 'YOUR_API_KEY';
    $apiSecret = 'YOUR_SECRET_KEY';
    $url = 'https://api.bittrex.com/v3/balances';

    $method = 'GET';
    $content = '';

    $timestamp = requestTimestamp();
    $contentHash = hash('sha512', $content);
    $preSignature = ($timestamp.$url.$method.$contentHash);

    $signature = hash_hmac('sha512', $preSignature, $apiSecret);

    $headers = ['Api-Timestamp'=> $timestamp, 'Api-Key'=> $apiKey, 'Api-Content-Hash' => $contentHash, 'Api-Signature' => $signature, 'Accept'=> 'application/json', 'Content-Type'=> 'application/json'];

    $client = new \GuzzleHttp\Client();
    $response = $client->request($method, $url, ['headers' => $headers], json_encode($content));

    echo $response->getBody();

...