В статье рассказывается о том, как сформировать сигнатуру для запроса к API поиска авиабилетов.
В данной статье рассматривается вариант создания специального ключа-подписи (сигнатуры), который используется для отправки запроса в API поиска авиабилетов Авиасейлс.
Сигнатура — это закодированный ключ запроса, который формируется из параметров запроса, партнёрского маркера и токена. Чтобы создать сигнатуру, необходимо выполнить несколько шагов.
Допустим, наш запрос имеет вид:
{ "marker": "%marker%", "host": "%server_host%", "user_ip": "%user_ip_address%", "locale": "ru", "trip_class": "Y", "passengers": { "adults": "1", "children": "0", "infants": "0" }, "segments": [ { "origin": "MOW", "destination": "LED", "date": "2015-05-25" }, { "origin": "LED", "destination": "MOW", "date": "2015-06-18" }]}
- Отсортируйте параметры из запроса по алфавиту: host=beta.aviasales.ru&locale=ru&marker=16886&adults=1&children=0&infants=0&date=2014-12-18&destination=LED&origin=MOW&date=2014-12-25&destination=MOW&origin=LED&trip_class=Y&user_ip=127.0.0.1. Обратите внимание: при сортировке учитывается вложенность данных. Если элемент содержит массив (например, segments) или список параметров (например, passengers), то содержимое данного элемента сортируется отдельно и ставится на его место в общем списке. При этом содержимое не сортируется с параметрами верхнего уровня. Параметры внутри массива сортируются в порядке следования фигурных скобок { }. Пример сортировки запроса (нажмите, чтобы открыть в новом окне).
- После сортировки соберите строку, содержащую только значения параметров (порядок следования остается таким же, как в п. 1): beta.aviasales.ru:ru:16886:1:0:0:2015-05-25:LED:MOW:2015-06-18:MOW:LED:Y:127.0.0.1. Друг от друга значения отделяются двоеточием.
- Добавьте в начало строки из п. 2 значение вашего партнёрского токена. Например: 321d6a221f8926b5ec41ae89a3b2ae7b.
- Используя полученную строку «321d6a221f8926b5ec41ae89a3b2ae7b:beta.aviasales.ru:ru:16886:1:0:0:2015-05-25:LED:MOW:2015-06-18:MOW:LED:Y:127.0.0.1», сформируйте md-5 подпись. Полученный результат 2d0c311eb0fe9cd84fcd1b875759c313 и является сигнатурой запроса.
Внимание! Сигнатура чувствительна к регистру.