Web-сервисы: Сервис бронирования — различия между версиями
[непроверенная версия] | [непроверенная версия] |
Achkasov (обсуждение | вклад) |
Achkasov (обсуждение | вклад) (→Описание формата данных) |
||
Строка 50: | Строка 50: | ||
==Подготовка данных== | ==Подготовка данных== | ||
===Описание формата данных=== | ===Описание формата данных=== | ||
− | ====CalculatedPriceInfo==== | + | ====CalculatedPriceInfo (Информация по расчитанной цене)==== |
− | + | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | |
+ | |||
+ | |- style="background-color:#F2F2F2" | ||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | <syntaxhighlight lang="cpp"> | ||
+ | /// <summary> | ||
/// Информация по рассчитанной цене | /// Информация по рассчитанной цене | ||
/// </summary> | /// </summary> | ||
Строка 76: | Строка 82: | ||
public int Nights { get; set; } | public int Nights { get; set; } | ||
} | } | ||
− | </ | + | </syntaxhighlight> |
+ | |} | ||
+ | |||
+ | ====ReservationParams (Параметры бронирования)==== | ||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | ||
+ | |||
+ | |- style="background-color:#F2F2F2" | ||
+ | |- style="vertical-align:text-top" | ||
− | = | + | | <syntaxhighlight lang="cpp"> |
− | + | /// <summary> | |
/// Параметры бронирования | /// Параметры бронирования | ||
/// </summary> | /// </summary> | ||
Строка 145: | Строка 158: | ||
/// </summary> | /// </summary> | ||
public int TouristsCount { get; set; } | public int TouristsCount { get; set; } | ||
− | }</ | + | }</syntaxhighlight> |
− | ====ReservationResult==== | + | |} |
− | + | ||
+ | ====ReservationResult (Результат расчета стоимости и бронирования комплекса услуг)==== | ||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | ||
+ | |||
+ | |- style="background-color:#F2F2F2" | ||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | <syntaxhighlight lang="cpp"> | ||
+ | /// <summary> | ||
/// Класс, описывающий результат расчета стоимости и бронирования комплекса услуг | /// Класс, описывающий результат расчета стоимости и бронирования комплекса услуг | ||
/// </summary> | /// </summary> | ||
Строка 181: | Строка 202: | ||
/// </summary> | /// </summary> | ||
public string ErrorMessage { get; set; } | public string ErrorMessage { get; set; } | ||
− | }</ | + | } |
+ | </syntaxhighlight> | ||
+ | |} | ||
+ | |||
+ | ====ReservationInfoParams (Параметры путевки)==== | ||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | ||
+ | |||
+ | |- style="background-color:#F2F2F2" | ||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | <syntaxhighlight lang="cpp"> | ||
+ | /// <summary> | ||
+ | /// Класс, описывающий параметры путевки | ||
+ | /// </summary> | ||
+ | public class ReservationInfoParams | ||
+ | { | ||
+ | /// <summary> | ||
+ | /// код путевки | ||
+ | /// </summary> | ||
+ | public string Code { get; set; } | ||
+ | |||
+ | /// <summary> | ||
+ | /// значение скидки | ||
+ | /// </summary> | ||
+ | public double Discount { get; set; } | ||
+ | |||
+ | /// <summary> | ||
+ | /// стоимость путевки | ||
+ | /// </summary> | ||
+ | public double Price { get; set; } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |} | ||
+ | |||
+ | ====ReservationInfo (Описание путевки, включая все услуги и туристов)==== | ||
+ | {| border="1" cellpadding="8" style="background-color:#F9F9F9; border:#AAAAAA; border-collapse:collapse" | ||
+ | |||
+ | |- style="background-color:#F2F2F2" | ||
+ | |- style="vertical-align:text-top" | ||
+ | |||
+ | | <syntaxhighlight lang="cpp"> | ||
+ | /// <summary> | ||
+ | /// Класс, описывающий путевку, включая все услуги путевки и туристов | ||
+ | /// </summary> | ||
+ | public class ReservationInfo | ||
+ | { | ||
+ | /// <summary> | ||
+ | /// Название города поездки | ||
+ | /// </summary> | ||
+ | public string CityName { get; set; } | ||
+ | /// <summary> | ||
+ | /// Код путевки | ||
+ | /// </summary> | ||
+ | public string Code { get; set; } | ||
+ | /// <summary> | ||
+ | /// Название страны поездки | ||
+ | /// </summary> | ||
+ | public string CountryName { get; set; } | ||
+ | /// <summary> | ||
+ | /// Скидка по путевке | ||
+ | /// </summary> | ||
+ | public double Discount { get; set; } | ||
+ | /// <summary> | ||
+ | /// Сумма скидки | ||
+ | /// </summary> | ||
+ | public double DiscountSum { get; set; } | ||
+ | /// <summary> | ||
+ | /// Обобщенный статус путевки | ||
+ | /// </summary> | ||
+ | public int? DogovorGlobalStatus { get; set; } | ||
+ | /// <summary> | ||
+ | /// Статус путевки | ||
+ | /// </summary> | ||
+ | public int DogovorStatus { get; set; } | ||
+ | /// <summary> | ||
+ | /// Кол-во дней поездки | ||
+ | /// </summary> | ||
+ | public int Ndays { get; set; } | ||
+ | /// <summary> | ||
+ | /// Количество туристов в путевке | ||
+ | /// </summary> | ||
+ | public int Nmen { get; set; } | ||
+ | /// <summary> | ||
+ | /// Цена без учета скидки | ||
+ | /// </summary> | ||
+ | public double Price { get; set; } | ||
+ | /// <summary> | ||
+ | /// Код валюты путевки | ||
+ | /// </summary> | ||
+ | public string RateCode { get; set; } | ||
+ | /// <summary> | ||
+ | /// Список всеу услуг в путевке | ||
+ | /// </summary> | ||
+ | public List<Service> ReservationServices { get; set; } | ||
+ | /// <summary> | ||
+ | /// Список всех туристов в путевке | ||
+ | /// </summary> | ||
+ | public List<Tourist> ReservationTourists { get; set; } | ||
+ | /// <summary> | ||
+ | /// Дата начала поездки | ||
+ | /// </summary> | ||
+ | public DateTime TurDate { get; set; } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |} | ||
+ | |||
===Сервис формирования списка услуг (ServiceProvider.asmx)=== | ===Сервис формирования списка услуг (ServiceProvider.asmx)=== | ||
====Метод получения информации по ключу цены==== | ====Метод получения информации по ключу цены==== |
Версия 13:43, 12 марта 2014
Версия статьи от 12-03-2014.
Содержание
- 1 Введение
- 2 Установка
- 3 Настройка
- 4 Подготовка данных
- 4.1 Описание формата данных
- 4.1.1 CalculatedPriceInfo (Информация по расчитанной цене)
- 4.1.2 ReservationParams (Параметры бронирования)
- 4.1.3 ReservationResult (Результат расчета стоимости и бронирования комплекса услуг)
- 4.1.4 ReservationInfoParams (Параметры путевки)
- 4.1.5 ReservationInfo (Описание путевки, включая все услуги и туристов)
- 4.2 Сервис формирования списка услуг (ServiceProvider.asmx)
- 4.3 Сервис бронирования (ReservationService.asmx)
- 4.1 Описание формата данных
- 5 Работа в системе
Введение
Данный модуль включает в себя два сервиса.
Сервис формирования списка услуг предназначен для получения следующей информации:
- Общие данные по ключу цены, такие как тур, продолжительности в днях и ночах, описание тура и условия бронирования;
- Список услуг, включенных в стоимость, по ключу цены;
- Список не рассчитанных услуг по ключу цены;
- Список вариантов какой-либо услуги.
Сервис бронирования предназначен для расчета стоимости совокупности услуг, с возможностью их последующего бронирования в базе данных.
Установка
Создание виртуального каталога
По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot
. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:
1 Зайти в Пуск (Start) → Настройки (Settings) → Панель управления (Control Panel) → Администрирование (Administrative Tools)
2 Диспетчер служб IIS
3 В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и выбрать Преобразовать в приложение
4 В открывшемся окне нужно нажать кнопку ОК
Подключение к базе данных ПК «Мастер-Тур»
В файле web.config
, расположенном в папке Reservation пропишите необходимые параметры подключения (красным цветом выделены значения, которые необходимо ввести).
Строка подключения к базе данных ПК «Мастер-Тур»:
<add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК «Мастер-Тур»;Initial Catalog=название базы данных ПК «Мастер-Тур;User ID=логин пользователя ПК «Мастер-Тур»;Password=пароль пользователя ПК «Мастер-Тур»"/>
Настройка
После установки Сервис бронирования доступен по адресу:
http://ip-адрес сервера Мастер-Веб/Reservation/ServiceProvider.asmx
(сервис формирования списка услуг);http://ip-адрес сервера Мастер-Веб/Reservation/ReservationService.asmx
(сервис бронирования).
Для корректной работы сервиса Reservation на релизах ПК «Мастер-Web» 2009.2.15 и выше нужно включить настройку customErrors в элементе <system.web>: <system.web> <customErrors mode="On"/> … </system.web>
Подготовка данных
Описание формата данных
CalculatedPriceInfo (Информация по расчитанной цене)
/// <summary>
/// Информация по рассчитанной цене
/// </summary>
public class CalculatedPriceInfo
{
/// <summary>
/// Прайс-лист
/// </summary>
public PriceTour PriceTour { get; set; }
/// <summary>
/// Дата тура
/// </summary>
public DateTime TourDate { get; set; }
/// <summary>
/// Количество дней по туру
/// </summary>
public int TotalDays { get; set; }
/// <summary>
/// Количество ночей по туру
/// </summary>
public int Nights { get; set; }
}
|
ReservationParams (Параметры бронирования)
/// <summary>
/// Параметры бронирования
/// </summary>
public class ReservationParams
{
/// <summary>
/// Идентификатор рекламного источника в БД
/// </summary>
public int AdvertiseID { get; set; }
/// <summary>
/// Идентификатор основания для скидки в БД
/// </summary>
public int CauseDiscountID { get; set; }
/// <summary>
/// Идентификатор страны тура
/// </summary>
public int CountryID { get; set; }
/// <summary>
/// Идентификатор пользователя, бронирующего тур
/// </summary>
public int DupUserID { get; set; }
/// <summary>
/// Имя оператора
/// </summary>
public string OperatorName { get; set; }
/// <summary>
/// Иденификатор ведущего менеджера по путевке
/// </summary>
public int OwnerID { get; set; }
/// <summary>
/// Идентификатор партнера, бронирующего тур
/// </summary>
public int PartnerID { get; set; }
/// <summary>
/// Валюта, в котрой производится бронирование
/// (если не задана, то вытягивается из тура)
/// </summary>
public string RateCode { get; set; }
/// <summary>
/// Бронируемая продолжительность
/// (если не задана, то высчитывается на основании услуг)
/// </summary>
public int ReserveDuration { get; set; }
/// <summary>
/// Дата тура
/// </summary>
public DateTime TourDate { get; set; }
/// <summary>
/// Идентификатор тура
/// </summary>
public int TourID { get; set; }
/// <summary>
/// Количество туристов по услугам
/// </summary>
public int TouristsCount { get; set; }
}
|
ReservationResult (Результат расчета стоимости и бронирования комплекса услуг)
/// <summary>
/// Класс, описывающий результат расчета стоимости и бронирования комплекса услуг
/// </summary>
public class ReservationResult
{
/// <summary>
/// Стоимость к оплате
/// </summary>
public double Brutto { get; set; }
/// <summary>
/// Процент скидки
/// </summary>
public double DiscountPercent { get; set; }
/// <summary>
/// Абсолютная величина скидки
/// </summary>
public double DiscountSumm { get; set; }
/// <summary>
/// Валюта
/// </summary>
public string Rate { get; set; }
/// <summary>
/// Код сформированной путевки
/// </summary>
public string ReservationCode { get; set; }
/// <summary>
/// Сообщение об ошибке
/// </summary>
public string ErrorMessage { get; set; }
}
|
ReservationInfoParams (Параметры путевки)
/// <summary>
/// Класс, описывающий параметры путевки
/// </summary>
public class ReservationInfoParams
{
/// <summary>
/// код путевки
/// </summary>
public string Code { get; set; }
/// <summary>
/// значение скидки
/// </summary>
public double Discount { get; set; }
/// <summary>
/// стоимость путевки
/// </summary>
public double Price { get; set; }
}
|
ReservationInfo (Описание путевки, включая все услуги и туристов)
/// <summary>
/// Класс, описывающий путевку, включая все услуги путевки и туристов
/// </summary>
public class ReservationInfo
{
/// <summary>
/// Название города поездки
/// </summary>
public string CityName { get; set; }
/// <summary>
/// Код путевки
/// </summary>
public string Code { get; set; }
/// <summary>
/// Название страны поездки
/// </summary>
public string CountryName { get; set; }
/// <summary>
/// Скидка по путевке
/// </summary>
public double Discount { get; set; }
/// <summary>
/// Сумма скидки
/// </summary>
public double DiscountSum { get; set; }
/// <summary>
/// Обобщенный статус путевки
/// </summary>
public int? DogovorGlobalStatus { get; set; }
/// <summary>
/// Статус путевки
/// </summary>
public int DogovorStatus { get; set; }
/// <summary>
/// Кол-во дней поездки
/// </summary>
public int Ndays { get; set; }
/// <summary>
/// Количество туристов в путевке
/// </summary>
public int Nmen { get; set; }
/// <summary>
/// Цена без учета скидки
/// </summary>
public double Price { get; set; }
/// <summary>
/// Код валюты путевки
/// </summary>
public string RateCode { get; set; }
/// <summary>
/// Список всеу услуг в путевке
/// </summary>
public List<Service> ReservationServices { get; set; }
/// <summary>
/// Список всех туристов в путевке
/// </summary>
public List<Tourist> ReservationTourists { get; set; }
/// <summary>
/// Дата начала поездки
/// </summary>
public DateTime TurDate { get; set; }
}
|
Сервис формирования списка услуг (ServiceProvider.asmx)
Метод получения информации по ключу цены
Сигнатура вызова
/// <summary> /// Получение информации о цене /// </summary> /// <param name="priceKey">Ключ цены</param> /// <param name="includeTourDescriptionText">Возвращать ли описание тура</param> /// <param name="includeBookingConditionsText">Возвращать ли условия бронирования по туру</param> /// <returns></returns> [WebMethod] public CalculatedPriceInfo GetCalculatedPriceInfo(int priceKey, bool includeTourDescriptionText, bool includeBookingConditionsText)
Метод получения рассчитанных услуг
Сигнатура вызова
/// <summary> /// Возвращает список рассчитанных услуг по ключу цены /// </summary> /// <param name="priceKey">Ключ обсчитанной цены</param> /// <returns></returns> [WebMethod] public List<Service> GetCalculatedServices(int priceKey)
Метод получения нерасчитанных услуг
Сигнатура вызова
/// <summary> /// Возвращает список нерассчитанных услуг по ключу цены /// </summary> /// <param name="priceKey">Ключ обсчитанной цены</param> /// <returns></returns> [WebMethod] public List<Service> GetNotCalculatedServices(int priceKey)
Метод получения вариантов услуги
Сигнатура вызова
/// <summary> /// Получение вариантов услуги /// </summary> /// <param name="service">Базовая услуга</param> /// <param name="dtDate">Дата заезда</param> /// <param name="duration">Продолжительность тура</param> /// <param name="allowHidden">Искать ли аналоги для скрытой услуги</param> /// <param name="allowHotelCodeChange">Можно ли поменять отель</param> /// <param name="CheckFlightPacket">Проверять ли пакет услуги</param> /// <param name="checkQuotes">Нужно ли делать проверку квот и удалять варианты без мест</param> /// <param name="nMen">Количество мест для проверки (если 0, то игнорируем byRoom и userKey</param> /// <param name="byRoom">Что проверяем. Места или комнаты</param> /// <param name="userKey">Агент</param> /// <param name="includeOriginal">Включать в результат базовую услугу</param> /// <param name="excludeCharterClasses">Исключить из подбора данные классы перелетов</param> /// <returns>Список услуг</returns> [WebMethod] public List<Service> GetServiceVariants(Megatec.Travel.Entities.Service service , DateTime tourDate , int tourDuration , bool allowHidden , bool allowHotelCodeChange , bool checkFlightPacket , bool checkQuotes , short nMen , bool byRoom , int userKey , bool includeOriginal , string excludeCharterClasses)
Сервис бронирования (ReservationService.asmx)
Метод расчета стоимости услуг
Сигнатура вызова
/// <summary> /// Метод расчета стоимости услуг /// </summary> /// <param name="services">Список услуг, по которым рассчитывается стоимость</param> /// <param name="parameters">Параметры расчета</param> /// <returns>Результат расчета стоимости</returns> public Megatec.Travel.Entities.ReservationResult CalculateReservation(List<Megatec.Travel.Entities.Service> services, ReservationParams parameters)
Метод бронирования услуг
Сигнатура вызова
/// <summary> /// Метод бронирования /// </summary> /// <param name="services">Список бронируемых услуг</param> /// <param name="tourists">Список туристов по путевке</param> /// <param name="parameters">Параметры бронирования</param> /// <returns></returns> [WebMethod] public Megatec.Travel.Entities.ReservationResult CreateReservation(List<Megatec.Travel.Entities.Service> services, List<Tourist> tourists, ReservationParams parameters)
Работа в системе
Работа с сервисом ServiceProvider.asmx
Метод получения информации по ключу цены
Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCalculatedPriceInfo xmlns="http://megatec.ru/"> <priceKey>5038425</priceKey> <includeTourDescriptionText>true</includeTourDescriptionText> <includeBookingConditionsText>true</includeBookingConditionsText> </GetCalculatedPriceInfo> </soap:Body> </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCalculatedPriceInfoResponse xmlns="http://megatec.ru/"> <GetCalculatedPriceInfoResult> <PriceTour> <ID>667</ID> <Name>Test Tour</Name> <Description /> <Country> <ID>90</ID> <Name>Австрия</Name> </Country> <Tour> <ID>542</ID> <Name>Test Tour</Name> <Description /> <BookingConditions /> </Tour> <Attribute>0</Attribute> <IncludedServices> Авиаперелет, Трансфер, Проживание(питание: Полупансион), Виза, Страховка, Доп. услуги</IncludedServices> </PriceTour> <TourDate>2010-07-02T00:00:00</TourDate> <TotalDays>11</TotalDays> <Nights>10</Nights> </GetCalculatedPriceInfoResult> </GetCalculatedPriceInfoResponse> </soap:Body> </soap:Envelope>
Метод получения рассчитанных услуг
Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCalculatedServices xmlns="http://megatec.ru/"> <priceKey>5038425</priceKey> </GetCalculatedServices> </soap:Body> </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCalculatedServicesResponse xmlns="http://megatec.ru/"> <GetCalculatedServicesResult> <Service xsi:type="HotelService"> <ID>-159</ID> <Name>Отель/Отель 5*+ (Арльберг), Single Standart Взрослый, Полупансион, ,</Name> <ExternalID>0</ExternalID> <StartDate>0001-01-01T00:00:00</StartDate> <EndDate>0001-01-01T00:00:00</EndDate> <StartDay>1</StartDay> <Duration>10</Duration> <Attribute>390</Attribute> <RateBrutto /> <Brutto>0</Brutto> <RateNetto /> <Netto>0</Netto> <NMen>1</NMen> <Partner> <ID>10760</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <PartnersGroupID>0</PartnersGroupID> <FullName /> <BossName /> <Fax /> <Address /> <Zip /> <Email /> <Phones /> </Partner> <Quota>NotChecked</Quota> <PacketID>250</PacketID> <City> <ID>275</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </City> <Country> <ID>90</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <IsIncoming>false</IsIncoming> </Country> <Tourists /> <DetailNetto /> <DetailBrutto /> <Notes /> <ServiceClass> <ID>3</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <ServiceClasses>None</ServiceClasses> </ServiceClass> <Hotel> <ID>3254</ID> <Name>Отель 5*+</Name> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <City> <ID>3254</ID> <Name>Арльберг</Name> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </City> </Hotel> <Room> <ID>1112</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <RoomType> <ID>1</ID> <Name>Single</Name> <NameLat /> <Code>SGL</Code> <CodeLat /> <Unicode /> <Description /> <PrintOrder>0</PrintOrder> <Places> <Main>1</Main> <Extra>1</Extra> </Places> </RoomType> <RoomCategory> <ID>20</ID> <Name>Standart</Name> <NameLat /> <Code>STD</Code> <CodeLat /> <Unicode /> <Description /> <PrintOrder>0</PrintOrder> </RoomCategory> <RoomAccomodation> <ID>320</ID> <Name>Взрослый</Name> <NameLat /> <Code>Взр.</Code> <CodeLat /> <Unicode /> <Description /> <Places> <Main>0</Main> <Extra>0</Extra> </Places> <IsMain>true</IsMain> <AgeRange AgeFrom="0" AgeTo="0" /> <AgeRange2 AgeFrom="0" AgeTo="0" /> <PerRoom>false</PerRoom> </RoomAccomodation> </Room> <Pansion> <ID>2</ID> <Name>Полупансион</Name> <NameLat /> <Code>HB</Code> <CodeLat /> <Unicode /> <Description /> </Pansion> </Service> </GetCalculatedServicesResult> </GetCalculatedServicesResponse> </soap:Body> </soap:Envelope>
Метод получения нерассчитанных услуг
Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetNotCalculatedServices xmlns="http://megatec.ru/"> <priceKey>5038425</priceKey> </GetNotCalculatedServices> </soap:Body> </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetNotCalculatedServicesResponse xmlns="http://megatec.ru/"> <GetNotCalculatedServicesResult> <Service xsi:type="ExcursionService"> <ID>-190</ID> <Name>Экскурсия::Арльберг/Кладбища Австрии, /Крысиная упряжка /</Name> <ExternalID>0</ExternalID> <StartDate>0001-01-01T00:00:00</StartDate> <EndDate>0001-01-01T00:00:00</EndDate> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>1</Attribute> <RateBrutto /> <Brutto>0</Brutto> <RateNetto /> <Netto>0</Netto> <NMen>0</NMen> <Partner> <ID>10760</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <PartnersGroupID>0</PartnersGroupID> <FullName /> <BossName /> <Fax /> <Address /> <Zip /> <Email /> <Phones /> </Partner> <Quota>NotChecked</Quota> <PacketID>250</PacketID> <City> <ID>275</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </City> <Country> <ID>90</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <IsIncoming>false</IsIncoming> </Country> <Tourists /> <DetailNetto /> <DetailBrutto /> <Notes /> <ServiceClass> <ID>4</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <ServiceClasses>None</ServiceClasses> </ServiceClass> <Excursion> <ID>292</ID> <Name>Кладбища Австрии</Name> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <PlaceFrom /> <PlaceTo /> <TimeBeg>0001-01-01T00:00:00</TimeBeg> <TimeEnd>0001-01-01T00:00:00</TimeEnd> </Excursion> <Transport> <ID>28</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </Transport> </Service> </GetNotCalculatedServicesResult> </GetNotCalculatedServicesResponse> </soap:Body> </soap:Envelope>
Метод получения вариантов услуги
Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetServiceVariants xmlns="http://megatec.ru/"> <service xsi:type="FlightService"> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>7</Attribute> <NMen>1</NMen> <Partner> <ID>10762</ID> </Partner> <PacketID>248</PacketID> <City> <ID>275</ID> </City> <Country> <ID>90</ID> </Country> <ServiceClass> <ID>1</ID> </ServiceClass> <Tariff> <ID>89</ID> </Tariff> <Flight> <ID>523</ID> </Flight> </service> <tourDate>2010-07-02T00:00:00</tourDate> <tourDuration>11</tourDuration> <allowHidden>false</allowHidden> <allowHotelCodeChange>false</allowHotelCodeChange> <checkFlightPacket>true</checkFlightPacket> <checkQuotes>true</checkQuotes> <nMen>1</nMen> <byRoom>false</byRoom> <userKey>1</userKey> <includeOriginal>true</includeOriginal> <excludeCharterClasses /> </GetServiceVariants> </soap:Body> </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetServiceVariantsResponse xmlns="http://megatec.ru/"> <GetServiceVariantsResult> <Service xsi:type="FlightService"> <ID>-209</ID> <Name>А_П::Москва/Арльберг/P74211, DME-AL, 12:12-15:15/Y Экономический класс/</Name> <ExternalID>0</ExternalID> <StartDate>0001-01-01T00:00:00</StartDate> <EndDate>0001-01-01T00:00:00</EndDate> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>7</Attribute> <RateBrutto /> <Brutto>0</Brutto> <RateNetto /> <Netto>0</Netto> <NMen>1</NMen> <Partner> <ID>10762</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <PartnersGroupID>0</PartnersGroupID> <FullName /> <BossName /> <Fax /> <Address /> <Zip /> <Email /> <Phones /> </Partner> <Quota>NotChecked</Quota> <PacketID>248</PacketID> <City> <ID>275</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </City> <Country> <ID>90</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <IsIncoming>false</IsIncoming> </Country> <Tourists /> <DetailNetto /> <DetailBrutto /> <Notes /> <ServiceClass> <ID>1</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <ServiceClasses>None</ServiceClasses> </ServiceClass> <Tariff> <ID>89</ID> <Name>Экономический класс</Name> <NameLat>Coach economy</NameLat> <Code /> <CodeLat /> <Unicode /> <Description /> <ServiceClassID>0</ServiceClassID> <Comment /> <CreateDate>0001-01-01T00:00:00</CreateDate> </Tariff> <Flight> <ID>525</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <CityFrom> <ID>1</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </CityFrom> <CityTo> <ID>275</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </CityTo> <AirportFrom> <ID>-212</ID> <Name /> <NameLat /> <Code>DME</Code> <CodeLat /> <Unicode /> <Description /> </AirportFrom> <AirportTo> <ID>-213</ID> <Name /> <NameLat /> <Code>AL</Code> <CodeLat /> <Unicode /> <Description /> </AirportTo> <Airline> <ID>-211</ID> <Name /> <NameLat /> <Code>P7</Code> <CodeLat /> <Unicode /> <Description /> </Airline> <Number>4211</Number> <TimeFrom>1899-01-01T12:12:00</TimeFrom> <TimeTo>1899-01-01T15:15:00</TimeTo> <DateFrom>0001-01-01T00:00:00</DateFrom> <DateTo>0001-01-01T00:00:00</DateTo> <IsArrival>false</IsArrival> <Available>No</Available> </Flight> </Service> <Service xsi:type="FlightService"> <ID>-245</ID> <Name>А_П::Москва/Арльберг/SU1875, SVO1-AL, 20:20-23:30/Y Экономический класс/</Name> <ExternalID>0</ExternalID> <StartDate>0001-01-01T00:00:00</StartDate> <EndDate>0001-01-01T00:00:00</EndDate> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>7</Attribute> <RateBrutto /> <Brutto>0</Brutto> <RateNetto /> <Netto>0</Netto> <NMen>1</NMen> <Partner> <ID>10762</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <PartnersGroupID>0</PartnersGroupID> <FullName /> <BossName /> <Fax /> <Address /> <Zip /> <Email /> <Phones /> </Partner> <Quota>NotChecked</Quota> <PacketID>248</PacketID> <City> <ID>275</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </City> <Country> <ID>90</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <IsIncoming>false</IsIncoming> </Country> <Tourists /> <DetailNetto /> <DetailBrutto /> <Notes /> <ServiceClass> <ID>1</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <ServiceClasses>None</ServiceClasses> </ServiceClass> <Tariff> <ID>89</ID> <Name>Экономический класс</Name> <NameLat>Coach economy</NameLat> <Code /> <CodeLat /> <Unicode /> <Description /> <ServiceClassID>0</ServiceClassID> <Comment /> <CreateDate>0001-01-01T00:00:00</CreateDate> </Tariff> <Flight> <ID>523</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> <CityFrom> <ID>1</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </CityFrom> <CityTo> <ID>275</ID> <Name /> <NameLat /> <Code /> <CodeLat /> <Unicode /> <Description /> </CityTo> <AirportFrom> <ID>-248</ID> <Name /> <NameLat /> <Code>SVO1</Code> <CodeLat /> <Unicode /> <Description /> </AirportFrom> <AirportTo> <ID>-249</ID> <Name /> <NameLat /> <Code>AL</Code> <CodeLat /> <Unicode /> <Description /> </AirportTo> <Airline> <ID>-247</ID> <Name /> <NameLat /> <Code>SU</Code> <CodeLat /> <Unicode /> <Description /> </Airline> <Number>1875</Number> <TimeFrom>1899-01-01T20:20:00</TimeFrom> <TimeTo>1899-01-01T23:30:00</TimeTo> <DateFrom>0001-01-01T00:00:00</DateFrom> <DateTo>0001-01-01T00:00:00</DateTo> <IsArrival>false</IsArrival> <Available>No</Available> </Flight> </Service> </GetServiceVariantsResult> </GetServiceVariantsResponse> </soap:Body> </soap:Envelope>
Работа с сервисом ReservationService.asmx
Метод расчета стоимости услуг
Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <CalculateReservation xmlns="http://megatec.ru/"> <services> <Service xsi:type="TransferService"> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>19975</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <PacketID>250</PacketID> <City> <ID>275</ID> </City> <Country> <ID>90</ID> </Country> <ServiceClass> <ID>2</ID> </ServiceClass> <Transfer> <ID>372</ID> </Transfer> <Transport> <ID>3</ID> </Transport> </Service> <Service xsi:type="VisaService"> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>131</Attribute> <Partner> <ID>10760</ID> </Partner> <PacketID>250</PacketID> <Country> <ID>90</ID> </Country> <ServiceClass> <ID>5</ID> </ServiceClass> <Visa> <ID>157</ID> </Visa> </Service> <Service xsi:type="InsuranceService"> <StartDay>1</StartDay> <Duration>11</Duration> <Attribute>151</Attribute> <NMen>1</NMen> <Partner> <ID>10763</ID> </Partner> <PacketID>250</PacketID> <Country> <ID>90</ID> </Country> <ServiceClass> <ID>6</ID> </ServiceClass> <AddDescription1> <ID>6</ID> </AddDescription1> <AddDescription2> <ID>0</ID> </AddDescription2> <Insurance> <ID>174</ID> </Insurance> </Service> <Service xsi:type="AdditionalService"> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>3</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <Quota>NotChecked</Quota> <PacketID>250</PacketID> <Country> <ID>90</ID> </Country> <ServiceClass> <ID>1032</ID> </ServiceClass> <Description> <ID>183</ID> </Description> <Description1> <ID>0</ID> </Description1> <Description2> <ID>0</ID> </Description2> </Service> <Service xsi:type="HotelService"> <StartDay>1</StartDay> <Duration>10</Duration> <Attribute>390</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <Quota>NotChecked</Quota> <PacketID>250</PacketID> <City> <ID>275</ID> </City> <Country> <ID>90</ID> </Country> <ServiceClass> <ID>3</ID> </ServiceClass> <Hotel> <ID>3254</ID> </Hotel> <Room> <ID>1112</ID> <RoomType> <ID>1</ID> </RoomType> <RoomCategory> <ID>20</ID> </RoomCategory> <RoomAccomodation> <ID>320</ID> </RoomAccomodation> </Room> <Pansion> <ID>2</ID> </Pansion> </Service> <Service xsi:type="TransferService"> <StartDay>8</StartDay> <Duration>0</Duration> <Attribute>19975</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <PacketID>250</PacketID> <City> <ID>275</ID> </City> <Country> <ID>90</ID> </Country> <ServiceClass> <ID>2</ID> </ServiceClass> <Transfer> <ID>373</ID> </Transfer> <Transport> <ID>3</ID> </Transport> </Service> <Service xsi:type="FlightService"> <StartDay>1</StartDay> <Duration>0</Duration> <NMen>2</NMen> <Partner> <ID>27990</ID> </Partner> <PacketID>19443</PacketID> <ServiceClass> <ID>1</ID> </ServiceClass> <Tariff> <ID>226</ID> </Tariff> <Flight> <ID>17234</ID> <CityFrom> <ID>30</ID> </CityFrom> <CityTo> <ID>65</ID> </CityTo> </Flight> </Service> <Service xsi:type="FlightService"> <StartDay>8</StartDay> <Duration>0</Duration> <Attribute>0</Attribute> <NMen>2</NMen> <Partner> <ID>27990</ID> </Partner> <PacketID>18920</PacketID> <ServiceClass> <ID>1</ID> </ServiceClass> <Tariff> <ID>226</ID> </Tariff> <Flight> <ID>17235</ID> <CityFrom> <ID>65</ID> </CityFrom> <CityTo> <ID>30</ID> </CityTo> </Flight> </Service> </services> <parameters> <AdvertiseID>-1</AdvertiseID> <CauseDiscountID>-1</CauseDiscountID> <CountryID>90</CountryID> <DupUserID>-1</DupUserID> <OperatorName /> <OwnerID>-1</OwnerID> <PartnerID>10764</PartnerID> <RateCode /> <ReserveDuration>-1</ReserveDuration> <TourDate>2010-07-02T00:00:00</TourDate> <TourID>542</TourID> <TouristsCount>1</TouristsCount> </parameters> </CalculateReservation> </soap:Body> </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <CalculateReservationResponse xmlns="http://megatec.ru/"> <CalculateReservationResult> <Brutto>1646</Brutto> <DiscountPercent>10</DiscountPercent> <DiscountSumm>172</DiscountSumm> <Rate>$</Rate> <ReservationCode /> <ErrorMessage /> </CalculateReservationResult> </CalculateReservationResponse> </soap:Body> </soap:Envelope>
Метод расчета бронирования услуг
Пример SOAP-запроса к сервису:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <CalculateReservation xmlns="http://megatec.ru/"> <services> <Service xsi:type="TransferService"> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>19975</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <PacketID>250</PacketID> <City> <ID>275</ID> </City> <Country> <ID>90</ID> </Country> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>2</ID> </ServiceClass> <Transfer> <ID>372</ID> </Transfer> <Transport> <ID>3</ID> </Transport> </Service> <Service xsi:type="VisaService"> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>131</Attribute> <Partner> <ID>10760</ID> </Partner> <PacketID>250</PacketID> <Country> <ID>90</ID> </Country> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>5</ID> </ServiceClass> <Visa> <ID>157</ID> </Visa> </Service> <Service xsi:type="InsuranceService"> <StartDay>1</StartDay> <Duration>11</Duration> <Attribute>151</Attribute> <NMen>1</NMen> <Partner> <ID>10763</ID> </Partner> <PacketID>250</PacketID> <Country> <ID>90</ID> </Country> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>6</ID> </ServiceClass> <AddDescription1> <ID>6</ID> </AddDescription1> <AddDescription2> <ID>0</ID> </AddDescription2> <Insurance> <ID>174</ID> </Insurance> </Service> <Service xsi:type="AdditionalService"> <StartDay>1</StartDay> <Duration>0</Duration> <Attribute>3</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <Quota>NotChecked</Quota> <PacketID>250</PacketID> <Country> <ID>90</ID> </Country> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>1032</ID> </ServiceClass> <Description> <ID>183</ID> </Description> <Description1> <ID>0</ID> </Description1> <Description2> <ID>0</ID> </Description2> </Service> <Service xsi:type="HotelService"> <StartDay>1</StartDay> <Duration>10</Duration> <Attribute>390</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <Quota>NotChecked</Quota> <PacketID>250</PacketID> <City> <ID>275</ID> </City> <Country> <ID>90</ID> </Country> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>3</ID> </ServiceClass> <Hotel> <ID>3254</ID> </Hotel> <Room> <ID>1112</ID> <RoomType> <ID>1</ID> </RoomType> <RoomCategory> <ID>20</ID> </RoomCategory> <RoomAccomodation> <ID>320</ID> </RoomAccomodation> </Room> <Pansion> <ID>2</ID> </Pansion> </Service> <Service xsi:type="TransferService"> <StartDay>8</StartDay> <Duration>0</Duration> <Attribute>19975</Attribute> <NMen>1</NMen> <Partner> <ID>10760</ID> </Partner> <PacketID>250</PacketID> <City> <ID>275</ID> </City> <Country> <ID>90</ID> </Country> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>2</ID> </ServiceClass> <Transfer> <ID>373</ID> </Transfer> <Transport> <ID>3</ID> </Transport> </Service> <Service xsi:type="FlightService"> <StartDay>1</StartDay> <Duration>0</Duration> <NMen>2</NMen> <Partner> <ID>27990</ID> </Partner> <PacketID>19443</PacketID> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>1</ID> </ServiceClass> <Tariff> <ID>226</ID> </Tariff> <Flight> <ID>17234</ID> <CityFrom> <ID>30</ID> </CityFrom> <CityTo> <ID>65</ID> </CityTo> </Flight> </Service> <Service xsi:type="FlightService"> <StartDay>8</StartDay> <Duration>0</Duration> <Attribute>0</Attribute> <NMen>2</NMen> <Partner> <ID>27990</ID> </Partner> <PacketID>18920</PacketID> <Tourists> <Tourist> <ID>0</ID> </Tourist> </Tourists> <ServiceClass> <ID>1</ID> </ServiceClass> <Tariff> <ID>226</ID> </Tariff> <Flight> <ID>17235</ID> <CityFrom> <ID>65</ID> </CityFrom> <CityTo> <ID>30</ID> </CityTo> </Flight> </Service> </services> <tourists> <Tourist Sex="Male" BirthDate="1980-02-01T00:00:00" AgeType="Adult" Citizen="" IsMain="true" ExternalID="0"> <ID>0</ID> <Name> <FirstName /> <SecondName /> <LastName /> </Name> <NameLat> <FirstName>SEMEN</FirstName> <SecondName /> <LastName>IVANOV</LastName> </NameLat> <LocalPassport IssuedBy="" Series="" Number="" IssueDate="0001-01-01T00:00:00" EndDate="0001-01-01T00:00:00" /> <ForeignPassport IssuedBy="" Series="1234" Number="234567" IssueDate="0001-01-01T00:00:00" EndDate="2020-06-05T00:00:00" /> </Tourist> </tourists> <parameters> <AdvertiseID>-1</AdvertiseID> <CauseDiscountID>-1</CauseDiscountID> <CountryID>90</CountryID> <DupUserID>-1</DupUserID> <OperatorName /> <OwnerID>-1</OwnerID> <PartnerID>10764</PartnerID> <RateCode /> <ReserveDuration>-1</ReserveDuration> <TourDate>2010-07-02T00:00:00</TourDate> <TourID>542</TourID> <TouristsCount>1</TouristsCount> </parameters> </CalculateReservation> </soap:Body> </soap:Envelope>
Пример SOAP-ответа сервиса:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <CreateReservationResponse xmlns="http://megatec.ru/"> <CreateReservationResult> <Brutto>1646</Brutto> <DiscountPercent>10</DiscountPercent> <DiscountSumm>172</DiscountSumm> <Rate>$</Rate> <ReservationCode>AT 0702007</ReservationCode> <ErrorMessage /> </CreateReservationResult> </CreateReservationResponse> </soap:Body> </soap:Envelope>