Coinbase Pro API {сообщение: неверная подпись}

Я запускаю это через проект Laravel. Я уже давно рву волосы. То, что у меня есть, взято из документации Coinbase Pro API.

    $request_path = "/orders";
    $body = array('size' => $size, 'price' => $eth_price, 'side' => 'sell', 'product_id' => 'ETH-GBP' );
    $body = is_array($body) ? json_encode($body) : $body;

    $secret = my secret;

    $ch = curl_init("https://api.pro.coinbase.com/time");
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
      curl_setopt($ch,CURLOPT_USERAGENT,'CoinbaseProAPI');
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $result = json_decode(curl_exec($ch));
      curl_close($ch);
      $timestamp = $result->epoch;
      $timestamp_rounded = intval(ceil($timestamp));

    $what = $timestamp_rounded.'POST'.$request_path.$body;
    $sig =  base64_encode(hash_hmac("sha256", $what, base64_decode($secret), true));


    $ch = curl_init("https://api.pro.coinbase.com".$request_path) ;
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ;
        curl_setopt($ch,CURLOPT_USERAGENT,'CoinbaseProAPI');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'CB-ACCESS-KEY: public_key',
        'CB-ACCESS-SIGN: '.$sig,
        'CB-ACCESS-PASSPHRASE: passphrase',
        'CB-ACCESS-TIMESTAMP: '.$timestamp));
        $coinbasepro_response = curl_exec($ch) ;
        curl_close($ch) ;

    dd($coinbasepro_response);

Я получаю недействительную подпись. Я в тупике, любая помощь очень ценится.


person Corey    schedule 11.02.2020    source источник
comment
Ответ, который вы получите, предполагает, что Coinbase отклоняет ваш вызов API. Таким образом, вам действительно нужно запросить это с Coinbase, чтобы узнать, какая часть вашего вызова неверна ...   -  person James    schedule 12.02.2020


Ответы (1)


Итак, после долгих попыток я обнаружил, что мне не хватает заголовка типа содержимого, поэтому я добавил:

"Content-Type: application/json"

в массив CURLOPT_HTTPHEADER. Я надеюсь, что это помогает кому-то!

person Corey    schedule 12.02.2020