Web-сервисы: Сервис поиска и бронирования авиабилетов — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
(О программе)
Строка 1: Строка 1:
 +
<span style="color:red;font-size:120%">Статья находится на стадии разработки.</span><br>
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
 
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}.
  

Версия 11:54, 14 мая 2014

Статья находится на стадии разработки.
Версия статьи от 14-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).

Ls0217.png

2. Запустить Internet Information Services (IIS) Manager.

Ls0218.png

3. В открывшемся дереве каталогов выбрать сайты (Web Sites) – Default Web Site (либо другой сайт, на который планируется установить приложение). В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и выбрать пункт «Преобразовать в приложение».

Ls0219.png

Подключение к базе данных ПК «Мастер-Тур»

В файле 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"}}