XML - результаты поиска/Поиск туров

Материал из TourClient - Руководство пользователя
Перейти к: навигация, поиск

Алгоритм организации поиска

  1. Приложение формирует поисковый запрос и обращается к сервису поиска туров.
  2. Сервис начинает новый поиск.
  3. Приложение ожидает ответа от сервиса.
  4. Сервис возвращает данные по запрошенной странице.
  5. Сервис продолжает поиск до нахождения всех данных для запроса.


Особенности работы

  • В случае если поиск с заданными параметрами уже происходит в текущий момент, сервис будет использовать его результаты. Если данные для запрашиваемой страницы уже получены, она будет возвращена сразу. Если нет, сервис подождет пока поступит необходимое количество данных.
  • В случае если поиск с заданными параметрами уже завершен, сервис сразу вернет результат из кеша поиска.
  • На данный момент время жизни кеша 15 минут.


Сервис Поиск туров

Работа с сервисом осуществляется путем отправки POST запросов на адрес ... .

Параметр request должен содержать xml запроса.

В результате сервис вернет ответ в формате xml.

Запрос к сервису

<?xml version="1.0" encoding="UTF-8"?>
<root>
<TourSearchRequest>
    <dataOffset>0</dataOffset>
    <dataLimit>50</dataLimit>
 
    <seatStatus>3</seatStatus>
 
    <cityId>1000</cityId>
    <countryId>12</countryId>
    <roomSizeId>14</roomSizeId>
 
    <adults>2</adults>
    <children>0</children>
 
    <childAge1>0</childAge1>
    <childAge2>0</childAge2>
 
    <durationFrom>7</durationFrom>
    <durationTill>14</durationTill>
 
    <departureFrom>2014-07-25</departureFrom>
    <departureTill>2014-08-10</departureTill>
 
    <ticket>1</ticket>
 
    <priceFrom>500</priceFrom>
    <priceTill>50000</priceTill>
    <currency>3</currency>
 
    <operatorIds>
        <id>111</id>
        <id>222</id>
        <id>333</id>
    </operatorIds>
 
    <resortIds>
        <id>111</id>
        <id>222</id>
        <id>333</id>
    </resortIds>
 
    <resortPlaceIds>
        <id>111</id>
        <id>222</id>
        <id>333</id>
    </resortPlaceIds>
 
    <allocCatId>7</allocCatId>
    <allocRate>3.56</allocRate>
 
    <allocationIds>
        <id>111</id>
        <id>222</id>
        <id>333</id>
    </allocationIds>
 
    <mealIds>
        <id>111</id>
        <id>222</id>
        <id>333</id>
    </mealIds>
 
    <roomViewIds>
        <id>111</id>
        <id>222</id>
        <id>333</id>
    </roomViewIds>
 
    <roomTypeIds>
        <id>111</id>
        <id>222</id>
        <id>333</id>
    </roomTypeIds>
 
</TourSearchRequest>
<TourExtraEntities>
    <entity>OnlineSeatsState</entity>
    <entity>ExtraCharges</entity>
    <entity>City</entity>
    <entity>Country</entity>
    <entity>RoomSize</entity>
    <entity>Resort</entity>
    <entity>ResortPlace</entity>
    <entity>Allocation</entity>
    <entity>AllocCat</entity>
    <entity>Meal</entity>
    <entity>RoomType</entity>
    <entity>RoomView</entity>
</TourExtraEntities>
 
</root>

Ответ сервиса

Сервис возвращает ответ, содержащий массив объектов Тур (Tours) и объект Статус поиска (SearchStatus)

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <Tours>
        <Tour>...</Tour>
        <Tour>...</Tour>
        <Tour>...</Tour>
        ...
    </Tours>
    <SearchStatus>
       ...
    </SearchStatus>
</root>


Сервис Статус поиска

Работа с сервисом осуществляется путем отправки POST запросов на адрес ... .

Параметр request должен содержать xml запроса.

В результате сервис вернет ответ в формате xml.


Запрос к сервису

<?xml version="1.0" encoding="UTF-8"?>
<root>
<SearchStatusRequest>
    <key>df1b446a09606710d301153157fc862b</key> <!-- Уникальный ключ поискового запроса. -->
</SearchStatusRequest>
</root>

Ответ сервиса

Сервис возвращает ответ объект Статус поиска (SearchStatus)

Сервис возвращает ответ, содержащий массив объектов Тур (Tours) и объект Статус поиска (SearchStatus)

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <SearchStatus>
       ...
    </SearchStatus>
</root>


Описание объектов

Объект Статус поиска

<SearchStatus>
    <key>df1b446a09606710d301153157fc862b</key> <!-- Уникальный ключ поискового запроса. -->
    <inProgress>true</inProgress>  <!-- Параметр показывающий завершен ли поиск. -->
    <toursCount>450</toursCount>   <!-- Количество найденных (на момент получения статуса) туров в рамках данного поискового запроса. -->
    <exactCount>false</exactCount> <!-- Параметр показывающий что количество найденных туров окончательное, и при изменении параметров offset и limit изменяться не будет. -->
</SearchStatus>

Объект Тур

<Tour>
    <id>3145968261@511</id>           <!-- Уникальный идентификатор тура. -->
    <operatorId>308</operatorId>      <!-- Идентификатор туроператора. -->
 
    <cityId>1000</cityId>             <!-- Идентификатор города вылета. -->
    <countryId>12</countryId>         <!-- Идентификатор страны прилета. -->
    <roomSizeId>14</roomSizeId>       <!-- Идентификатор размещения (DBL,SNGL,TRL...). -->
 
    <departure>2014-07-10</departure>   <!-- Дата вылета. -->
    <arrival>2014-07-17</arrival>       <!-- Дата прилета. -->
    <duration>7</duration>              <!-- Продолжительность (количество ночей в отеле). -->
    <ticket>1</ticket>                  <!-- Дата прилета. -->
                                        <!-- 0 - без билета, 1 - авиаперелет, 2 - поезд, 3 - автобус, 4 - паром, 5 - автомобиль -->
    <directFlight>false</directFlight>  <!-- Прямой перелет. true - известно что перелет прямой. -->
                                        <!-- false - известно что перелет с пересадкой. Если не опеределен, то не известно. -->
 
    <price>18000</price>                <!-- Стоимость тура в валюте запроса. -->
    <currency>2</currency>              <!-- Идентификатор валюты запроса. -->
    <priceIsApprox>true</priceIsApprox> <!-- Параметр показывает что цена была пересчитана по кросс-курсу и может содержать погрешность пересчета -->
                                        <!-- (возникает в случаях когда валюта запроса отлична от валюты предложения и оператор не имеет кросскурса для пересчета). -->
 
    <priceOrig>500</priceOrig>          <!-- Стоимость тура в валюте туроператора. -->
    <currencyOrig>1</currencyOrig>      <!-- Стоимость тура в валюты туроператора. -->
                                        <!-- 1 - USD, 2 - EUR, 3 - RUB, 4 - UAH -->
 
    <prevPriceOrig>0</prevPriceOrig>    <!-- Предыдущая стоимость тура (в валюте туроператора). -->
    <priceDiffPercent>0</priceDiffPercent>  <!-- Стоимость тура в валюте запроса. -->
                                        <!-- 1 - USD, 2 - EUR, 3 - RUB, 4 - UAH -->
 
    <ch1From>0</ch1From>                <!-- Возраст 1-го ребенка ОТ (для размещений с детьми) -->
    <ch1Till>0</ch1Till>                <!-- Возраст 1-го ребенка ДО (для размещений с детьми) -->
    <ch2From>0</ch2From>                <!-- Возраст 2-го ребенка ОТ (для размещений с детьми) -->
    <ch2Till>0</ch2Till>                <!-- Возраст 2-го ребенка До (для размещений с детьми) -->
 
    <resortId>4</resortId>              <!-- Идентификатор курорта -->
    <resortPlaceId>2392</resortPlaceId> <!-- Идентификатор района -->
    <allocationId>12395</allocationId>  <!-- Идентификатор отеля -->
    <allocCatId>7</allocCatId>          <!-- Идентификатор категории отеля -->
    <mealId>2</mealId>                  <!-- Идентификатор питания -->
    <roomTypeId>4</roomTypeId>          <!-- Идентификатор типа номера -->
    <roomViewId>22</roomViewId>         <!-- Идентификатор вида из номера -->
 
    <isStop>false</isStop>                      <!-- Параметр показывающий что тур в стопе -->
    <isStopAllocation>false</isStopAllocation>  <!-- Параметр показывающий что тур в т.к. нет мест в отеле -->
    <isStopFlight>false</isStopFlight>          <!-- Параметр показывающий что тур в стопе т.к. нет мест на рейсы -->
 
    <!-- Дополнительные объекты, описывающие параметры тура. Присутствуют объекте тур опционарно, в зависимости от параметров входящего запроса -->
    <OnlineSeatsState>...</OnlineSeatsState>
 
    <ExtraCharges>...</ExtraCharges>
 
    <City>...</City>
 
    <Country>...</Country>
 
    <Operator>...</Operator>
 
    <RoomSize>...</RoomSize>
 
    <Resort>...</Resort>
 
    <ResortPlace>...</ResortPlace>
 
    <Allocation>...</Allocation>
 
    <AllocCat>...</AllocCat>
 
    <Meal>...</Meal>
 
    <RoomType>...</RoomType>
 
    <RoomView>...</RoomView>
 
</Tour>

Дополнительные объекты для объекта Тур

Наличие мест

<OnlineSeatsState>
    <allocation>1</allocation>
    <flightThereEco>1</flightThereEco>
    <flightBackEco>1</flightBackEco>
    <flightThereBus>2</flightThereBus>
    <flightBackBus>2</flightBackBus>
    <isStopFlight>false</isStopFlight>
    <isStopAllocation>false</isStopAllocation>
</OnlineSeatsState>

Доплаты

<ExtraCharges>
    <visa>
        <min>25</min>
        <max>25</max>
        <currency>1</currency>
    </visa>
    <feeFuel>
        <min>0</min>
        <max>40</max>
        <currency>1</currency>
    </feeFuel>
</ExtraCharges>

Город вылета

<City>
    <id>1000</id>
    <name>Москва</name>
</City>

Страна

<Country>
    <id>12</id>
    <name>Египет</name>
</Country>

Туроператор

<Operator>
    <id>308</id>
    <name>Troyka</name>
</Operator>

Размещение

<RoomSize>
    <id>14</id>
    <name>DBL</name>
    <description>2-е взрослых</description>
    <adults>2</adults>
    <children>0</children>
</RoomSize>

Курорт

<Resort>
    <id>4</id>
    <name>Хургада</name>
</Resort>

Район (курорта)

<ResortPlace>
    <id>2392</id>
    <name>Эль-Дахар</name>
</ResortPlace>

Отель

<Allocation>
    <id>12395</id>
    <name>Sea View</name>
    <rate>2.5</rate>
</Allocation>

Категория отеля

<AllocCat>
    <id>7</id>
    <name>2*</name>
</AllocCat>

Питание

<Meal>
    <id>1</id>
    <name>AI</name>
    <description>питание+напитки местного производства</description>
</Meal>

Тип номера

<RoomType>
    <id>13</id>
    <name>Executive</name>
    <description>улучш. номер "Executive"</description>
</RoomType>

Вид из номера

<RoomView>
    <id>22</id>
    <name>ROH</name>
    <description>без опред. вида из номера</description>
</RoomView>