Web-сервисы: Сервис поиска и бронирования авиабилетов
Версия статьи от 13-05-2014.
Содержание
Введение
Данный модуль предназначен для поиска и подбора данных по рейсам, проверки их стоимости и наличия мест.
Ссылка на тестовый сервис
С работой тестового сервиса поиска авиабилетов вы можете ознакомиться на нашем демо-сервере.
Установка
Для установки Сервиса поиска авиабилетов нужно создать отдельную директорию, например, wsaviasearch (далее в примерах будет использоваться данное название каталога) в корневом каталоге IIS (по умолчанию c:/inetpub/wwwroot) и выложить туда распакованные файлы из архива mw-ws-aviasearch-2009.2.XX.XXXX.zip.
В управлении IIS необходимо создать виртуальный каталог для папки wsAviaSearch.
Создание виртуального каталога
По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:
1. Зайти в Пуск (Start) – Панель управления (Control Panel) – Администрирование (Administrative Tools).
2. Запустить Internet Information Services (IIS) Manager.
3. В открывшемся дереве каталогов выбрать сайты (Web Sites) – Default Web Site (либо другой сайт, на который планируется установить приложение). В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и выбрать пункт «Преобразовать в приложение».
Подключение к базе данных ПК «Мастер-Тур»
В файле web.config, расположенном в папке wsAviaSearch, в которую установлен web-сервис «Сервис поиска авиабилетов», пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). Строка подключения к базе данных ПК «Мастер-Тур»:
<add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;Initial Catalog=название базы данных ПК Мастер-тур;User ID= логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/>
Настройка
После установки «Сервис поиска авиабилетов» доступен по адресу: http://ip-адрес сервера Мастер-Веб/wsAviaSearch/TicketSerachService.asmx (обращение к сервису происходит из javascript с передачей параметров в формате JSON)
Подготовка данных
Сигнатура вызова
TicketSearchService.asmx/GetArrivalCities
/// <summary> /// Метод возвращает все города/аэропорты прибытия для заданного города или страны вылета. /// </summary> /// <param name="token">Строка авторизации на сервисе</param> /// <param name="jsFlightSearchFilter">JSON-строка установленного формата. Для работы этого метода должен быть задан либо город, либо страна вылета.</param> /// <param name="callback">Имя js-функции, вызываемой в результате работы сервиса</param> [WebMethod] public void GetArrivalCities(string token, string jsFlightSearchFilter, string callback)
jsFlightSearchFilter может принимать параметры:
- ctfrom – ключ города вылета
- ctto – ключ города прилёта
- cnfrom – ключ страны вылета(всегда приоритетней, чем ctfrom)
- cnto - ключ страны прилёта(всегда приоритетней, чем ctto)
TicketSearchService.asmx/GetBackFlightDates
/// <summary> /// Метод возвращает даты обратных перелётов. /// </summary> /// <param name="token">Строка авторизации на сервисе</param> /// <param name="jsFlightSearchFilter">JSON-строка установленного формата. Для работы этого метода должны быть заданы либо город, либо страна вылета и прилёта, а также дата прямого рейса.</param> /// <param name="callback">Имя js-функции, вызываемой в результате работы сервиса</param> [WebMethod] public void GetBackFlightDates(string token, string jsFlightSearchFilter, string callback)
jsFlightSearchFilter может принимать параметры:
- ctfrom – ключ города вылета
- ctto – ключ города прилёта
- cnfrom – ключ страны вылета(всегда приоритетней, чем ctfrom)
- cnto - ключ страны прилёта(всегда приоритетней, чем ctto)
- tdate – дата вылета
TicketSearchService.asmx/GetDepartureCities
/// <summary> /// Метод возвращает все возможные города/аэропорты вылета. /// </summary> /// <param name="token">Строка авторизации на сервисе</param> /// <param name="callback">Имя js-функции, вызываемой в результате работы сервиса</param> [WebMethod] public void GetDepartureCities(string token, string callback)
jsFlightSearchFilter может принимать параметры:
- ctfrom – ключ города вылета
- ctto – ключ города прилёта
- cnfrom – ключ страны вылета(всегда приоритетней, чем ctfrom)
- cnto - ключ страны прилёта(всегда приоритетней, чем ctto)
TicketSearchService.asmx/GetFlights
/// <summary> /// Метод возвращает перелёты по заданным параметрам. /// </summary> /// <param name="token">Строка авторизации на сервисе</param> /// <param name="jsFlightSearchFilter">JSON-строка установленного формата. Для работы этого метода должны быть заданы либо город, либо страна вылета и прилёта, а также даты прямого и обратного рейсов(для RT).</param> /// <param name="callback">Имя js-функции, вызываемой в результате работы сервиса</param> [WebMethod] public void GetFlights(string token, string jsFlightSearchFilter, string callback)
jsFlightSearchFilter может принимать параметры:
- ctfrom – ключ города вылета
- ctto – ключ города прилёта
- cnfrom – ключ страны вылета(всегда приоритетней, чем ctfrom)
- cnto - ключ страны прилёта(всегда приоритетней, чем ctto)
- tdate – дата вылета
- bdate – дата прилёта
- agkey – ключ партнёра для которого будут искаться перелёты
- cur – ISO-код валюты
- class – код класса перелёта
- ityFromName – название города вылета
- cityFromCode – код города вылета
- airportFromCode – код аэропорта вылета
- countryFromName – название страны вылета
- countryFromCode – код страны вылета
- cityToName - название города прилёта
- cityToCode – код города прилёта
- airportToCode – код аэропорта прилёта
- countryToName – название страны прилёта
- countryToCode – код страны прилёта
- charterClass – класс перелёта(прямой рейс)
- airlineKey – ключ авиакомпании(прямой рейс)
- airlineCode – код авиакомпании(прямой рейс)
- airlineName – название авиакомпании(прямой рейс)
- charterNumber – номер рейса(прямой рейс)
- charterTime – время рейса(прямой рейс)
- airlineBackKey – ключ авиакомпании(обратный рейс)
- airlineBackCode - код авиакомпании(обратный рейс)
- airlineBackName – название авиакомпании(обратный рейс)
- charterBackNumber - номер рейса(обратный рейс)
- charterBackTime – время рейса(обратный рейс)
- charterBackClass – класс перелёта(обратный рейс)
- charterToQuote – код квоты прямого перелёта. Принимает следующие значения(обычно бывают только первые 3, остальные на всякий случай)
Yes = 1, No = 2, Request = 4, None = 0, AFew = 3, OnlyAgent = 6, NoFlight = 5, All = 7, NotChecked = 10
- charterBackQuote – код квоты обратного перелёта. Принимает те же значения, что и charterToQuote.
- dateTo – дата прямого перелёта
- dateBack – дата обратного перелёта
- cost – цена(может быть дробной)
- rate – код валюты
- url – ссылка на бронирование, имеет вид reservation.aspx?{параметры}, причём кол-во туристов для бронирования по умолчанию передаётся turistCount=1
TicketSearchService.asmx/GetStraightFlightDates
/// <summary> /// Метод возвращает даты прямых перелётов. /// </summary> /// <param name="token">Строка авторизации на сервисе</param> /// <param name="jsFlightSearchFilter">JSON-строка установленного формата. Для работы этого метода должны быть заданы либо город, либо страна вылета и прилёта.</param> /// <param name="callback">Имя js-функции, вызываемой в результате работы сервиса</param> [WebMethod] public void GetStraightFlightDates(string token, string jsFlightSearchFilter, string callback)
jsFlightSearchFilter может принимать параметры:
- ctfrom – ключ города вылета
- ctto – ключ города прилёта
- cnfrom – ключ страны вылета(всегда приоритетней, чем ctfrom)
- cnto - ключ страны прилёта(всегда приоритетней, чем ctto)
Формат возвращаемых данных
TicketSearchService.asmx/GetArrivalCities
[{"CountryKey":90,"CountryCode":"AT","CountryName":"Австрия","CityKey":275,"CityCode":"AUS","CityName":"Арльберг","AirportCode":"AL","AirportName":"Аэропорт AL"}]
TicketSearchService.asmx/GetBackFlightDates
[{"dt":"15.12.2010"},{"dt":"16.12.2010"},{"dt":"17.12.2010"}]
TicketSearchService.asmx/GetDepartureCities
[{"CountryKey":90,"CountryCode":"AT","CountryName":"Австрия","CityKey":275,"CityCode":"AUS","CityName":"Арльберг","AirportCode":"AL","AirportName":"Аэропорт AL"}]
TicketSearchService.asmx/GetFlights
[{"cityFromName":"Москва","cityFromCode":"MOW","countryFromName":"Россия","countryFromCode":"RU","cityToName":"Арльберг", "cityToCode":"AUS","airportToCode":"AL","countryToName":"Австрия","countryToCode":"AT","airportFromCode":"VKO", "charterToQuote":4,"airlineKey":2,"airlineName":"Атлант Союз","airlineCode":"3G","charterNumber":"1010","charterTime":"00:00","charterClass":"Y","charterBackQuote":4, "airlineBackKey":2,"airlineBackName":"Атлант Союз","airlineBackCode":"3G","charterBackNumber":"1011","charterBackTime":"11:10","charterBackClass":"Y", "dateTo":"17.12.2010","dateBack":"24.12.2010","cost":200,"rate":"$","url":"reservation.aspx?chTo=528&chBack=529&tourDate=2010-12-17&backDate=2010-12-24&charterClass=89&turistCount=1"}]
TicketSearchService.asmx/GetStraightFlightDates
[{"dt":"24.11.2010"},{"dt":"25.11.2010"},{"dt":"26.11.2010"}]
Работа в системе
Пример вызова
Пример JSON-запроса к сервису
callback:
jsonp1277981564108
jsFlightSearchFilter:
{"flightSearchParams":{"ctto":275, "cnfrom":460,"bdate":"2010-12-15"}}