-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Краткий экскурс по подключению к JSON-API.
Рабочий пример представленного кода: http://sample.demo.webservices.travel/ (временно не доступен)
Тестовый Субагентский блок: http://agent.demo.webservices.travel/
Тестовый Travel Office: http://office.demo.webservices.travel/
Тестовые ключи:
-
FF596A1C-6C8F-4FF9-A19F-1EFA70ABEEDC
(Тип авторизации: Site) -
33838ADC-17B9-4A7D-931F-E29E1A395453
(Тип авторизации: Application, Password: Km7jy4G7cYbf0rAgVVWitpPJk7LdMF)
WS TEST: http://ws.demo.webservices.travel/
PS. На сайте: http://json.parser.online.fr можно раскодировать JSON и посмотреть массив.
{
// Тип авторизации: Site, Application
"Type":"Site",
// Принадлежность компании: Agent — Субагент, Corporate — Корпорат
"System":"Agent",
// Ключ авторизации
"Key":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
// IP-адрес конечного пользователя. Используется для установки лимита кол-ва запросов в День/Час/Минуту/Секунду
"UserIP":"127.0.0.1",
// Уникальный идентификатор пользователя в системе Субагента. Может быть произвольным значением. Не обязательно к заполнению
"UserUUID":"",
// UTM-метки для учета в статистике
"UTM_Source":"",
"UTM_Medium":"",
"UTM_Campaign":"",
"UTM_Term":"",
"UTM_Content":""
}
{
// Показатель компрессии: «» или «GZip»
"Compress":"",
// Формат группировки:
// Combined — комбинированный,
// FilteredCombined — отфильтрованный (от дубликатов) и скомбинированный,
// FilteredCombinedByPriority — отфильтрованный (от дубликатов на основе правил приоритетов) и скомбинированный
"Format":"Combined",
// Сортировка результатов поиска
// Deposit — по стоимости оплаты с Депозита,
// CreditCard — по стоимости оплаты Кредитной Картой
"Sort": "Deposit",
// Флаг запроса из МетаПоиска
"MetaSearch":"NO",
// Перегруппировка результатов поиска
// Календарь: Simple — вернет по одной комбинации на каждую дату,
// Extended — вернет все найденные комбинации на каждую дату
"ReGroup":"",
// Флаг возврата ответа:
// First — сразу как получен один из вариантов (не тестировался),
// ByTimelimit — по окончанию поиска, но не более чем значение Timelimit
"Return":"ByTimelimit",
// Language (в разработке)
"Language":"RU",
// Валюта результатов
"Currency":["RUB"],
// Время ожидания ответа. Рекомендуемое значение — 120
"Timelimit":120,
// ID тарифного плана
"Tariff":1001,
// Временно не используется
"StopIntervalMin":3,
"StopIntervalMax":3,
// Кол-во возвращаемых рекомендаций при поиске
"ReturnOffset":0,
"ReturnLimit":50,
// Скидка не используется т.к. авиакомпании запрещают
"TariffDiscount":0,
"TariffDiscountCurrency":"RUB",
// Сервисный сбор
// Сумма сбор, Валюта сбора (RUB, EUR, USD... PRS—%), Применение сбора (Traveller,TravellerSegment,Total)
"TariffService":100,
"TariffServiceCurrency":"RUB",
"TariffServiceParams":"Traveller",
// Список запрашиваемых перевозчиков (имеет приоритет перед «ExcludeAirlines»)
"ValidAirlines":"SU,U6",
// Доступные значения:
// Mix — список «ValidAirlines» будет объединен с общими настройками списка перевозчиков
// Only — только список «ValidAirlines» будет использован
"ValidAirlinesLogic":"Only",
// Список перевозчиков, исключенных из выдачи
"ExcludeAirlines":"SU,U6",
// Доступные значения:
// Mix — список «ExcludeAirlines» будет объединен с общими настройками исключения
// Only — только список «ExcludeAirlines» будет использован
"ExcludeAirlinesLogic":"Only"
}
{
// Статично
"jsonrpc":"2.0",
// Любой желаемый цифровой ID запроса вашей системы... мы его не учитываем никаким образом... можно оставить "1"
"id":1,
// Запрашиваемый метод
"method":"Ping",
"params":[
// Авторизационная запись
{"Type":"Site","System":"Agent","Key":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX","UserIP":"127.0.0.1","UserUUID":""},
// Центральная часть запроса
{"Test":"OK!"},
// Дополнительные параметры запроса
{"Compress":"","Format":"Combined","Return":"ByTimelimit","Language":"RU","Currency":["RUB"],"Timelimit":120}
]
}
POST http://ws.demo.webservices.aero/ HTTP/1.1
Host: ws.demo.webservices.aero
Accept: */*
Connection: Keep-Alive
Content-Length: 291
Content-Type: application/x-www-form-urlencoded
{"jsonrpc":"2.0","id":1,"method":"Ping","params":[{"Type":"Site","System":"Agent","Key":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX","UserIP":"127.0.0.1","UserUUID":""},{"Test":"OK!"},{"Compress":"","Format":"Combined","Return":"ByTimelimit","Language":"RU","Currency":["RUB"],"Timelimit":120}]}
Стандартная последовательность запросов:
Поиск авиабилетов. (Подробнее...)
POST http://ws.demo.webservices.aero/ HTTP/1.1
Host: ws.demo.webservices.aero
Accept: */*
Connection: Keep-Alive
Content-Length: 502
Content-Type: application/x-www-form-urlencoded
{"jsonrpc":"2.0","id":1,"method":"AviaSearch","params":[{"Type":"Site","System":"Agent","Key":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX","UserIP":"127.0.0.1","UserUUID":""},{"Routes":[{"Departure":"MOW","Arrival":"LED","Date":"2013-03-15"},{"Departure":"LED","Arrival":"MOW","Date":"2013-03-20"}],"Logic":"Default","Class":"Econom","Travellers":{"ADT":1,"CHD":0,"INF":0}},{"Compress":"","Format":"Combined","Return":"ByTimelimit","Language":"RU","Currency":["RUB","USD","EUR"],"TimeLimit":120}]}

Получение BookID бронирования и всей необходимой информации для рендера окна ввода данных на пассажиров.
Центральная часть запроса:
{
// ID результатов поиска
"RequestID":"52a5bf68af632ced0d000013",
// ID вариантов перелета
"Variants":[
"53549E96-256E-417B-BC3B-EC105FB9E937",
"876B600E-A2E8-4FD3-A131-44AA27FCE284"
]
}

Получение PNR.
Центральная часть запроса:
{
"BookID":"5292d908af632c632b00000d",
"Travellers":{
"ADT":[
{
"Sex":"Male",
"Surname":"IVANOV",
"Name":"IVAN",
"Patronymic":"IVANOVICH",
"Birthday":{
"Day":"20",
"Month":"6",
"Year":"1983"
},
"Citizen":"RU",
"Document":{
"Number":"4505917654",
"Country" : "RU",
"ExpireDate":{
"Day":"20",
"Month":"6",
"Year":"2028"
}
},
"Bonus":{
"Company":"PS",
"Number":"123456"
}
}
]
},
"Contacts":{
"PhoneMobile":"+7 (495) 762-1684",
"PhoneHome":"84957621684",
"Email":"eg@edgroup.ru"
}
}
Проверка статуса PNR.
Центральная часть запроса:
{
"PNR":"296KKV",
"Surname":"IVANOV"
}

Получение URL для переадресации пользователя в плат.шлюз.
Центральная часть запроса:
{
"ID":"2825-2883",
"Gate":"CreditCard",
"ReturnSuccess":"http://testsite.ru/avia/check.html?pnr=296KKV&surname=IVANOV&PayStatus=Success",
"ReturnFailure":"http://testsite.ru/avia/check.html?pnr=296KKV&surname=IVANOV&PayStatus=Failure",
"ReturnPending":"http://testsite.ru/avia/check.html?pnr=296KKV&surname=IVANOV&PayStatus=Pending"
}
Отмена бронирования.
Центральная часть запроса:
{
"PNR":"296KKV",
"Surname":"IVANOV"
}
Базовый поиск:
-
AviaSearch
AviaSearchFilter
AviaRegroup
AviaCalendar
AviaSchedule -
AviaSeatMap
AviaSeatSelect
AviaSpecialMeal
AviaSpecialMealSelect
Расширенный поиск:
Страховки:
Концерты и мероприятия: