Как сформировать сигнатуру (md5 signature)

Рассмотрим пример формирования сигнатуры (подписи) для запроса к 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 поиска.

Внимание! Сигнатура чувствительна к регистру.