Web-сервисы: Сервис поиска и бронирования авиабилетов
Версия статьи от 22-07-2016.
Более ранние версии: |
Содержание
Введение
Проблема любого туроператора – продажа горящих билетов на свои чартеры и регулярные рейсы. Сервис дает возможность открыть еще один канал продаж через внешние системы бронирования авиабилетов. В настоящее время (июнь 2016) с этим сервисом может работать консолидатор по продаже авиабилетов Авиа Центр.
Установка
Для установки Сервиса поиска авиабилетов нужно создать отдельную директорию, например, 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/TicketSearchService.asmx.
Настройки в файле WEB.CONFIG
Дополнительные настройки, задаваемые в файле web.config, находящемся в папке wsAviaSearch позволяют задать дополнительные условия для отображения и проверки данных.
№ | Описание | Значение | Настройка |
---|---|---|---|
1 | Проверка агентской квоты |
|
<add key="checkAgentQuotesEnabled" value="false" />
|
2 | Проверка общей квоты, если закончились места в агентской |
|
<add key="checkAgentAndCommonQuote" value="false" />
|
3 | Настройка, определяющая необходимость проверки пакета перелетов в туре при подборе рейсов в корзинах
При проверке наличия мест у услуги Авиаперелет данная настройка взаимодействует с настройкой checkAllPartnersQuota. |
|
<add key="checkFlightPacket" value="true" />
|
4 | Проверка квот без продолжительности после того, как заканчиваются квоты на продолжительность |
|
<add key="checkNoLongQuota" value="true" />
|
5 | Наличие мест, отображаемое при наступлении релиз-периода |
|
<add key="expiredReleaseQuoteResult" value="request" />
|
6 | Настройка, позволяющая осуществлять проверку наличия мест в квотах от любого партнера вне зависимости от того, какой партнер предоставляет цену.
При проверке наличия мест у услуги Авиаперелет данная настройка взаимодействует с настройкой checkFlightPacket. |
|
<add key="checkAllPartnersQuota" value="false" />
|
7 | Отображение наличия мест (на квотируемые услуги) в экранах в случае, если закончились свободные места в квоте. |
|
<add key="noPlacesQuoteResult" value="no" />
|
8 | Отображение наличия мест в экранах, если релиз-период = 0. |
|
<add key="setRequestIfReleaseIsZero" value="true" />
|
9 | Отображение наличия мест в экранах, если релиз-период = 0. |
|
<add key="setRequestIfReleaseIsZero" value="false" />
|
10 | Настройка, определяющая валюту, в которой будет совершаться бронирование. | Код валюты (поле RA_CODE из таблицы [Rates] ).
Пересчет стоимости авиаперелета происходит по планируемому курсу на дату предоставления услуги. Если настройка не задана, то по умолчанию бронирование происходит в национальной валюте. |
<add key ="AviaBookingCurrency" value="$" />
|
11 | Ключи тарифов на авиаперелет для размещения «Младенец» (Infant).
Настройка используется для подмены услуги перелета для туристов с типом возраста Infant. |
Ключи тарифов через запятую (поле AS_KEY из таблицы [AirService] ).
|
<add key="infantCharterClasses" value="109" />
|
12 | Задание статуса заявки в ПК «Мастер-Тур», забронированной через метод бронирования ПК «Мастер-Web». |
Подробнее см. Механизм изменения статуса путевки. |
<add key="orderStatus" value="web" />
|
13 | Определение квотируемых услуг в турах. | Ключ услуги, на которую нужно учитывать квоты в прайс-листе, при выводе конечного статуса наличия мест на тур.
В случае когда несколько услуг являются квотируемыми, ключи перечисляются через запятую). |
<add key="quotedServices" value="1,3" />
|
Подготовка данных
Выставление туров в интернет
Требования по подготовке данных в ПК «Мастер-тур»
В целях избежания ошибок в процессе бронирования предварительно должны быть корректно заполнены соответствующие справочники в ПК «Мастер-Тур».
Справочник в ПК «Мастер-Тур» | Вносимые данные | Примечание |
---|---|---|
Авиаперелеты | Расписание авиарейсов | Необходимо для подбора авиаперелетов при выборе направления |
Трансферы | Город, к которому привязан трансфер; место отправки и прибытия |
Пример: трансфер Анталья - Сиде должен быть привязан к городу Анталья, трансфер Сиде-Анталья должен быть привязан к городу Сиде. Место отправки и прибытия – это текстовые поля. Их заполнение необходимо для правильного отображения курортов при выборе трансферов. |
Выставление туров в систему on-line бронирования
Формирование тура в ПК «Мастер-Тур»
- В конструкторе туров отдельно создаются туры для перелетов в оба конца и для перелетов только в один конец.
- Услуги, входящие в туры, привязаны к отдельному пакету.
- У тура проставлены даты заезда.
- Трансферы заводятся в этих же турах. Без перелета трансфер забронировать нельзя.
- Обратный перелет заводится на любой день кроме первого дня тура.
- Услуги, входящие в туры, привязаны к отдельному пакету.
- Заведены цены на услуги.
Выставление тура в Интернет в ПК «Мастер-Web»
В ПК «Мастер-Web» существует возможность выставления для продажи необсчитанных туров в системе online-бронирования авиабилетов. Делается это в Системе администрирования ПК «Мастер-Web» (http://ip-адрес сервера Мастер-Веб/MasterWebStandard/Admin
).
Войти в систему администрирования можно под именем (логином) и паролем пользователя ПК Мастер-Тур, если это не ограничено настройками системы (см. инструкции по установке и настройке ПК «Мастер-Web»). Выберите раздел Выставить тур в Интернет. В загрузившемся экране с помощью фильтра найдите нужный тур и нажмите на ссылку Изменить слева от названия тура в ПК Мастер-Тур. Загрузится экран Тур для выставления тура в Интернет.
В данном экране необходимо поставить галку «Разрешить бронирование без пароля», а затем сохранить изменения, после чего тур попадет в систему бронирования авиабилетов. (Галка появляется при добавлении настройки anonymousUserKey в файле web.config Cистемы администрирования.)
По каждому направлению «Город вылета-Страна-Город прилета» может быть не более 3х туров, выставленных для надстройки «Бронирование авиабилетов». Из этих трех туров только один тур может быть «Туда-Обратно», только один «Только туда» и только один «Рейс только обратно».
Работа в системе
Сервис принимает токен авторизации. Токен можно получить через сервис авторизации.
Метод «GetArrivalCities»
Метод возвращает все города/аэропорты прибытия для заданного города или страны вылета.
Сигнатура метода
public AirportInfo[] GetArrivalCities(string token, int cityFromKey, int countryFromKey)
Описание принимаемых методом параметров
- token - идентификатор аутентификации;
- cityFromKey - город вылета;
- countryFromKey - страна вылета.
Возвращаемые значения
Метод возвращает результат своей работы в виде элементов массива AirportInfo[].
- CountryKey - ключ страны прилета;
- CountryCode - код страны прилета;
- CountryName - название страны;
- CityKey - ключ города прилёта;
- CityCode - код города прилёта;
- CityName - название города прилёта;
- AirportCode - код аэропорта прилёта;
- AirportName - название аэропорта.
Метод «GetBackFlightDates»
Метод возвращает даты обратных перелётов.
Сигнатура метода
public DateTime[] GetBackFlightDates(string token, int cityToKey, int countryToKey, int cityFromKey, int countryFromKey, DateTime tourDate)
Описание принимаемых методом параметров
- token - идентификатор аутентификации;
- cityToKey - город прилёта;
- countryToKey - страна прилёта;
- cityFromKey - город вылета;
- countryFromKey - страна вылета;
- tourDate - дата вылета.
Возвращаемые значения
Метод возвращает результат своей работы в виде элементов массива DateTime[].
- dateTime - дата обратного перелёта.
Метод «GetFlightTransferCities»
Метод возвращает список мест прибытия трансфера, до которых возможен трансфер из указанного города или страны прилёта.
Сигнатура метода
public string[] GetFlightTransferCities(string token, int cityToKey, int countryToKey, int cityFromKey, int countryFromKey, bool oneWay)
Описание принимаемых методом параметров
- token - идентификатор аутентификации;
- cityToKey - город прилёта;
- countryToKey - страна прилёта;
- cityFromKey - город вылета;
- countryFromKey - страна вылета;
- oneWay - признак того, что перелет в одну сторону.
Возвращаемые значения
Метод возвращает результат своей работы в виде элементов массива string[].
- String - название места прибытия трансфера.
Метод «GetDepartureCities»
Метод возвращает все возможные города/аэропорты вылета.
Сигнатура метода
public AirportInfo[] GetDepartureCities(string token)
Описание принимаемых методом параметров
- token - идентификатор аутентификации.
Возвращаемые значения
Метод возвращает результат своей работы в виде элементов массива AirportInfo[].
- CountryKey - ключ страны прилёта;
- CountryCode - код страны прилёта;
- CountryName - название страны прилёта;
- CityKey - ключ города прилёта;
- CityCode - код города прилёта;
- CityName - название города прилёта;
- AirportCode - код аэропорта прилёта;
- AirportName - название аэропорта прилёта.
Метод «GetFlights»
Метод возвращает перелёты по заданным параметрам. Подбор тура в одну сторону происходит, если не задана дата возвращения или совпадает с датой вылета.
Сигнатура метода
public FlightTour[] GetFlights(string token, FlightSearchFilter searchFilter)
Описание принимаемых методом параметров
- token - идентификатор аутентификации;
- CountryToKey - ключ страны прилёта;
- CountryFromKey - ключ страны вылета;
- CityFromKey - ключ города вылета;
- CityToKey - ключ города прилёта;
- TourDate - дата вылета;
- DateBack - дата прилёта;
- AgentKey - ключ партнёра, для которого будут искаться перелёты;
- RateISOCode - ISO-код валюты;
- CharterClass - код класса перелёта;
- TransferTo - название места прибытия трансфера, полученное методом «GetFlightTransferCities».
Возвращаемые значения
Метод возвращает результат своей работы в виде элементов массива FlightTour[].
- AirlineBackCode - код авиакомпании (обратный рейс);
- AirlineBackKey - ключ авиакомпании (обратный рейс);
- AirlineBackName - название авиакомпании (обратный рейс);
- AirlineCode - код авиакомпании(прямой рейс);
- AirlineKey - ключ авиакомпании(прямой рейс);
- AirlineName - название авиакомпании(прямой рейс);
- AirportFromCode - код аэропорта вылета;
- AirportToCode - код аэропорта прилёта;
- CharterBackClass - класс перелёта(обратный рейс);
- CharterBackClassKey - ключ класса перелёта(обратный рейс);
- CharterBackKey – ключ чартера перелёта (обратный рейс);
- CharterBackPartnerKey – ключ партнера перелёта(обратный рейс);
- CharterBackNumber - номер рейса(обратный рейс);
- CharterBackQuote - код квоты (обратный рейс). Возвращает следующие значения:
- Yes = 1,
- No = 2,
- Request = 4,
- None = 0,
- AFew = 3,
- OnlyAgent = 6,
- NoFlight = 5,
- All = 7,
- NotChecked = 10
- CharterBackTime - время рейса(обратный рейс);
- CharterClass - класс перелёта(прямой рейс);
- CharterClassKey - ключ класса перелёта(прямой рейс);
- CharterKey – ключ чартера перелета(прямой рейс);
- CharterPartnerKey – ключ партнера перелета(прямой рейс);
- CharterNumber - номер рейса(прямой рейс);
- CharterTime - время рейса(прямой рейс);
- CharterToQuote - код квоты прямого перелёта. Возвращает те же значения, что и charterBackQuote.
- CityFromCode - код города вылета;
- CityFromName - название города вылета;
- CityToCode - код города прилёта;
- CityToName - название города прилёта;
- Cost - цена(может быть дробной);
- CountryFromCode - код страны вылета;
- CountryFromName - название страны вылета;
- CountryToCode - код страны прилёта;
- CountryToName - название страны прилёта;
- DateBack - дата обратного перелёта (строго в формате dd.mm.yyyy);
- DateTo - дата прямого перелёта (строго в формате dd.mm.yyyy);
- Rate - код валюты;
- Url - ссылка на бронирование;
- Transfers - ключи трансферов в туре.
Метод «GetStraightFlightDates»
Метод возвращает даты прямых перелётов.
Сигнатура метода
public DateTime[] GetStraightFlightDates(string token, int cityToKey, int countryToKey, int cityFromKey, int countryFromKey)
Описание принимаемых методом параметров
- token - идентификатор аутентификации;
- CityToKey - ключ города прилёта;
- CountryToKey - ключ страны прилёта;
- CityFromKey - ключ города вылета;
- CountryFromKey - ключ страны вылета.
Возвращаемые значения
Метод возвращает результат своей работы в виде элементов массива DateTime[].
- dateTime - дата прямого перелёта.
Метод «CreateReservation»
Метод осуществляет бронирование тура.
Сигнатура метода
public ReservationResult CreateReservation(string token, FlightTour flightTour, List<Tourist> tourists, ReservationParameters parameters)
Описание принимаемых методом параметров
- token - идентификатор аутентификации;
Метод принимает значения элемента массива FlightTour[], который возвращает метод «GetFlights», а также значения элемента(ов) массива Tourists:
- tourists - количество туристов (Пример: "length=1" - 1 турист);
- IsMain - главный турист. Возможные значения:
- True - главный турист;
- False - не главный турист;
- FirstName - имя туриста;
- LastName- фамилия туриста
- SecondName - отчество туриста
- BirthDate - дата рождения
- PassportSeries - серия паспорта
- PassportNumber - номер паспорта
- PassportIssuedBy - кем выдан паспорт
- PassportIssueDate - дата выдачи паспорта
- PassportEndDate - дата окончания действия паспорта
- Sex - пол туриста. Возможные значения:
- Male - мужской;
- Female - женский.
- AgeType - тип возраста туриста. Возможные значения:
- Adult - взрослый;
- Child - ребёнок;
- Infant - младенец.
- PassportType - тип паспорта туриста. Возможные значения:
- International - загран. паспорт;
- National - общегражданский паспорт.
Параметры бронирования путёвки:
- PartnerKey - ключ партнера к которому будет привязана путевка;
- DupUserKey - ключ представителя партнера;
- MainMenAddress - адрес главного туриста по путевке;
- MainMenComment - комментарий к главному туристу по путёвке;
- MainMenEmail - электронная почта главного туриста по путёвке;
- MainMenFullName - ФИО главного туриста по путёвке;
- MainMenPassport - паспортные данные главного туриста по путёвке;
- MainMenPhone - контактный номер главного туриста по путёвке;
- IsCalculateOnly - возможные значения:
- True - произвести только расчёт путёвки;
- False - рассчитать и забронировать путёвку.
Возвращаемые значения
- Brutto - стоимость путевки;
- DiscountPercent - процент скидки;
- DiscountSum - сумма скидки;
- Rate - валюта путевки;
- DogovorCode - код созданной путевки;
- ErrorCode - код ошибки;
- ErrorMessage - текст ошибки.
Корректность результата проверяется значением поля ErrorCode и ErrorMessage:
- 0 – нет ошибок;
- 50 – нет туристов;
- 51 – некорректная дата рождения туриста;
- 52 – указана пустая или слишком длинная фамилия туриста;
- 53 – указано пустое или слишком длинное имя туриста;
- 54 – указано слишком длинное отчество туриста;
- 55 – некорректная дата выдачи паспорта;
- 56 – некорректная дата окончания срока действия паспорта;
- 57 – некорректная серия паспорта (слишком длинная);
- 58 – Некорректный номер паспорта (слишком длинный);
- 100 – не указана дата начала тура;
- 200 – не найден тур для чартеров;
- 300 – не найдены цены для чартеров;
- 400 – отсутствуют квот для чартеров;
- 500 – невозможно произвести бронирование;
- 600 – неизвестная ошибка, подробности в логе;
- 700 – ошибка отправки почты, путёвка создана.