Некоторые запросы требуют подписи. Для таких запросов должны быть переданы параметры: rlogin и rsign .

Алгоритм формирования подписи:

  1. Создается массив пар (ключ-значение) из всех параметров будущего запроса, кроме: mode, svc, lang, rsign, charset
  2. Полученный массив сортируется по ключу. Сортировка по возрастанию по ASCII-коду (функция php sort(), флаг сортировки SORT_REGULAR или javascript Array().prototype.sort() без ‘compare function’)
  3. Все параметры (только значения) соединяются через разделитель ‘;’ в одну строку, к этой строке добавляется личный rkey пользователя
  4. Полученная строка хешируется md5
  5. Результат хеширования помещается в параметр 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