Web-сервисы: Сервис поиска и бронирования авиабилетов — различия между версиями
[досмотренная версия] | [досмотренная версия] |
Biryukov (обсуждение | вклад) (→Выставление тура в Интернет в ПК «Мастер-Web») |
Porunova (обсуждение | вклад) |
||
(не показана 21 промежуточная версия 3 участников) | |||
Строка 1: | Строка 1: | ||
− | |||
Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}. | Версия статьи от {{REVISIONDAY}}-{{REVISIONMONTH}}-{{REVISIONYEAR}}. | ||
+ | |||
+ | <table style="background-color:#ffffcc;color:black" border="1" cellpadding="10" cellspacing="0"> | ||
+ | <tr> | ||
+ | <td> | ||
+ | Более ранние версии:<br /> | ||
+ | [http://wiki.megatec.ru/index.php?title=Web-сервисы:_Сервис_поиска_и_бронирования_авиабилетов&oldid=16178 До версии ПК «Мастер-Web» 2009.2.20.31 включительно]<br /> | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br /><br> | ||
==Введение== | ==Введение== | ||
− | + | Проблема любого туроператора – продажа горящих билетов на свои чартеры и регулярные рейсы. Сервис дает возможность открыть еще один канал продаж через внешние системы бронирования авиабилетов. В настоящее время (июнь 2016) с этим сервисом может работать консолидатор по продаже авиабилетов [http://www.avia-centr.ru/index Авиа Центр]. | |
==Установка== | ==Установка== | ||
Строка 30: | Строка 39: | ||
===Подключение к базе данных ПК «Мастер-Тур»=== | ===Подключение к базе данных ПК «Мастер-Тур»=== | ||
− | В файле web.config, расположенном в папке wsAviaSearch, в которую установлен web-сервис «Сервис поиска авиабилетов», пропишите необходимые параметры подключения ( | + | В файле web.config, расположенном в папке wsAviaSearch, в которую установлен web-сервис «Сервис поиска авиабилетов», пропишите необходимые параметры подключения (<span style="color:red">красным цветом</span> выделены значения, которые необходимо ввести). |
− | Строка подключения к базе данных ПК «Мастер-Тур»: | + | Строка подключения к базе данных ПК «Мастер-Тур»:<br /> |
− | + | <code><add key = "connectionString" value = "Data Source=<span style="color:red">ip-адрес сервера базы данных ПК «Мастер-Тур»</span>;Initial Catalog=<span style="color:red">название базы данных ПК «Мастер-Тур</span>;User ID=<span style="color:red">логин пользователя ПК «Мастер-Тур»</span>;Password=<span style="color:red">пароль пользователя ПК «Мастер-Тур»</span>"/></code> | |
− | |||
− | |||
==Настройка== | ==Настройка== | ||
− | После установки «Сервис поиска авиабилетов» доступен по адресу: http://''ip-адрес сервера Мастер-Веб/wsAviaSearch/ | + | После установки «Сервис поиска авиабилетов» доступен по адресу: http://''ip-адрес сервера Мастер-Веб/wsAviaSearch/TicketSearchService.asmx''. |
+ | |||
+ | ===Настройки в файле WEB.CONFIG=== | ||
+ | Дополнительные настройки, задаваемые в файле web.config, находящемся в папке wsAviaSearch позволяют задать дополнительные условия для отображения и проверки данных. | ||
+ | |||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | ||
+ | |||
+ | |- style="background-color:#F2F2F2" | ||
+ | |||
+ | ! width="2%" | № | ||
+ | ! width="28%" | Описание | ||
+ | ! width="35%" | Значение | ||
+ | ! width="35%" | Настройка | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 1 | ||
+ | | Проверка агентской квоты | ||
+ | | | ||
+ | * '''true''' или '''отсутствие настройки''' — квоты разделяются на агентские/общие | ||
+ | * '''false''' — агентские квоты игнорируются, проверяется только общая квота | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="checkAgentQuotesEnabled" value="false" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 2 | ||
+ | | Проверка общей квоты, если закончились места в агентской | ||
+ | | | ||
+ | * '''true''' или '''отсутствие настройки''' — если агентская квота закончилась, то проверяется общая квота | ||
+ | * '''false''' — если агентская квота закончилась, общая не проверяется | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="checkAgentAndCommonQuote" value="false" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 3 | ||
+ | | Настройка, определяющая необходимость проверки пакета перелетов в туре при подборе рейсов в корзинах | ||
+ | При проверке наличия мест у услуги Авиаперелет данная настройка [[Мастер-Web:Установка_и_настройка#Таблица взаимодействия настроек|взаимодействует]] с настройкой '''checkAllPartnersQuota'''. | ||
+ | | | ||
+ | * '''true''' или '''отсутствие настройки''' — подбирать рейс только из пакета, указанного в туре | ||
+ | * '''false''' — производить подбор рейса из любого пакета | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="checkFlightPacket" value="true" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 4 | ||
+ | | Проверка квот без продолжительности после того, как заканчиваются квоты на продолжительность | ||
+ | | | ||
+ | * '''true''' или '''отсутствие настройки''' — проверять квоты без продолжительности после того, как закончатся квоты на продолжительность | ||
+ | * '''false''' — не проверять квоты без продолжительности | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="checkNoLongQuota" value="true" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 5 | ||
+ | | Наличие мест, отображаемое при наступлении релиз-периода | ||
+ | | | ||
+ | * '''request''' — запрос | ||
+ | * '''no''' — нет | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="expiredReleaseQuoteResult" value="request" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 6 | ||
+ | | Настройка, позволяющая осуществлять проверку наличия мест в квотах от любого партнера вне зависимости от того, какой партнер предоставляет цену. | ||
+ | При проверке наличия мест у услуги Авиаперелет данная настройка [[Мастер-Web:Установка_и_настройка#Таблица взаимодействия настроек|взаимодействует]] с настройкой '''checkFlightPacket'''. | ||
+ | | | ||
+ | * '''true''' — осуществлять проверку наличия мест от любого партнера | ||
+ | * '''false''' или '''отсутствие настройки''' — проверка наличия мест осуществляется только по партнеру, предоставляющему цену | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="checkAllPartnersQuota" value="false" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 7 | ||
+ | | Отображение '''наличия мест''' (на [[Мастер-Тур:Квоты|квотируемые услуги]]) в экранах в случае, '''если закончились свободные места в квоте'''. | ||
+ | | | ||
+ | * '''no''' — «СТОП» (нет квот); | ||
+ | * '''request''' — «Запрос» (места по запросу); | ||
+ | * '''отсутствие настройки''' — «СТОП». | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="noPlacesQuoteResult" value="no" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 8 | ||
+ | | Отображение наличия мест в экранах, '''если релиз-период = 0'''. | ||
+ | | | ||
+ | * '''true''' — отображается «Запрос», даже если в квоте еще есть свободные места | ||
+ | * '''false''' или '''отсутствие настройки''' — отображается статус в соответствии с обычными правилами | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="setRequestIfReleaseIsZero" value="true" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 9 | ||
+ | | Отображение наличия мест в экранах, '''если релиз-период = 0'''. | ||
+ | | | ||
+ | * '''true''' — отображается «Запрос», даже если в квоте еще есть свободные места | ||
+ | * '''false''' или '''отсутствие настройки''' — отображается статус в соответствии с обычными правилами | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="setRequestIfReleaseIsZero" value="false" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 10 | ||
+ | | Настройка, определяющая '''валюту''', в которой будет '''совершаться бронирование'''. | ||
+ | | '''Код валюты''' (поле '''RA_CODE''' из таблицы <code>'''[Rates]'''</code>). | ||
+ | '''Пересчет стоимости''' авиаперелета происходит по '''[[Мастер-Тур:Справочники#Планируемые кросс-курсы валют|планируемому курсу]]''' на '''дату предоставления услуги'''. | ||
+ | Если настройка '''не задана''', то по умолчанию бронирование происходит в '''[[Мастер-Тур:Справочники#Список Валют|национальной валюте]]'''. | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key ="AviaBookingCurrency" value="$" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 11 | ||
+ | | '''Ключи тарифов''' на авиаперелет для '''размещения «Младенец»''' ('''Infant'''). | ||
+ | Настройка используется для подмены услуги перелета для туристов с типом возраста Infant. | ||
+ | | '''Ключи тарифов''' через запятую (поле '''AS_KEY''' из таблицы <code>'''[AirService]'''</code>). | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="infantCharterClasses" value="109" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | | 12 | ||
+ | | Задание '''[[Мастер-Тур:Работа с путевкой#Механизм изменения статуса путевки|статуса заявки]]''' в ПК «Мастер-Тур», забронированной через '''метод бронирования''' ПК «Мастер-Web». | ||
+ | | | ||
+ | * '''web''' — статус '''Web-турагент'''; | ||
+ | * '''wait''' — статус '''Wait-лист'''; | ||
+ | * '''отсутствие параметра''' или пустое значение''' — '''стандартный''' статус в ПК «Мастер-Тур». | ||
+ | Подробнее см. [[Мастер-Тур:Работа с путевкой#Механизм изменения статуса путевки|Механизм изменения статуса путевки]]. | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="orderStatus" value="web" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |13 | ||
+ | | Определение '''[[Мастер-Тур:Квоты|квотируемых услуг]]''' в турах. | ||
+ | | '''Ключ услуги''', на которую нужно ''учитывать квоты'' в прайс-листе, при выводе конечного статуса наличия мест на тур. | ||
+ | В случае когда '''несколько''' услуг являются квотируемыми, ключи '''перечисляются через запятую'''). | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="quotedServices" value="1,3" /> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |- style="vertical-align:text-top" | ||
+ | |14 | ||
+ | | Настройка, выводящая количество мест в квоте на прямой и обратный перелет в методе [[Web-сервисы: Сервис поиска и бронирования авиабилетов#Метод «GetFlights»|GetFlights]]. | ||
+ | | | ||
+ | * '''true''' - возвращается параметр ''PlacesCountTo'' и ''PlacesCountBack'' | ||
+ | * '''false''' или '''отсутствие настройки''' - параметр ''PlacesCountTo'' и ''PlacesCountBack'' не возвращается | ||
+ | | <syntaxhighlight lang="xml" enclose="div"> | ||
+ | <add key="showPlacesCount" value="true"/> | ||
+ | </syntaxhighlight> | ||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | |} | ||
+ | |||
==Подготовка данных== | ==Подготовка данных== | ||
===Выставление туров в интернет=== | ===Выставление туров в интернет=== | ||
Строка 91: | Строка 257: | ||
==Работа в системе== | ==Работа в системе== | ||
[[Файл: am_064.png|left|Полезная информация]] <BR> | [[Файл: am_064.png|left|Полезная информация]] <BR> | ||
− | Сервис принимает токен авторизации. '''Токен''' можно получить через [[ | + | Сервис принимает токен авторизации. '''Токен''' можно получить через [[Web-сервисы: Сервис для авторизации|'''сервис авторизации''']]. |
<br /> | <br /> | ||
Строка 128: | Строка 294: | ||
Метод возвращает результат своей работы в виде элементов массива '''DateTime[]'''. | Метод возвращает результат своей работы в виде элементов массива '''DateTime[]'''. | ||
* '''dateTime''' - дата обратного перелёта. | * '''dateTime''' - дата обратного перелёта. | ||
+ | |||
+ | ===Метод «GetFlightTransferCities»=== | ||
+ | Метод возвращает список мест прибытия трансфера, до которых возможен трансфер из указанного города или страны прилёта. | ||
+ | ====Сигнатура метода==== | ||
+ | <code>public string[] GetFlightTransferCities(string token, int cityToKey, int countryToKey, int cityFromKey, int countryFromKey, bool oneWay)</code> | ||
+ | ====Описание принимаемых методом параметров==== | ||
+ | * '''token''' - идентификатор аутентификации; | ||
+ | * '''cityToKey''' - город прилёта; | ||
+ | * '''countryToKey''' - страна прилёта; | ||
+ | * '''cityFromKey''' - город вылета; | ||
+ | * '''countryFromKey''' - страна вылета; | ||
+ | * '''oneWay''' - признак того, что перелет в одну сторону. | ||
+ | ====Возвращаемые значения==== | ||
+ | Метод возвращает результат своей работы в виде элементов массива '''string[]'''. | ||
+ | * '''String''' - название места прибытия трансфера. | ||
===Метод «GetDepartureCities»=== | ===Метод «GetDepartureCities»=== | ||
Строка 147: | Строка 328: | ||
===Метод «GetFlights»=== | ===Метод «GetFlights»=== | ||
− | Метод возвращает перелёты по заданным параметрам. | + | Метод возвращает перелёты по заданным параметрам. Подбор тура в одну сторону происходит, если не задана дата возвращения или совпадает с датой вылета. |
+ | У прямого и обратного перелета должен совпадать AirlineCode. | ||
====Сигнатура метода==== | ====Сигнатура метода==== | ||
<code>public FlightTour[] GetFlights(string token, FlightSearchFilter searchFilter)</code> | <code>public FlightTour[] GetFlights(string token, FlightSearchFilter searchFilter)</code> | ||
Строка 161: | Строка 343: | ||
* '''RateISOCode''' - ISO-код валюты; | * '''RateISOCode''' - ISO-код валюты; | ||
* '''CharterClass''' - код класса перелёта; | * '''CharterClass''' - код класса перелёта; | ||
− | * '''TransferTo''' - | + | * '''TransferTo''' - название места прибытия трансфера, полученное методом [[Web-сервисы: Сервис поиска и бронирования авиабилетов#Метод «GetFlightTransferCities»|'''«GetFlightTransferCities»''']]. |
+ | |||
====Возвращаемые значения==== | ====Возвращаемые значения==== | ||
Метод возвращает результат своей работы в виде элементов массива '''FlightTour[]'''. | Метод возвращает результат своей работы в виде элементов массива '''FlightTour[]'''. | ||
Строка 173: | Строка 356: | ||
* '''AirportToCode''' - код аэропорта прилёта; | * '''AirportToCode''' - код аэропорта прилёта; | ||
* '''CharterBackClass''' - класс перелёта(обратный рейс); | * '''CharterBackClass''' - класс перелёта(обратный рейс); | ||
+ | * '''CharterBackClassKey''' - ключ класса перелёта(обратный рейс); | ||
+ | * '''CharterBackKey''' – ключ чартера перелёта (обратный рейс); | ||
+ | * '''CharterBackPartnerKey''' – ключ партнера перелёта(обратный рейс); | ||
* '''CharterBackNumber''' - номер рейса(обратный рейс); | * '''CharterBackNumber''' - номер рейса(обратный рейс); | ||
* '''CharterBackQuote''' - код квоты (обратный рейс). Возвращает следующие значения: | * '''CharterBackQuote''' - код квоты (обратный рейс). Возвращает следующие значения: | ||
− | + | **Yes = 1, | |
− | + | **No = 2, | |
− | + | **Request = 4, | |
− | + | **None = 0, | |
− | + | **AFew = 3, | |
− | + | **OnlyAgent = 6, | |
− | + | **NoFlight = 5, | |
− | + | **All = 7, | |
− | + | **NotChecked = 10 | |
− | * '''CharterBackTime''' - время рейса(обратный рейс); | + | * '''CharterBackTime''' - время отправления рейса(обратный рейс); |
+ | * '''CharterBackTimeArr''' - время прибытия рейса(обратный рейс); | ||
* '''CharterClass''' - класс перелёта(прямой рейс); | * '''CharterClass''' - класс перелёта(прямой рейс); | ||
+ | * '''CharterClassKey''' - ключ класса перелёта(прямой рейс); | ||
+ | * '''CharterKey''' – ключ чартера перелета(прямой рейс); | ||
+ | * '''CharterPartnerKey''' – ключ партнера перелета(прямой рейс); | ||
* '''CharterNumber''' - номер рейса(прямой рейс); | * '''CharterNumber''' - номер рейса(прямой рейс); | ||
− | * '''CharterTime''' - время рейса(прямой рейс); | + | * '''CharterTime''' - время отправления рейса(прямой рейс); |
+ | * '''CharterTimeArr''' - время прибытия рейса(прямой рейс); | ||
* '''CharterToQuote''' - код квоты прямого перелёта. Возвращает те же значения, что и charterBackQuote. | * '''CharterToQuote''' - код квоты прямого перелёта. Возвращает те же значения, что и charterBackQuote. | ||
* '''CityFromCode''' - код города вылета; | * '''CityFromCode''' - код города вылета; | ||
Строка 198: | Строка 389: | ||
* '''CountryToCode''' - код страны прилёта; | * '''CountryToCode''' - код страны прилёта; | ||
* '''CountryToName''' - название страны прилёта; | * '''CountryToName''' - название страны прилёта; | ||
− | * '''DateBack''' - дата обратного перелёта; | + | * '''DateBack''' - дата обратного перелёта (строго в формате dd.mm.yyyy); |
− | * '''DateTo''' - дата прямого перелёта; | + | * '''DateTo''' - дата прямого перелёта (строго в формате dd.mm.yyyy); |
* '''Rate''' - код валюты; | * '''Rate''' - код валюты; | ||
− | * '''Url''' - ссылка на бронирование. | + | * '''Url''' - ссылка на бронирование; |
+ | * '''Transfers''' - ключи трансферов в туре; | ||
+ | * '''PlacesCountTo''' - количество мест в квоте на прямой перелет (возвращается только при включенной настройке [[Web-сервисы: Сервис поиска и бронирования авиабилетов#Настройки в файле WEB.CONFIG|ShowPlacesCount]]) | ||
+ | ** -1 - квоты не заведены | ||
+ | ** 0 - места закончились или стоит Stop-Sale | ||
+ | * '''PlacesCountBack''' - количество мест в квоте на обратный перелет. Возвращает те же значения, что и PlacesCountTo (возвращается только при включенной настройке [[Web-сервисы: Сервис поиска и бронирования авиабилетов#Настройки в файле WEB.CONFIG|ShowPlacesCount]]). | ||
===Метод «GetStraightFlightDates»=== | ===Метод «GetStraightFlightDates»=== | ||
Строка 213: | Строка 409: | ||
* '''CityFromKey''' - ключ города вылета; | * '''CityFromKey''' - ключ города вылета; | ||
* '''CountryFromKey''' - ключ страны вылета. | * '''CountryFromKey''' - ключ страны вылета. | ||
− | |||
====Возвращаемые значения==== | ====Возвращаемые значения==== | ||
Метод возвращает результат своей работы в виде элементов массива '''DateTime[]'''. | Метод возвращает результат своей работы в виде элементов массива '''DateTime[]'''. | ||
* '''dateTime''' - дата прямого перелёта. | * '''dateTime''' - дата прямого перелёта. | ||
+ | |||
+ | ===Метод «CreateReservation»=== | ||
+ | Метод осуществляет бронирование тура. | ||
+ | ====Сигнатура метода==== | ||
+ | <code>public ReservationResult CreateReservation(string token, FlightTour flightTour, List<Tourist> tourists, ReservationParameters parameters)</code> | ||
+ | ====Описание принимаемых методом параметров==== | ||
+ | * '''token''' - идентификатор аутентификации; | ||
+ | Метод принимает значения элемента массива '''FlightTour[]''', который возвращает метод [[Web-сервисы: Сервис поиска и бронирования авиабилетов#Метод «GetFlights»|'''«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 – ошибка отправки почты, путёвка создана. | ||
+ | |||
+ | [[Category:Web-сервисы]] |
Текущая версия на 14:16, 23 января 2018
Версия статьи от 23-01-2018.
Более ранние версии: |
Содержание
Введение
Проблема любого туроператора – продажа горящих билетов на свои чартеры и регулярные рейсы. Сервис дает возможность открыть еще один канал продаж через внешние системы бронирования авиабилетов. В настоящее время (июнь 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" />
|
14 | Настройка, выводящая количество мест в квоте на прямой и обратный перелет в методе GetFlights. |
|
<add key="showPlacesCount" value="true"/>
|
Подготовка данных
Выставление туров в интернет
Требования по подготовке данных в ПК «Мастер-тур»
В целях избежания ошибок в процессе бронирования предварительно должны быть корректно заполнены соответствующие справочники в ПК «Мастер-Тур».
Справочник в ПК «Мастер-Тур» | Вносимые данные | Примечание |
---|---|---|
Авиаперелеты | Расписание авиарейсов | Необходимо для подбора авиаперелетов при выборе направления |
Трансферы | Город, к которому привязан трансфер; место отправки и прибытия |
Пример: трансфер Анталья - Сиде должен быть привязан к городу Анталья, трансфер Сиде-Анталья должен быть привязан к городу Сиде. Место отправки и прибытия – это текстовые поля. Их заполнение необходимо для правильного отображения курортов при выборе трансферов. |
Выставление туров в систему 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»
Метод возвращает перелёты по заданным параметрам. Подбор тура в одну сторону происходит, если не задана дата возвращения или совпадает с датой вылета.
У прямого и обратного перелета должен совпадать AirlineCode.
Сигнатура метода
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 - время отправления рейса(обратный рейс);
- CharterBackTimeArr - время прибытия рейса(обратный рейс);
- CharterClass - класс перелёта(прямой рейс);
- CharterClassKey - ключ класса перелёта(прямой рейс);
- CharterKey – ключ чартера перелета(прямой рейс);
- CharterPartnerKey – ключ партнера перелета(прямой рейс);
- CharterNumber - номер рейса(прямой рейс);
- CharterTime - время отправления рейса(прямой рейс);
- CharterTimeArr - время прибытия рейса(прямой рейс);
- CharterToQuote - код квоты прямого перелёта. Возвращает те же значения, что и charterBackQuote.
- CityFromCode - код города вылета;
- CityFromName - название города вылета;
- CityToCode - код города прилёта;
- CityToName - название города прилёта;
- Cost - цена(может быть дробной);
- CountryFromCode - код страны вылета;
- CountryFromName - название страны вылета;
- CountryToCode - код страны прилёта;
- CountryToName - название страны прилёта;
- DateBack - дата обратного перелёта (строго в формате dd.mm.yyyy);
- DateTo - дата прямого перелёта (строго в формате dd.mm.yyyy);
- Rate - код валюты;
- Url - ссылка на бронирование;
- Transfers - ключи трансферов в туре;
- PlacesCountTo - количество мест в квоте на прямой перелет (возвращается только при включенной настройке ShowPlacesCount)
- -1 - квоты не заведены
- 0 - места закончились или стоит Stop-Sale
- PlacesCountBack - количество мест в квоте на обратный перелет. Возвращает те же значения, что и PlacesCountTo (возвращается только при включенной настройке ShowPlacesCount).
Метод «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 – ошибка отправки почты, путёвка создана.