Открыть главное меню

Изменения

Агентский API Отели

17 917 байт добавлено, 10:02, 7 октября 2013
Бронирование
=== Бронирование ===
 
==== Запрос ====
 
Схема запроса позволяет указывать несколько услуг для бронирования сразу. Это было сделано с заделом на возможность расширения функциональности в будущем при сохранении совместимости.
 
Сейчас же необходимо указывать только 1 услугу-отель (элемент Item) в запросе на бронирование.
 
Для успешного запроса нужно указать:
 
#Услугу. В запросе не требуется перечислять все параметры из результатов поиска, достаточно указать уникальный ID результата.
#Информация о клиентах. Все клиенты перечисляются в отдельной ветке и нумеруются по порядку. Указатели (элементы с номером клиента), также добавляются в описание услуги.
#Заказчик. Указатель на одну персону.
 
WSDL (тестовый сервер): [http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Booking http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Booking]
<pre><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBooking">
<soapenv:Header/>
<soapenv:Body>
<ver:booking>
<RequestBin>
<Request>
<Booking>
<Items>
<!--Zero or more repetitions:-->
<Item>
<!--You have a CHOICE of the next 3 items at this level-->
<HotelBookData>
<CacheId>1872666</CacheId>
<CategoryId>1</CategoryId>
<Rooms>
<!--Zero or more repetitions:-->
<Room Id="2">
<Persons>
<!--Zero or more repetitions:-->
<Person Number="1"/>
<Person Number="2"/>
</Persons>
</Room>
<Room Id="1">
<Persons>
<!--Zero or more repetitions:-->
<Person Number="3"/>
</Persons>
</Room>
</Rooms>
</HotelBookData>
<Customer>
<Person Number="1"/>
</Customer>
</Item>
</Items>
<Persons>
<!--Zero or more repetitions:-->
<Person Number="1" Type="ADT">
<!--Optional:-->
<Lastname>IVANOV</Lastname>
<!--Optional:-->
<Name>IVAN</Name>
<!--Optional:-->
<Middlename>IVANOVICH</Middlename>
<!--Optional:-->
<DateOfBirth>1987-12-12</DateOfBirth>
<!--Optional:-->
<Phone>+79871231212</Phone>
<!--Optional:-->
<Email>m.rudenko@mute-lab.com</Email>
<!--Optional:-->
<Gender>MR</Gender>
<!--Optional:-->
<Document Type="P">
<Series>1811</Series>
<Number>912219</Number>
<!--Optional:-->
<IssueDate>2012-12-12</IssueDate>
<!--Optional:-->
<ExpiryDate>2014-12-12</ExpiryDate>
</Document>
</Person>
<Person Number="2" Type="CHD">
<!--Optional:-->
<Lastname>PETROV</Lastname>
<!--Optional:-->
<Name>IVAN</Name>
<!--Optional:-->
<Middlename>MIKHAILOVICH</Middlename>
<!--Optional:-->
<DateOfBirth>2008-12-12</DateOfBirth>
<!--Optional:-->
<Phone>+79871231212</Phone>
<!--Optional:-->
<Email>m.rudenko@mute-lab.com</Email>
<!--Optional:-->
<Gender>MR</Gender>
<!--Optional:-->
<Document Type="P">
<Series>1866</Series>
<Number>913319</Number>
<!--Optional:-->
<IssueDate>2012-12-12</IssueDate>
<!--Optional:-->
<ExpiryDate>2014-12-12</ExpiryDate>
</Document>
</Person>
<Person Number="3" Type="ADT">
<!--Optional:-->
<Lastname>SIDOROV</Lastname>
<!--Optional:-->
<Name>IVAN</Name>
<!--Optional:-->
<Middlename>SERGEEVICH</Middlename>
<!--Optional:-->
<DateOfBirth>1987-12-12</DateOfBirth>
<!--Optional:-->
<Phone>+79871231212</Phone>
<!--Optional:-->
<Email>m.rudenko@mute-lab.com</Email>
<!--Optional:-->
<Gender>MR</Gender>
<!--Optional:-->
<Document Type="P">
<Series>1866</Series>
<Number>913319</Number>
<!--Optional:-->
<IssueDate>2012-12-12</IssueDate>
<!--Optional:-->
<ExpiryDate>2014-12-12</ExpiryDate>
</Document>
</Person>
</Persons>
</Booking>
</Request>
<Source>
<ClientId>134</ClientId>
<APIKey>93632C10DA299034C03D742FB160C2D6</APIKey>
<Language>ru</Language>
<Currency>RUB</Currency>
</Source>
</RequestBin>
</ver:booking>
</soapenv:Body>
</soapenv:Envelope>
</pre>
 
Элемент Booking.
{| style="width: 800px" class="wikitable"
|-
! scope="col" width="200" | Элемент
! scope="col" width="300" | Описание
! scope="col" width="300" | Допустимые значения
|-
| Items
| Обязательный. Массив элементов Item.
| Элемент Item
|-
| Customer
| Обязательный. Элемент установки заказчика.
| &nbsp;
|-
| Persons
| Обязательный. Массив клиентов.
| &nbsp;
|}
 
Данные об услугах записываются в элементы &lt;Item&gt;.
 
Элемент Item.
{| style="width: 800px" class="wikitable"
|-
! scope="col" width="200" | Элемент
! scope="col" width="300" | Описание
! scope="col" width="300" | Допустимые значения
|-
| HotelBookData
| Обязательный. В зависимости от типа объекта бронирования. В данный момент возможно указать только данные для отеля.
| &nbsp;
|-
| Persons
| Необязательный. Привязка клиентов к услуге. Если не указаны, будут привязаны все из указанных в главном элементе Booking.
| [<Person Number=''"1"'' />]
|}
 
<u>Бронирование отеля.</u>
Для бронирования отеля необходимы следующие параметры:
# ID результата поиска - один отель
# ID выбранной категории этого отеля
# Распределение клиентов по комнатам.
 
Элемент HotelBookData.
{| style="width: 800px" class="wikitable"
|-
! scope="col" width="200" | Элемент
! scope="col" width="300" | Описание
! scope="col" width="300" | Допустимые значения
|-
| CacheId
| Обязательный. Идентификатор результата поиска для данного отеля в системе Nemo.
| Целое число
|-
| CategoryId
| Обязательный. Идентификатор категории.
| Целое число
|-
| Rooms
| Обязательный. Распределение клиентов по комнатам.
| Список элементов Room
|-
| Room
| Атрибут Id
Ид комнаты из результата поиска
 
Элемент Persons
| Целое число
|-
| Persons
| Обязательный.
Список людей
| Список элементов Person
|-
| Person
| Обязательный.
Атрибут Number
Номер пассажира из Booking ->Persons->Person->Number
|
Целое число
|}
 
<u>Информация о клиентах.</u>
Для успешного завершения бронирования нужно указать как минимум одного клиента. Максимальное число клиентов в текущей версии не ограничено.
 
Набор обязательных данных может меняться в зависимости от типов услуг в бронировании. Рекомендуемый набор обязательных параметров: Lastname, Name, DateOfBirth. Остальные обязательные параметры будут устанавливаться индивидуально при подключении к сервису.
 
Элемент Person.
{| style="width: 800px" class="wikitable"
|-
! scope="col" width="200" | Элемент
! scope="col" width="300" | Описание
! scope="col" width="300" | Допустимые значения
|-
| Атрибут Number
| Обязательный. Номер клиента, необходим для правильной привязки к услугам.
| Целое число
|-
| Type
| Обязательный.
Тип пассажира.
| Строка.
Возможные значения:
ADT
CLD
INF
|-
| Lastname
| Фамилия.
| Строка в произвольном формате.
|-
| Name
| Имя.
| Строка в произвольном формате.
|-
| Middlename
| Отчество.
| Строка в произвольном формате.
|-
| DateOfBirth
| Дата рождения.
| Формат гггг-мм-дд.
|-
| Phone
| Телефон.
Рекомендуемый формат:
+79871234567
| Строка
|-
| Email
| Электронный адрес.
| Строка
|-
| Gender
| Пол.
| MR - мужчина,
MS - женщина.
|-
| Document
| Документ
| Элемент Document
|}
 
Для некоторых услуг может потребоваться информация о документах.
 
Элемент Document.
{| style="width: 800px" class="wikitable"
|-
! scope="col" width="200" | Элемент
! scope="col" width="300" | Описание
! scope="col" width="300" | Допустимые значения
|-
| Атрибут Type
| Обязательный. Тип документа.
| P - загранпаспорт
C - внутренний гражданский паспорт
B - свидетельство о рождении
|-
| Series
| Необязательный. Серия документа. Можно указать слитно с номером в Number.
| Строка в произвольном формате
|-
| Number
| Обязательный. Номер документа.
| Строка в произвольном формате
|-
| IssueDate
| Необязательный. Дата выдачи документа.
| Формат гггг-мм-дд
|-
| ExpiryDate
| Необязательный. Дата истечения срока действия документа.
| Формат гггг-мм-дд
|}
 
 
==== Ответ ====
 
После выполнения запроса сразу поступит информация о бронировании. В первую очередь нужно внимательно проверить статусы &lt;Status&gt; всех услуг в бронировании. Если бронировалась услуга со статусом в результатах поиска RQ (по запросу), то статус скорее всего будет не равен «booked». Через некоторое время проверять реальный статус бука отправляя запрос на чтение данных о бронировании.
<pre><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DBooking" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:bookingResponse>
<ResponseBin>
<Response>
<Booking>
<Items>
<Item Id="386610">
<Hotel Id="1872666">
<Supplier>GTA</Supplier>
<CityId>22046</CityId>
<DateBegin>2013-10-15</DateBegin>
<DateEnd>2013-10-18</DateEnd>
<CacheId>1872666</CacheId>
<Name>ADLON KEMPINSKI</Name>
<Categories>
<Category Id="1">
<Rooms>
<Room Count="1" Id="1" ServiceId="1"/>
<Room Count="1" Id="2" ServiceId="2"/>
</Rooms>
<TotalPrice Currency="RUB">74733.84</TotalPrice>
</Category>
</Categories>
<Services>
<Service Id="1" Status="OK">
<Desc>Standard Twin</Desc>
<Meal>Full Breakfast</Meal>
<Price Currency="RUB">37366.92</Price>
</Service>
<Service Id="2" Status="OK">
<Desc>Standard Twin</Desc>
<Meal>Full Breakfast</Meal>
<Price Currency="RUB">37366.92</Price>
</Service>
</Services>
<Rooms>
<Room Id="1" Type="TWIN"/>
<Room Id="2" Type="SNGL"/>
</Rooms>
</Hotel>
<Type>HOTELS</Type>
<Status>waiting</Status>
<Prices>
<Price Currency="RUB">74733.84</Price>
<Charges Currency="RUB">0</Charges>
<Commission Currency="RUB">0</Commission>
<Penalty Currency="RUB">0</Penalty>
<TotalPrice Currency="RUB">74733.84</TotalPrice>
</Prices>
<Dates>
<BookingDate>2013-08-01 19:49:56</BookingDate>
<UpdateDate>2013-08-01 19:49:57</UpdateDate>
<CancelDate xsi:nil="true"/>
<PenaltyDate>2013-07-31 19:10:37</PenaltyDate>
<AutoCancelDate>2013-08-01 19:51:56</AutoCancelDate>
<ConfirmationLimit/>
</Dates>
<Statuses>
<PaymentStatus>1</PaymentStatus>
<DocumentStatus>1</DocumentStatus>
<DeliveryStatus>1</DeliveryStatus>
<InvoiceStatus>1</InvoiceStatus>
<ProblemStatus>1</ProblemStatus>
</Statuses>
<Customer>
<Person Number="1"/>
</Customer>
<Persons>
<Person Number="1"/>
<Person Number="2"/>
<Person Number="3"/>
</Persons>
</Item>
</Items>
<Persons>
<Person Number="1">
<Lastname>IVANOV</Lastname>
<Name>IVAN</Name>
<Middlename>IVANOVICH</Middlename>
<DateOfBirth xsi:nil="true"/>
<Phone>+79871231212</Phone>
<Email>m.rudenko@mute-lab.com</Email>
<Gender xsi:nil="true"/>
<Document Type="P">
<Series>1811</Series>
<Number>912219</Number>
<IssueDate>2012-12-12 00:00:00</IssueDate>
<ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
</Document>
</Person>
<Person Number="2">
<Lastname>PETROV</Lastname>
<Name>IVAN</Name>
<Middlename>MIKHAILOVICH</Middlename>
<DateOfBirth xsi:nil="true"/>
<Phone>+79871231212</Phone>
<Email>m.rudenko@mute-lab.com</Email>
<Gender xsi:nil="true"/>
<Document Type="P">
<Series>1866</Series>
<Number>913319</Number>
<IssueDate>2012-12-12 00:00:00</IssueDate>
<ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
</Document>
</Person>
<Person Number="3">
<Lastname>SIDOROV</Lastname>
<Name>IVAN</Name>
<Middlename>SERGEEVICH</Middlename>
<DateOfBirth xsi:nil="true"/>
<Phone>+79871231212</Phone>
<Email>m.rudenko@mute-lab.com</Email>
<Gender xsi:nil="true"/>
<Document Type="P">
<Series>1866</Series>
<Number>913319</Number>
<IssueDate>2012-12-12 00:00:00</IssueDate>
<ExpiryDate>2014-12-12 00:00:00</ExpiryDate>
</Document>
</Person>
</Persons>
</Booking>
</Response>
</ResponseBin>
</ns1:bookingResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</pre>
==== Ошибки ====
 
=== Выгрузка актуальных данных по заказу(ам) ===
==== Запрос ====
2804
правки
'