В статье рассказывается о том, как сформировать сигнатуру для запроса к API поиска авиабилетов.
Рассмотрим пример формирования сигнатуры (подписи) для запроса к API поиска авиабилетов от Aviasales. К примеру, у нас есть набор параметров, которые мы хотим передать в API, чтобы получить данные по авиабилетам:
{
"signature": "55b47124341b5bed8627499b0eb5de80",
"marker": "ВашМаркер",
"host": "%server_host%",
"user_ip": "%user_ip_address%",
"locale": "ru",
"trip_class": "Y",
"passengers": {
"adults": 1,
"children": 0,
"infants": 0
},
"segments": [
{
"origin": "NYC",
"destination": "LAX",
"date": "2017-11-25"
},
{
"origin": "LAX",
"destination": "NYC",
"date": "2017-12-18"
}
]
}
В примере выше слева от двоеточия находятся параметры, а справа их значения.
Для начала вам нужно переставить параметры (и их значения) так, чтобы они шли в алфавитном порядке.
Обратите внимание, при сортировке учитывается вложенность данных. Это значит, что если элемент содержит массив (например, segments) или список параметров (например, passengers), то содержимое данного элемента сортируется отдельно и ставится на его место в общем списке. При этом содержимое не сортируется с параметрами верхнего уровня. Параметры внутри массива сортируются в порядке следования фигурных скобок { }.
Чтобы было проще понять процесс сортировки, посмотрите gif ниже (нажмите, чтобы открыть в новом окне):
В результате у вас получится отсортированный список, например:
"host": "%server_host%",
"locale": "ru",
"marker": "ВашМаркер",
"adults": 1,
"children": 0,
"infants": 0
"date": "2017-11-25"
"destination": "LAX",
"origin": "NYC",
"date": "2017-12-18"
"destination": "NYC",
"origin": "LAX",
"trip_class": "Y",
"user_ip": "%user_ip_address%"
После сортировки соберите строку, содержащую только значения параметров, отделяя их друг от друга двоеточием, например:
beta.aviasales.ru:ru:ВставьтеСюдаВашМаркер:1:0:0:2021-12-25:NYC:LAX:2021-12-30:LAX:NYC:Y:127.0.0.1
Маркер находится в нижнем левом углу личного кабинета:
Добавьте в начало строки ваш партнерский токен. Он находится в разделе API.
У вас получится строка вида:
ВашТокен:beta.aviasales.ru:ru:ВашМаркер:1:0:0:2021-12-25:NYC:LAX:2021-12-30:LAX:NYC:Y:127.0.0.1
Возьмите её и сформируйте md-5 подпись. Полученный результат и является сигнатурой запроса. Используйте подпись для отправки запроса к API поиска.
Внимание! Сигнатура чувствительна к регистру.