@Max_Power_Dnepr

Как обратиться к Kuna API через PHP file_get_contents?

Добрый день.
Помогите понять проблему - простейшие приватные POST-запросы к API v3 не отдают результат.
При этом с использованием CURL - нормально, а то же самое с использованием file_get_contents - пусто.
Пример проблемного кода:

<?php

$public_key = 'wlSd17awInb86dKaEyaWMIuxYu7DtjBEGIsHtLud';
$secret_key = 'IsWd4RoRb2GxB6afz5qI0CsqHCQTTpEZLfdb2vJH';
$api_path = "/v3/auth/r/wallets";
$nonce = substr((string)time(), 0, 9) . '0000';
$signature = hash_hmac("sha384", $api_path.$nonce, $secret_key);



$result = file_get_contents("https://api.kuna.io".$api_path, false, stream_context_create(array(
  'http' => array(
    'method' => 'POST',
    'header' => array(
      'accept: application/json', 
      'kun-apikey: '.$public_key, 
      'kun-nonce: '.$nonce, 
      'kun-signature: '.$signature
    ),
  )
)));

/*

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.kuna.io".$api_path);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "kun-apikey: " . $public_key,
  'accept: application/json', 
  "kun-signature: " . $signature,
  "kun-nonce: " . $nonce
]);
$result = curl_exec($ch);
*/

var_dump( $result );

?>
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Если через курл работает, а через file_get_contents - нет, это значит что во втором случае не заданы в точности те же самые параметры, которые используются в первом варианте.
Можете не благодарить.
Ответ написан
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php
$public_key = 'wlSd17awInb86dKaEyaWMIuxYu7DtjBEGIsHtLud';
$secret_key = 'IsWd4RoRb2GxB6afz5qI0CsqHCQTTpEZLfdb2vJH';
$api_path = "/v3/auth/r/wallets";
//$nonce = strval(date_timestamp_get(date_create())*1000);
$nonce = (string)round(microtime(true)*1000);
$content = "{}";
$signature = hash_hmac("sha384", $api_path.$nonce.$content, $secret_key);

$result = file_get_contents("https://api.kuna.io".$api_path, false, stream_context_create([
    "http" => [
        "method" => "POST",
        "header" => [
          "accept: application/json",
          "content-type: application/json",
          "kun-nonce: {$nonce}",
          "kun-apikey: {$public_key}",
          "kun-signature: {$signature}",
        ],
        "content" => $content,
    ]
]));

var_dump($result);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы