Вебсервисы "Натали Турс"
Версии
Дата |
Версия |
Изменения |
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
|