Чтобы обеспечить безопасность использования API, все запросы должны быть подписаны по следующему алгоритму:

  1. Подпись - это HEX-представление SHA1-хэша от специально сформированной строки (т.е. строка вида "19861f409729a42c2a8c0c636cfa0a4fb845e8fb").
  2. Кодировка подписываемой строки - UTF-8.
  3. Все параметры запроса сортируются по возрастанию названий (ключей) параметров. Названия параметров - в нижнем регистре и это всегда строки, удовлетворяющие следующему регулярному выражению: [a-z_]{1,}.
  4. Все параметры последовательно соединяются в одну строку с использованием символа-разделителя между ними.
  5. Символ-разделитель параметров: точка с запятой ";".
  6. Каждый параметр присоединяется в виде подстроки "param_name:param_value", где param_name - название параметра, param_value - значение параметра, двоеточие ":" - внутренний разделитель.
  7. Параметры, значение которых - пустая строка, не присоединяются к подстроке.
  8. В конец созданной таким образом строки через символ-разделитель дописывается соль, которую которую можно получить в кабинете заказчика (раздел "Интеграция").
  9. При подписании запроса параметр с именем signature всегда исключаются из набора параметров.
  10. Значение сформированной подписи присоединяется к общему списку как значение параметра signature

Пример формирования подписи

Предположим, что мы имеем тело запроса для получения команды исполнителей:
[  
   "client_id" => 6,
   "action" => "workers_list"
]

Строка, сформированная на подпись, будет выглядеть следующим образом (обратите внимание на сортировку по ключам):

    action:workers_list;client_id:6;salt

 Подпись (SHA-1 хэш от строки) будет вида:

    19861f409729a42c2a8c0c636cfa0a4fb845e8fb

 В итоге набор параметров для запроса должен быть дополнен подписью и станет выглядеть следующим образом:
[  
   "client_id" => 6,
   "action" => "workers_list",
   "signature" => "19861f409729a42c2a8c0c636cfa0a4fb845e8fb"

См. пример кода формирования подписи в Примере - Формирование подписи запроса.

 

Вы нашли ответ?