Вебсервисы "Натали Турс"


Версии


Дата Версия Изменения
21.05.10 1.1 1-я версия
28.01.11 1.8 Изменены названия элементов, добавлены новые элементы


Назначение вебсервисов

Веб-сервисы "Натали Турс" позволяют разработчикам программного обеспечения осуществить интеграцию с АСУ "Натали Турс" для поиска турпродуктов, а также создания, модификации и аннуляции заказов.


Авторизация

Для подключения к АСУ "Натали Турс" с помощью вебсервисов требуется авторизация: необходимо иметь действующие для доступа на "Агентскую страничку" сайта "Натали Турс" логин и пароль.


Ссылки на описание веб-сервисов

1. Веб-сервисы для поиска турпродуктов, получения данных из справочников (Страны, Регионы, Города, Авиакомпании и т.д.):

http://www.natalie-tours.ru/webservice/SearchTourWS

Описание этих веб-сервисов можно найти здесь: http://www.natalie-tours.ru/webservice/SearchTourWS?WSDL.

Более подробная информация: http://www.natalie-tours.ru/webservice/BookingWS/BookingWSDocRU.html.

2. Веб-сервисы для создания/модификации/аннуляции заказов и получения сопутствующей туристической информации:

http://www.natalie-tours.ru/webservice/BookingWS

Описание этих веб-сервисов можно найти здесь: http://www.natalie-tours.ru/webservice/BookingWS?WSDL.

Более подробная информация: http://www.natalie-tours.ru/webservice/BookingWS/BookingWSDocRU.html.

3. Некоторорые другие вебсервисы для получения данных из справочников: (география, Отели, Типы питания и размещения):

http://www.natalie-tours.ru/webservice/GeoService

Описание веб-сервисов: http://www.natalie-tours.ru/webservice/GeoService?WSDL.

 

Обзор XML-сообщений

Для использования вебсервисов необходимо создать запрос правильного вида. Все запросы имеют общую структуру: каждый состоит из объекта, содержащего логин и пароль (и иногда другие данные идентификационные данные агентства - ID точки продажи и договора), и элементов, содержащих данные запроса. Пример: элемент OrderInfoRequest состоит только из одного атрибута - “orderId”.

Ответ системы состоит из двух частей: “ResponseLog” и “XXXSpecificResponseData”. Атрибут “comment” элемента “ResponseLog” может содержать сообщения об ошибках илибыть пустым, если запрос и ответ отработаны системой правильно. Данные “ResponseLog” должны быть обработаны в первую очередь.

Пример кода на языке Java

Для генерации программного кода можно использовать Apach Axis (http://ws.apache.org/axis/ ). С помощью задач Apache Ant исходный код может быть создан непосредственно из WSDL:

http://www.natalie-tours.ru/webservice/BookingWS?WSDL

После генерации программного кода, Вы можете вызывать операции с помощью методов объекта org.tempuri.BookingWSPort. Например, после создания объектовWsLoginPassword и OederInfoRequest вы получаете объект OrderInfoResponse, содержащий информацию о заказе:

 
  BookingWSLocator bookingWSLocator = new BookingWSLocator();
  try{
    OrderInfoResponse resp =
      bookingWSLocator.getBookingWSPort().getOrderInfo(
        wsLoginPassword, OrderInfoRequest);
  catch(RemoteException e) { …... }
  catch(ServiceException e) {…....}
 

Пример задачи Apache Ant:



<project default="build">
<path id="lib.jars">
<fileset dir="lib">
<include name="**/*.jar"/>
fileset>
path>
<property name="result" location="_result"/>
<property name="tmp" location="tmp"/>
<property name="javasrc" location="${result}/javasrc"/>
<property name="classes" location="${tmp}/classes"/>
<target name="clean">
<delete dir="${result}"/>
<mkdir dir="${result}"/>
<delete dir="${tmp}"/>
<mkdir dir="${tmp}"/>
<delete dir="${javasrc}"/>
<mkdir dir="${javasrc}"/>
<delete dir="${classes}"/>
<mkdir dir="${classes}"/>
target>
<taskdef classname="org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask" name="wsdl2java" classpathref="lib.jars"/>
<target name="build_genarated_src" depends="clean">
<wsdl2java all="true" debug="false" deployscope="Request" helpergen="true" noimports="false" output="${javasrc}" serverside="false" skeletondeploy="false" testcase="true" timeout="0" typemappingversion="1.1" url="http://localhost:7001/webservice/BookingWS?WSDL" verbose="false" wrapArrays="false">
<classpath>
<fileset dir="lib">
<include name="**/*.jar"/>
fileset>
classpath>
wsdl2java>
target>
<target name="copy_test_src" depends="build_genarated_src">
<copydir src="srctest" dest="${javasrc}" includes="**/*.java"/>
target>
<target name="build" depends="copy_test_src">
<javac srcdir="${javasrc}" destdir="${classes}" classpathref="lib.jars"/>
<jar destfile="${result}/testapp.jar" basedir="${classes}"/>
target>
project>




Описание операций


Термины

  • Заказ – сущность в АСУ "Натали Турс", объединяющая несколько турпродуктов, забронированных одним агентством.
  • Турпродукт (продукт) – фиксированный набор туристских услуг. Каждая услуга в турпродукте может быть связана с одним или более клиентами (пассажирами). Клиенты заказа - объединение всех клиентов турпродуктов этого заказа.
  • Услуга – в АСУ "Натали Турс", туристская услуга, предоставляемая клиенту в составе турпродукта, и относящаяся к одному из следующих видов:
    • проживание;
    • круиз;
    • экскурсионный тур;
    • авиаперелет;
    • трансфер индивидуальный;
    • трансфер групповой;
    • экскурсия;
    • медицинская страховка;
    • страховка от невыезда;
    • виза;
    • прочая услуга.
  • Клиент (пассажир) – потребитель услуги.

Описание процесса бронирования

  • Выполнить операцию поиска турпродукта, который Вы планируете добавить в заказ: например, searchStandardTour;
  • Получить ответ в виде списка турпродуктов с ценами, имеющихся в наличии;
  • Создать заказ с помощью операции bookOrder, указав ID турпродукта (только одного) и данные клиентов этого турпродукта;
  • Получить ответ с ID и номером заказа, данными клиентов и турпродуктов.

Важное замечание : услуги могут быть забронированы исключительно в составе турпродуктов. Одна из услуг турпродуктов рассматривается как Основная, что позволяет искать турпродукт по ее свойствам. В настоящий момент, реализован поиск по атрибутам проживания, экскурсионного тура, круиза и авиаперелета.


Модификации заказа

В текущей версии поддерживаются следующие виды модификаций:

  • добавить турпродукт к заказу - с помощью операции addTourproduct;
  • изменить данные клиента - с помощью операции updatePassenger;

Аннуляция заказа

Можно аннулировать один турпродукт с помощью операции cancelOneTourproduct, или заказ целиком с помощью операции cancelOrder.


Таблица: Список возможных операций

Операция Название операции Тип операции Описание операции
1 Поиск авиаперелетов searchFlight Поиск турпродуктов Поиск тарифов турпродуктов, содержащих Авиаперелет в качестве Основной услуги (то есть, "Авиабилетов").
2 Поиск экскурсионных туров searchRoundtrip Поиск турпродуктов Поиск тарифов турпродуктов, содержащих Экскурсионный тур в качестве Основной услуги.
3 Поиск круизов searchCruise Поиск турпродуктов Поиск тарифов турпродуктов, содержащих Круиз в качестве Основной услуги.
4 Поиск туров searchStandardTour Поиск турпродуктов Поиск тарифов турпродуктов, содержащих Проживание в качестве Основной услуги.
5 Список договоров агентства getAgencyContracts Получение данных справочников Получение списка активных договоров авторизованного агентства: ссылка на договор необходима при создании заказа
6 Список точек продах агентства getAgencyUnits Получение данных справочников Получение списка точек продаж авторизованного агентства: указание точки продажи необходимо при создании заказа
7 Список авиакомпаний getAirCompanes Получение данных справочников Позволяет получить список авиаперевозчиков
8 Список аэропортов getAirportByID Получение данных справочников Получение списка имеющихся в базе аэропортов
9 Типы размещения getAllAccomdTypes Получение данных справочников Получение возможных типов размещения в гостиничном номере. Тип размещения содержит информацию о количестве клиентов в номере и их возрастных группах, нампример: 2 взрослых и ребенок от 2 до 4 лет включительно - "DBL + CHD (2-4) + CHD (5-12)"
10 Возрастные группы getAllAgeTypes Получение данных справочников Список всех возможных возрастных групп. Возрастная группа содержит информацию о типе (Взрослый или Ребенок) и возможном диапазоне возрастов, например: "CHD(2-12)"
11 Типы питания getAllBoardTypes Получение данных справочников Запрос возможных типов питания
12 Список городов getAllCities Получение данных справочников Получение списка городов
13 Список стран getAllCountries Получение данных справочников Список стран, в которых предлагаются туристские услуги
14 Список круизных компаний getAllCruiseCompanies Получение данных справочников Позволяет получить список компаний, выполняющих круизы
15 Список названий круизов getAllCruiseNames Получение данных справочников Позволяет получить список названий круизов (маршрутов), например, "Европейский Гранд Вояж" и т.д. Данные круиза включают в себя маршрут и название круизного судна.
16 Список типов валют getAllCurrencies Получение данных справочников Список валют, в которых может быть представлена цена турпродукта
17 Список регионов getAllRegions Получение данных справочников Список регионов (используется фиксированная структура описания географии: Страна-Регион-Город)
18 Список типов номеров getAllRoomTypes Получение данных справочников Полный список типов номеров: единый классификатор для всех отелей (например, Standard, Suite, Family и т.д.)
19 Список круизных судов getAllShips Получение данных справочников Получение списка круизных судов, выполняющих круизы
20 Типы тарифов турпродуктов getTariffTypes Получение данных справочников Получение списка тарифов туродуктов. Тариф относится к одному из видов тарифов (Базовый, Pronto, Last Minute, Специальный) и описывает условия бронирования, оплаты (возможные даты бронирования и крайний срок оплаты) и аннуляции (условия применения и размер неустойки в процентах от стоимости турпродукта)
21 Получить информацию о заказе getOrderInfo Чтение Позволяет получить информацию о турпродуктах, включенных в заказ, их услугах и клиентах.
22 Добавить турпродукт addTourproduct Модификация Добавляет турпродукт в существующий заказ
23 Создание заказа bookOrder Бронирование Создает заказ. Для сохранения заказа необходимы данные учетной записи, точки продаж и договора с агентством. Список точек продаж и номеров договоров агентства можно получить с помощью операций operations getAgencyContracts и getAgencyUnits
24 Удалить заказ cancelOrder Аннуляция Удаляет заказ и все его составляющие
25 Удалить турпродукт в заказе cancelOneTourProduct Аннуляция Удаляет турпродукт в заказе (созданный с помощью операции bookOrder). Данные турпродуктов заказа можно получить с помощью операции “getOrderInfo”.
26 Обновление данных клиентов updatePassenger Модификация Позволяет изменить данные клиентов до момента создания визовой анкеты


Примеры XML-запросов



Поиск авиаперелетов (SearchFlight)


Запрос:








YOUR_LOGIN
your_password


101
?
19.03.2011
12.03.2011
2
?
?
?
12796
?
?
?
541
?
?
?
?
?
?
?






Примечания:


  • ageTypeID: возрастная группа, см. запрос getAllAgeTypes Request (например, 101 для взрослых, 163 для младенцев (возраст до одного года включительно), 111 для детей (возраст от 2 до 11 полных лет)
  • airCompanyCode: код авиакомпании, можно получить с помощью getAirCompanies
  • airDateFromDestination: дата вылета "обратно"
  • airDateFromOrigin: дата вылета "туда"
  • airType: Тип перелета - В один конец (One Way, "1") или Туда и обратно ("2"). Данный параметр рекомендуется использовать для поиска перелетов, состоящих из одного или двух сегментов
  • classofSeatsGroupTypeID: класс обслуживания: бизнес (Id: 102), комфорт (Id: 124), первый (Id: 103), премиум (Id: 144), экономический (Id: 101)
  • classofSeatsTypeID: класс бронирования, см. запрос getAllClassOfSeats
  • destinationAirPortID: ID аэропорта назначения, см. запрос getAirportByID
  • destinationCityID: ID города назначения, см. запрос getAllAirportCities
  • flightNumber: номер рейса
  • logMessage
  • originAirPortID (ID аэропорта вылета, см. запрос getAirportByID)
  • originCityID (ID города вылета, см. запрос getAllAirportCities)
  • priceMax: цена, макс.
  • priceMin: цена, мин.
  • rowNumFrom: номер первой строки, выводимой в результатах поиска (начиная с 0)
  • rowNumTo: номер последней строки, выводимой в результатах поиска (начиная с 1)
  • sortType: не используется
  • tarifTypeID: тип тарифа турпродукта, см. запрос getTariffTypes.
  • tourProductTemplID: в данной версии не используется

Ответ:










7




UN
U
2

3085
Зальцбург
327

840
Москва




UN
U
2

840
Москва
328

3085
Зальцбург


370.0 EUR
A1
A
5410938823
216
200911212



num rows=1
90







Поиск туров (SearchStandardTour)


Запрос:








YOUR_LOGIN
your_password


122



0
0


5
541
7
7
?
87
29412
?
2
0
?
?
?
?
?
?
15.05.2011
122
214






Примечания:


  • boardType: тип питания, см. запрос getAllBoardTypes
  • countryID: ID страны, можно получить запросом getAllCountries
  • departureCityId: ID города вылета, можно получить запросом getAllCities
  • durationMax: длительность, до...
  • durationMin: длительность, от...
  • hotelCategoryID: категория отеля: любой ="", "3*"="3", "3*sup"="4", "4*"="5", "5*"="7"
  • hotelCityID: ID города отеля - 87 для города Calella, Испания (см. запрос getAllCities)
  • hotelID: ID отеля - 29412 для отеля Calella Palace 4*, Calella, Испания
  • logMessage
  • numberOfAdults: количество взрослых
  • numberOfChildren: количество детей (в том числе, младенцев)
  • priceMax: цена, до...
  • priceMin: цена, от...
  • regionID: ID региона, см. запрос getAllRegions
  • rowNumFrom: выводить строки с...
  • rowNumTo: выводить строки по...
  • sortType: не используется
  • startDate: дата начала тура
  • tarifTypeID: ID типа тарифа - 122 для тарифа "Pronto" (см. запрос getTariffTypes)
  • tourProductTemplateID: 214 для туров "Пляжи мира Стандарт", 219 для туров "Пляжи мира Только отель", 218 для туров "Города и страны Сити-Брейк", 221 для туров "Города и страны Только отель", 237 для туров "Горные лыжи Стандарт", 238 для туров для туров "Горные лыжи Только отель"

Ответ:







num rows=2
1426



Испания (Calella)
87
122
1109.0 EUR
7
Calella Palace 4*
29412
101298739 ,
standard
1
P188
5344075973
5344075973

1530
101298739
DBL
102


Испания (Calella)
87
122
1227.0 EUR
7
Calella Palace 4*
29412
145652106 ,
standard PV
165
P188
5344282943
5344282943

1530
145652106
DBL
102









Создание заказа (bookOrder)


Запрос:






xmlns:xs="http://www.w3.org/2000/XMLSchema-instance">
28877
494858
YOUR_LOGIN
your_password

xmlns:xs="http://www.w3.org/2000/XMLSchema-instance">



1980-10-25T10:10:00
TEST
2015-10-25T10:10:00
22
TEST
?
?
-1
2



201868745
5206880096






Примечания:


  • idAgencyUnit: ID точки продаж, см. запрос getAgencyUnits
  • idContract: ID договора с агентством, см. запрос getAgencyContracts
  • birthday: дата рождения клиента ( обязательный параметр, формат дата-время)
  • firstname: имя пассажира (лат., обязательный параметр)
  • foreignPassportExpiryDate: дата окончания действия загранпаспорта (обязательный параметр, формат дата-время)
  • foreingPaspNum: номер загранпаспорта (обязательный параметр)
  • lastname: фамилия пассажира (обязательный параметр)
  • lastnameRU: фамилия пассажира кириллицей(необязательный параметр)
  • nameRU: имя пассажира кириллицей (необязательный параметр)
  • passengerID: не используется
  • passengerType: 1 для ребенка, 2 для мужчины, 3 для женщины, 4 для младенца (обязательный параметр)
  • id: ID турпродукта (tourProductID), полученный в ответе на запрос о поиске турпродукта (например, searchFlight)
  • idTariff: ID тарифа, полученный в ответе на запрос о наличии мест (например, searchFlight)

Ответ:



xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">





2011-02-22T00:00:00+03:00
84492758
6E-84530831


1980-10-25T00:00:00+03:00
TEST
2015-10-25T00:00:00+04:00
22
TEST
?
?
2831343
2




2831343
84492760


2011-03-19T00:00:00+03:00


0.0

0
0
6175
0
Дополнительная услуга прочая сбор





0.0

0
0
84492760
0
Авиаперелет
2011-03-19T00:00:00+03:00




84492759
1323





0







Аннуляция заказа (cancelOrder)


Запрос:


xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">



xmlns:xs="http://www.w3.org/2000/XMLSchema-instance">
YOUR_LOGIN
your_password

xmlns:java="java:com.nt.slib.ws.wssearch.booking.protocol.cancellation" xmlns:xs="http://www.w3.org/2000/XMLSchema-instance">
84492758




Ответ:


xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">




84492758


0






Контакты

ООО "Натали Турс"
Садовая-Кудринская, 25, 123001 Москва, Россия
E-mail:
Телефон: (+7)495 785 37 11