Ошибка при запросе API Kuna

265
25 июня 2022, 14:00

Не получается выполнить запрос, выдает ошибку {"messages":["the_tonce_is_invalid"]}

Ошибка связана с меткой времени, но никак не получается ее побороть. Может есть идеи?

<?php
require __DIR__.'/../vendor/autoload.php';
use GuzzleHttp\Client;

$public_key = '';
$secret_key = '';

$client = new Client([
    'base_uri' => 'https://api.kuna.io',
]);
// $api_path = '/v3/auth/kuna_codes/issued-by-me';
$api_path = '/v3/auth/me';
$nonce = strval(date_timestamp_get(date_create()));
// $nonce = time();
$data = (object) [];
$headers = [
    // 'accept' => 'application/json',
    // 'content-type' => 'application/json',
    'kun-nonce' => $nonce,
    'kun-apikey' => $public_key,
    'kun-signature' => hash_hmac('sha384', $api_path.$nonce.json_encode($data), $secret_key),
];
$options = [
    'form_params' => $data,
    'headers' => $headers,
    'http_errors' => false,
    // 'debug' => true,
];
print_r($options);
// var_dump($options);
$response = $client->request('POST', $api_path, $options);
$result = $response->getBody()->getContents();
print_r($result);
Answer 1

Из документации:

kun-nonce - Метка времени запроса. Указывается в формате Unix Time Stamp в милисекундах (ms).

Ошибка в документации(отписал в саппорт), в php примере, на этой строке:

$nonce = strval(date_timestamp_get(date_create()));

date_timestamp_get - возвращает временную метку Unix, секунды.

Как вариант, миллисекунды можно получить вот так:

$nonce = round(microtime(true) * 1000);
READ ALSO
Неоднократное выполнение кода

Неоднократное выполнение кода

Благодарю за вниманиеВопрос, собственно говоря, заключается вот в чем

266
Разработать класс Товар

Разработать класс Товар

Нужно создать класс Товар: название, цена, поставщикОт него 2 наследуемых класса: цифровой товар (добавляется поле емкость в мб) и печатный...

160
Id сессии и cookie

Id сессии и cookie

Как сохранить id cессии в cookie и отправить id на сервер (смФиксация авторизованности и Список действий - пункты 1 и 4)?

381