Некоторые запросы требуют подписи. Для таких запросов должны быть переданы параметры: rlogin и rsign .
Алгоритм формирования подписи:
-
Создается массив пар (ключ-значение) из всех параметров будущего запроса, кроме: mode, svc, lang, rsign, charset
-
Полученный массив сортируется по ключу. Сортировка по возрастанию по ASCII-коду (функция php sort(), флаг сортировки SORT_REGULAR или javascript Array().prototype.sort() без ‘compare function’)
-
Все параметры (только значения) соединяются через разделитель ‘;’ в одну строку, к этой строке добавляется личный rkey пользователя
-
Полученная строка хешируется md5
-
Результат хеширования помещается в параметр rsign
Пример.
Параметры запроса:
-
svc=testme
-
lang=ru
-
mode=json
-
name=john
-
fname=doe
-
birthday=2000-01-01
-
login=john.d
Персональные данные пользователя:
-
rlogin=vasya
-
rkey=01234567890
Строка для хеширования:
2000-01-01;doe;john.d;john;vasya;01234567890
Строк после хеширования ⇒ подпись:
4aeb7e509b1cc152321bc641e34cd18b
Запрос, передаваемый на сервер (вариант GET/POST, для xml/json будут соответствующие им форматы):
svc=testme&lang=ru&mode=json&name=john&fname=doe&birthday=2000-01-01&login=
john.d&rlogin=vasya&rsign=4aeb7e509b1cc152321bc641e34cd18b