Мастер-Тур(15):API для разработки поиска авиабилетов — различия между версиями

Материал из Megatec
Перейти к: навигация, поиск
[досмотренная версия][досмотренная версия]
Строка 301: Строка 301:
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода departureCities
+
Вызов метода  
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/departures?
 
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/departures?
Строка 322: Строка 322:
 
Метод производит выгрузку всех доступных направлений.
 
Метод производит выгрузку всех доступных направлений.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/individuals/avia/twoway/arrivals/AAA/countries?
+
** GET .../TourSearchOwin/individuals/avia/twoway/arrivals/1/countries?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''AAA *''' – идентификатор города отправления (из контроллера [[#Выгрузка городов отправления (twoway)|''.../TourSearchOwin/individuals/avia/twoway/departures?'']])
+
** '''1 *''' – идентификатор города отправления (из контроллера [[#Выгрузка городов отправления (twoway)|''.../TourSearchOwin/individuals/avia/twoway/departures?'']])
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Name''' – название страны
 
** '''Name''' – название страны
Строка 333: Строка 333:
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода Destination
+
Вызов метода  
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/arrivals/1/countries?
 
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/arrivals/1/countries?
Строка 361: Строка 361:
 
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
 
Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.
 
* Формат запроса:
 
* Формат запроса:
** GET .../TourSearchOwin/individuals/avia/twoway/arrivals/AAA/BBB?
+
** GET .../TourSearchOwin/individuals/avia/twoway/arrivals/1/90?
 
* Принимаемые параметры ( '''*''' – обязательный):
 
* Принимаемые параметры ( '''*''' – обязательный):
** '''AAA *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/departures?'')
+
** '''1 *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/departures?'')
** '''BBB *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/arrivals/AAA/countries?'')
+
** '''90 *''' – идентификатор страны прибытия (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/arrivals/1/countries?'')
 
* Возвращаемый результат:
 
* Возвращаемый результат:
 
** '''Key''' – идентификатор города
 
** '''Key''' – идентификатор города
Строка 372: Строка 372:
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
Вызов метода ActualizeCities
+
Вызов метода  
 
<syntaxhighlight lang="java" enclose="div">
 
<syntaxhighlight lang="java" enclose="div">
 
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/arrivals/1/90?
 
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/arrivals/1/90?
Строка 390: Строка 390:
 
</div></div><br />
 
</div></div><br />
  
 +
===Выгрузка актуальных дат вылета (twoway)===
 +
Метод производит выгрузку доступных дат вылета для поискового запроса.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/individuals/avia/twoway/departures/dates/1/35?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''1 *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/departures?'')
 +
** '''35 *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/arrivals/1/90?'')
 +
* Возвращаемый результат:
 +
** массив дат
 +
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/departures/dates/1/35?
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
["28.08.2018",
 +
"29.08.2018",
 +
"30.08.2018",
 +
"31.08.2018",
 +
"01.09.2018",
 +
"02.09.2018",]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
 +
 +
===Выгрузка актуальных дат возврата (twoway)===
 +
Метод производит выгрузку доступных дат возврата для поискового запроса.
 +
* Формат запроса:
 +
** GET .../TourSearchOwin/individuals/avia/twoway/departures/dates/1/35/20180830?
 +
* Принимаемые параметры ( '''*''' – обязательный):
 +
** '''1 *''' – идентификатор города отправления (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/departures?'')
 +
** '''35 *''' – идентификатор города прибытия (полученный из метода ''.../TourSearchOwin/individuals/avia/twoway/arrivals/1/90?'')
 +
** '''20180830 *''' – дата вылета в формате YYYYMMDD(полученная из метода ''.../TourSearchOwin/individuals/avia/twoway/departures/dates/1/35?'')
 +
* Возвращаемый результат:
 +
** массив дат
  
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:900px">Пример
 +
<div class="mw-collapsible-content">
 +
<TABLE STYLE="border: 0.1em dashed #2F6FAB; margin: 8px; padding: 8px" WIDTH="99%"><TR><TD>
 +
Вызов метода
 +
<syntaxhighlight lang="java" enclose="div">
 +
GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/departures/dates/1/35/20180830?
 +
</syntaxhighlight>
 +
Возвращаемый результат метода (в формате JSON)
 +
<syntaxhighlight lang="java" enclose="div">
 +
["30.08.2018",
 +
"31.08.2018",
 +
"01.09.2018",
 +
"02.09.2018",]
 +
</syntaxhighlight>
 +
</TD></TR></TABLE>
 +
</div></div><br />
  
  

Версия 15:02, 28 августа 2018

Версия статьи от 28-08-2018.

Поддерживаемые версии ПК «Мастер-Тур»:
Начиная с релиза 15.3


Введение

Данный web-сервис предназначен для разработки собственного поиска авиабилетов на основе API.

Установка

Для работы с web-сервисом необходимо установить службу поиска.
После установки web-сервис будет доступен по адресу http://значение настройки "serviceAddress" в TourSearchOwin/"название метода" (пример: http://localhost:9000/TourSearchOwin/Settings)

Список методов

Авторизация (Token)

Метод производит получение авторизационного токена (описание стандарта).

  • Формат запроса:
    • POST .../TourSearchOwin/Token?
  • Принимаемые параметры POST запроса ( * – обязательный):
    • grant_type * – password
    • username * – логин представителя партнера
    • password * – пароль представителя партнера
  • Возвращаемый результат:
    • access_token – токен
    • token_type – тип токена
    • expires_in – код
    • userKey – ключ пользователя
    • .issued – дата получения
    • .expires – дата действия до
Пример

Вызов метода Token

POST http://localhost:9000/TourSearchOwin/Token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=password&username=test&password=1

Возвращаемый результат метода TransportPlan (в формате JSON)

{
	"access_token": "AQAAANCMnd8BFdERjHoAwE_Cl-sBAAAAdsCC8X7m9E-2bg0-uS0VfgAAAAAAAAADZgAAwAAAA-
EqAAAAAASAAACgAAAAEAAAAO4S-VrqBhQuhqliqrAKKfIgAQAAn-gfgP-rYjk-Krr1Ck2A-IGCw6FBhamUOzFxgTtk1hR-
GLMryFIH8VK5GmHdHubZWj4S7XcazGL1Kn5-VlbiYdW2ZVWpYlk638aV-XS2kpZ9YrKgViiM_x8RH5TPo4-
9LhE7V-SjiB_CP_qs58DRKcyohq3Tz9QaiFgH1Ko7O2XKjTBG7SHyQPDPYjaqg9kDxmzq0UcIT6Fm4YkDxmm9-
CW7u3cEFWcpiqKOc2VvZFKPPHc07uDOO4w9FXPhpXZwOqrJBxzhbr73RuhzPs_e-hgxKaIlsMaK5b0v5ReAMy1kuY0ebXA",",
	"token_type": "bearer",
	"expires_in": 1209599,
	"userKey": "333",
	".issued": "Thu, 05 Apr 2018 12:05:31 GMT",
	".expires": "Thu, 19 Apr 2018 12:05:31 GMT"
}


Выгрузка настроек службы поиска (Settings)

Метод производит выгрузку настроек службы поиска.

  • Формат запроса:
    • GET .../TourSearchOwin/Settings?
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • ChildAgesSetting – регулируется настройкой максимальный возраст ребенка (массив возрастов, при которых турист будет считаться ребенком
    • DurationSetting – регулируется настройкой максимальная продолжительность тура (массив продолжительностей, доступных в фильтрах для поиска)
    • RoundServiceSetting – признак округления цены (количество знаков после запятой)
    • CacheReady – статус готовности службы поиска к работе (true/false)
    • EnableFiterTree – устаревшая настройка, будет убрана (по умолчанию всегда false)
    • EnableActualFilters – включены ли актуальные фильтры (true/false)
    • CorrectLicense – проверка лицензии (true/false)
    • CorrectLicenseMessage – сообщение, если проверка лицензии не прошла
    • IsCorrectUser – проверка наличия пользователя в таблице Userlist, под которым запущена служба поиска (true/false)
    • IsShowCitizenAuthTourist – настройка запрашивать гражданство при регистрации частного лица (true/false)
    • IsShowFewCountPlaces – настройка отображения числового значения оставшихся мест, когда достигнуто значение «Мало» (true/false)
    • IsShowBusTransferPlaces – использовать фильтр наличие мест на автобусный переезд в поиске (true/false)
    • UseBusSeatChecks – план рассадки автобусного переезда (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
    • UseTransferSeatChecks – план рассадки трансфера (0 – не отображать, 1 – отображать без проверки, 2 – отображать с проверкой)
    • IsShowFiltersByCity – отображать фильтр по городам на главной странице поиска (true/false)
    • CheckRealCourses – включена ли проверка курсов реальных валют при поиске (true/false)
    • CommonImagesFolderPath – путь к папке для хранения изображений
    • UseApplyFiltersButton – отображать кнопку «Применить фильтры» (true/false)
    • AutoSearchFiltersTimeout – задержка между выбором дополнительных фильтров и выводом результатов (в секундах)
    • UseFastSearchAlgoritm – использовать быстрый алгоритм поиска (true/false)
    • MaxSearchDatesCountClient – максимальное количество дат, которое будет обрабатываться в клиенте поиска
    • MaxDurationsCountClient – максимальное количество продолжительностей, которое будет обрабатываться в клиенте поиска
Пример

Вызов метода Settings

GET http://localhost:9000/TourSearchOwin/Settings

Возвращаемый результат метода Settings (в формате JSON)

{
   "ChildAgesSetting":    [
      1, 
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16
   ],
   "DurationSetting":    [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16,
      17,
      18,
      19,
      20
   ],
   "RoundServiceSetting": 2,
   "CacheReady": true,
   "EnableFiterTree": false,
   "EnableActualFilters": true,
   "CorrectLicense": true,
   "CorrectLicenseMessage": "0deb1f882da1ec6301c961780507a180",
   "IsCorrectUser": true,
   "IsShowCitizenAuthTourist": true,
   "IsShowFewCountPlaces": true,
   "IsShowBusTransferPlaces": true,
   "UseBusSeatChecks": 1,
   "UseTransferSeatChecks": 2,
   "IsShowFiltersByCity": true,
   "CheckRealCourses": true,
   "CommonImagesFolderPath": "\\\\server\\Icons",
   "UseApplyFiltersButton": false,
   "AutoSearchFiltersTimeout": 1,
   "UseFastSearchAlgoritm": true,
   "MaxSearchDatesCountClient": 10,
   "MaxDurationsCountClient": 14
}


Выгрузка списка валют (Currency)

Метод возвращает список используемых валют.

  • Формат запроса:
    • GET .../TourSearchOwin/Currency
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • Code – код валюты
    • Name – наименование валюты
    • IsMain – признак валюты «Главная»
    • IsNational – признак валюты «Национальная»
    • IsoCode – ISO код валюты
    • Key – идентификатор валюты
    • IsShowInSearch – признак показывать ли валюту в поиске
Пример

Вызов метода Currency

GET http://localhost:9000/TourSearchOwin/Currency

Возвращаемый результат метода Currency (в формате JSON)

[
      {
      "Code": "EU",
      "Name": "Euro",
      "IsMain": false,
      "IsNational": false,
      "IsoCode": "EUR",
      "Key": 2,
      "IsShowInSearch": true
   },
      {
      "Code": "рб",
      "Name": "Рубль",
      "IsMain": false,
      "IsNational": true,
      "IsoCode": "RUR",
      "Key": 14,
      "IsShowInSearch": true
   },
      {
      "Code": "$",
      "Name": "US Dollar",
      "IsMain": true,
      "IsNational": false,
      "IsoCode": "USD",
      "Key": 1,
      "IsShowInSearch": true
   }
]


Выгрузка квотируемых услуг системы (QuotedServices)

Метод производит выгрузку услуг с признаком «Квотируемая»

  • Формат запроса:
    • GET .../TourSearchOwin/QuotedServices
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • Key – идентификатор услуги
    • Code – код услуги
    • Name – наименование услуги (русский)
    • NameLat – наименование услуги (английский)
    • IsDuration – наличие продолжительности у услуги
    • IsCity – наличие города у услуги
    • IsSubCode1 – признак наличия SubCode1 у услуги (вид проживания у отеля, тариф у авиаперелета)
    • IsSubCode2 – признак наличия SubCode2 у услуги (тип питания у отеля)
    • Quoted – признак квотируемости услуги
    • CheckGeoPoint – наличие геоточек у услуги
    • IsRoute – признак маршрутной услуги
    • IsPartnerBasedOn – признак сопоставления партнера услуги в зависимости от отеля
    • Control – идентификатор статуса услуги
Пример

Вызов метода QuotedServices

GET http://localhost:9000/TourSearchOwin/QuotedServices

Возвращаемый результат метода QuotedServices (в формате JSON)

[
      {
      "Key": 1,
      "Code": "А_П",
      "Name": "Авиаперелет",
      "NameLat": "Flight",
      "IsDuration": false,
      "IsCity": true,
      "IsSubCode1": true,
      "IsSubCode2": false,
      "Quoted": true,
      "CheckGeoPoint": true,
      "IsRoute": true,
      "IsPartnerBasedOn": false,
      "Control": 1
   },
      {
      "Key": 3,
      "Code": "HOTEL",
      "Name": "Отель/Круиз",
      "NameLat": "Hotel/Cruise",
      "IsDuration": true,
      "IsCity": true,
      "IsSubCode1": true,
      "IsSubCode2": true,
      "Quoted": true,
      "CheckGeoPoint": true,
      "IsRoute": true,
      "IsPartnerBasedOn": false,
      "Control": 1
   }
]


Выгрузка городов отправления (twoway)

Метод производит выгрузку всех доступных городов отправления.

  • Формат запроса:
    • GET .../TourSearchOwin/individuals/avia/twoway/departures?
  • Принимаемые параметры:
    • нет принимаемых параметров
  • Возвращаемый результат:
    • Key – ключ города
    • Name – название города
Пример

Вызов метода

GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/departures?

Возвращаемый результат метода (в формате JSON)

[{
	"Key": 312,
	"Name": "Астрахань"
},
{
	"Key": 1,
	"Name": "Москва"
}]


Выгрузка списка стран прибытия (twoway)

Метод производит выгрузку всех доступных направлений.

  • Формат запроса:
    • GET .../TourSearchOwin/individuals/avia/twoway/arrivals/1/countries?
  • Принимаемые параметры ( * – обязательный):
  • Возвращаемый результат:
    • Name – название страны
    • Key – ключ страны
    • DestinationType – тип результата (всегда возвращается в JSON = 1, в xml = country)
Пример

Вызов метода

GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/arrivals/1/countries?

Возвращаемый результат метода (в формате JSON)

[{
	"Name": "Австрия",
	"Key": 90,
	"DestinationType": 1
},
{
	"Name": "Индия",
	"Key": 26,
	"DestinationType": 1
},
{
	"Name": "Финляндия",
	"Key": 64,
	"DestinationType": 1
}]


Выгрузка списка городов прибытия (twoway)

Метод возвращает список всех доступных городов по определенному городу отправления и стране прибытия.

  • Формат запроса:
    • GET .../TourSearchOwin/individuals/avia/twoway/arrivals/1/90?
  • Принимаемые параметры ( * – обязательный):
    • 1 * – идентификатор города отправления (полученный из метода .../TourSearchOwin/individuals/avia/twoway/departures?)
    • 90 * – идентификатор страны прибытия (полученный из метода .../TourSearchOwin/individuals/avia/twoway/arrivals/1/countries?)
  • Возвращаемый результат:
    • Key – идентификатор города
    • Name – название города
Пример

Вызов метода

GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/arrivals/1/90?

Возвращаемый результат метода (в формате JSON)

[{
	"Key": 35,
	"Name": "Вена"
},
{
	"Key": 440,
	"Name": "Зельден"
}]


Выгрузка актуальных дат вылета (twoway)

Метод производит выгрузку доступных дат вылета для поискового запроса.

  • Формат запроса:
    • GET .../TourSearchOwin/individuals/avia/twoway/departures/dates/1/35?
  • Принимаемые параметры ( * – обязательный):
    • 1 * – идентификатор города отправления (полученный из метода .../TourSearchOwin/individuals/avia/twoway/departures?)
    • 35 * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/individuals/avia/twoway/arrivals/1/90?)
  • Возвращаемый результат:
    • массив дат
Пример

Вызов метода

GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/departures/dates/1/35?

Возвращаемый результат метода (в формате JSON)

["28.08.2018",
"29.08.2018",
"30.08.2018",
"31.08.2018",
"01.09.2018",
"02.09.2018",]


Выгрузка актуальных дат возврата (twoway)

Метод производит выгрузку доступных дат возврата для поискового запроса.

  • Формат запроса:
    • GET .../TourSearchOwin/individuals/avia/twoway/departures/dates/1/35/20180830?
  • Принимаемые параметры ( * – обязательный):
    • 1 * – идентификатор города отправления (полученный из метода .../TourSearchOwin/individuals/avia/twoway/departures?)
    • 35 * – идентификатор города прибытия (полученный из метода .../TourSearchOwin/individuals/avia/twoway/arrivals/1/90?)
    • 20180830 * – дата вылета в формате YYYYMMDD(полученная из метода .../TourSearchOwin/individuals/avia/twoway/departures/dates/1/35?)
  • Возвращаемый результат:
    • массив дат
Пример

Вызов метода

GET http://localhost:9000/TourSearchOwin/individuals/avia/twoway/departures/dates/1/35/20180830?

Возвращаемый результат метода (в формате JSON)

["30.08.2018",
"31.08.2018",
"01.09.2018",
"02.09.2018",]