- Регистрация
- 14.10.2021
- Сообщения
- 145
- Благодарностей
- 143
- Баллы
- 43
Шаблон соседней в теме на форуме здесь , предоставлен добрым человеком Moonwalker
Проблема - у меня не работают остальные методы этого API , те работает только с пустым зашифрованным методом ( например /v1/info/balance/d41d8cd98f00b204e9800998ecf8427e)
Если зашифровать по инструкции ниже другой метод , выходит ошибка {"status":"error","message":"Not authorized"}
Пример авторизации - в этом API
Каждый запрос, который нуждается в авторизации, сопровождается дополнительным заголовком, вида:
"Authorization: ключ_пользователя: подпись"
Ключи для авторизации необходимо получить в личном кабинете.
Подпись составляется по следующему алгоритму:
ksort($params);
$paramsStr = http_build_query($params, null, '&', PHP_QUERY_RFC173;
$sign = base64_encode(hash_hmac('sha1', $method . $paramsStr . md5($paramsStr), $secret));
$header = 'Authorization: ' . $userKey . ':' . $sign;
Готовый класс PHP для работы с API, можете скачать на GitHub.
Форматы ответа: json (по умолчанию) и xml.
Чтобы получить ответ от АПИ в формате xml, в строку запроса добавляется параметр "format=xml".
В итоге требуется поправить шаблон или объяснить где ошибка ,или свой вариант решения , для работы с другими методами ...скорее всего что то не так с шифрованием или моим недопониманием ( в C# - уровень знаний у меня ,близок к нулю)
Жду предложения о помощи и размере компенсации за неё здесь в теме или телеграм @ivan_ivanovich_ivan
Извиняюсь за ранее , если не отвечаю сразу.
Проблема - у меня не работают остальные методы этого API , те работает только с пустым зашифрованным методом ( например /v1/info/balance/d41d8cd98f00b204e9800998ecf8427e)
Если зашифровать по инструкции ниже другой метод , выходит ошибка {"status":"error","message":"Not authorized"}
Пример авторизации - в этом API
Каждый запрос, который нуждается в авторизации, сопровождается дополнительным заголовком, вида:
"Authorization: ключ_пользователя: подпись"
Ключи для авторизации необходимо получить в личном кабинете.
Подпись составляется по следующему алгоритму:
- массив из передаваемых параметров (GET, POST, PUT, DELETE) сортируется по названию ключа по алфавиту;
- из полученного массива формируется строка запроса (например, функция http_build_query в PHP), пример "from=DATEFROM&to=DATETO…";
- и далее - соединяется по формуле: строка = имя_метода строка_запроса md5( строка_запроса ), где "имя_метода" - строка запроса, начиная от домена (с указанием версии АПИ), до начала перечисления параметров, например - '/v1/sip/'
- полученная строка хешируется по алгоритму sha1 с секретным ключом пользователя: хеш = hash( строка, секретный_ключ )
- и далее хеш кодируется в base64 подпись = base64_encode( хеш )
ksort($params);
$paramsStr = http_build_query($params, null, '&', PHP_QUERY_RFC173;
$sign = base64_encode(hash_hmac('sha1', $method . $paramsStr . md5($paramsStr), $secret));
$header = 'Authorization: ' . $userKey . ':' . $sign;
Готовый класс PHP для работы с API, можете скачать на GitHub.
Форматы ответа: json (по умолчанию) и xml.
Чтобы получить ответ от АПИ в формате xml, в строку запроса добавляется параметр "format=xml".
В итоге требуется поправить шаблон или объяснить где ошибка ,или свой вариант решения , для работы с другими методами ...скорее всего что то не так с шифрованием или моим недопониманием ( в C# - уровень знаний у меня ,близок к нулю)
Жду предложения о помощи и размере компенсации за неё здесь в теме или телеграм @ivan_ivanovich_ivan
Извиняюсь за ранее , если не отвечаю сразу.