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

Изменения

Интеграция со сторонними системами АПИ

81 245 байт убрано, 14:43, 28 ноября 2018
м
API Авиабилетов
 
'''!!!СТАТЬЯ В РАЗРАБОТКЕ!!!'''
 
==API Авиабилетов==
Для авторизации Чтобы авторизоваться в системе, в запросе необходимо указать APIKey и ClientID. Эти данные можно узнать в разделе Администрирование - Веб-сервис. Авторизация. Там же можно включить/выключить нотификацию для действий сделанных , совершенных через АПИ. 
=== API Поиска авиабилетов ===
Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе '''«Администрирование»''' ⇨ '''«Веб-служба. Авторизация»'''.
 
После добавления пользователя, ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
Подробнее можно узнать в специальной статье [[Веб-служба поиска авиабилетов]]
Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета. [[Веб-служба выписки]]
=== === ==API Поиска отелей=='''Агентский API Отелей''' - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информации. Сервис предназначен для получения списка отелей, удовлетворяющих условиям запроса. В условия запроса входят: идентификатор города, где будет вестись поиск; дата заезда и дата выезда; информация о количестве людей и способе их размещения в комнатах. Так же указываются дополнительные необязательные поля фильтров. Подробнее можно узнать в нашей специальной статье [http://support.nemo.travel/ru/%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D0%B9_API_%D0%9E%D1%82%D0%B5%D0%BB%D0%B5%D0%B9#.D0.9F.D0.BE.D0.B8.D1.81.D0.BA АПИ Поиска отелей] Оплаты ==API бронирования, аннуляции, войдирования авиабилетов== ==API бронирования, отмены отелей==
==== Штрафы за аннуляцию ====Сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов. [[Агентские АПИ оплаты]]
Всегда в явном виде нужно указывать пользователю информацию о штрафах за аннуляцию до бронирования.=== API Дополнительных запросов авиабилетов ===
Штрафы получаются по каждой услуге отдельным запросом. Нужно указать тип услугиК дополнительных запросам относятся проверка на доступность, запрос на обновление заказа, идентификатор результата поиска и выбранную категориючтение тарифных правил.[[Дополнительные запросы АПИ авиабилетов]]
Внимание. Для отелей из Hotelbeds (Supplier=HOTELBEDS) штрафы до бронирования получить невозможно. '''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Penalty= Используемые параметры ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
===== Запрос =Параметры, используемые в запросах ====
<div class="mw-collapsible-content">
<syntaxhighlight langtable border="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;1"> <soapenv:Envelope xmlns:soapenvtr bgcolor="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DPenalty#CCCCCC"> <soapenv:Header/th> Имя элемента <soapenv:Body/th> <ver:penaltyth>Обязательный <RequestBin> <Request> <Penalty> <Item> <Type>HOTELS</Typeth> <CacheIdth>1867246Тип </CacheIdth> <CategoryId>1</CategoryIdth> </Item> </Penalty> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:penalty> Описание </soapenv:Bodyth> </soapenv:Envelopetr> </syntaxhighlighttr>
Элемент '''Item''' <td>BookFlight </td><td>да </td><td>сложный </td><td>Контейнер для тела запроса бронирования</td>{| style="width: 800px" class="wikitable" </tr>|- <tr>! scope <td>FlightId </td><td class="colcol1" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения>да </td><td>число</td><td >Id перелёта для которого будет производится бронирование(поиск тарифных правил, проверка доступности)</td>|- </tr> | Type <tr>| Обязательный. Тип объекта.| HOTELS|-| CacheId| Обязательный. Идентификатор результата поиска <td>CurrencyCode </td><td>нет</td><td>строка</td><td>Трёх буквенный код валюты (обязателен для комиссии в системе Nemo.| Целое число|-| CategoryId| Обязательный. Идентификатор категории.| Целое число|}валюте)</td>
Элемент '''Source''' </tr>{| style="width: 800px" class="wikitable" <tr>|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть <td>Agency </добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотретьtd><td>да </добавить в "Администрирование" ⇨ "Веб-служба. Авторизация".| Латинские буквы и цифры. Всего 32 символа.|}td><td>сложный </divtd><td>Информация об агентстве</divtd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">===== Ответ =====<div class="mw-collapsible-content"><syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DPenalty"tr> <SOAP-ENV:Bodytr> <ns1:penaltyResponsetd> <ResponseBin> <Response> <Penalty> <ItemDateBegin>2013-10-15 00:00:00Name </ItemDateBegintd> <CancelChargestd> <Charge> <DateFrom>2013-10-12 00:00:00да </DateFromtd> <DateTotd>2013-10-15 23:59:59строка </DateTotd> <Money Currency="RUB"td>74733.84Название агентства</Moneytd> </Chargetr> <Chargetr> <DateFromtd>2013-09-23 00:00:00Telephone </DateFromtd> <DateTotd>2013-10-11 00:00:00нет </DateTo> <Money Currency="RUB"td>67260.46</Moneytd> сложный </Charge> <Chargetd> <DateFromtd>2013-08-01 17:59:00</DateFrom> <DateTo>2013-09-22 00:00:00</DateTo> <Money Currency="RUB">12455.64</Money> </Charge> </CancelCharges> <ModifyCharges/> </Penalty> </Response> </ResponseBin> </ns1:penaltyResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>Контактный телефон агентства</syntaxhighlighttd>
Элемент '''Penalty''' </tr>{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание <tr>! scope="col" width="300" | Допустимые <td>Type</td><td>да </td><td>строка </td><td>Тип номера, возможные значения|: M -| ItemDateBegin| Обязательный. Дата начала услуги (дата заселения в отель).| Формат ггггмобильный, H -ммдомашний, B -дд чч:мм:сс|рабочий, A -агентство</td>| CancelCharges| Необязательный. Содержит информацию о штрафах за аннуляцию.| Элемент Charge|-| ModifyCharges| Необязательный. Содержит информацию о штрафах за модификацию. </tr>| Элемент Charge <tr>|} <td>PhoneNumber </td><td>да </td><td>строка </td><td>Номер телефона</td>
Штрафы разбиваются по временным интервалам. На каждом интервале указывается значение штрафа. </tr> <tr> <td>CountryAccessCode </td><td>нет </td><td>строка </td><td>Код страны</td> </tr> <tr> <td>AreaCityCode </td><td>нет </td><td>строка</td><td>Код региона/города</td>
Элемент '''Charge''' </tr>{| style="width: 800px" <tr> <td>Address</td><td>да </td><td>сложный </td><td class="wikitablecol3">Адрес агентства</td>|- </tr>! scope="col" width="200" | Элемент <tr>! scope <td>City</td><td>да </td><td class="colcol2" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| DateFrom| Обязательный. Дата>строка </время начала интервала.| Формат гггг-мм-дд чч:мм:сс|-| DateTo| Необязательный. Дата/время окончания интервала.| Формат гггг-мм-дд чч:мм:сс|-| Money| Обязательный. Сумма штрафа.| Вещественное число.Атрибут: Currency - код валюты.|}td></divtd>Город, в котором расположено агентство</divtd>
</tr>
<tr>
<td>StreetAddress </td><td>нет </td><td>сложный </td><td>Адрес агентства в городе (улица, дом, корпус, офис и т.д.)</td>
</tr>
<tr>
<td>PostalCode </td><td>нет </td><td>строка </td><td>Почтовый код, индекс.</td>
</tr>
<tr>
<td>CountryCode </td><td>нет </td><td>строка </td><td>Код страны (RU, UA, US и т.д.)</td>
</tr>
<tr>
<td>Travellers </td><td>да </td><td>сложный </td><td>Контейнер для информации о пассажирах (для которых будет производится поиск перелёта, бронирование)</td>
</tr> <tr> <td class="col0">Traveller </td><td class=== Бронирование ===="col1">да </td><div td class="toccolours mw-collapsible mw-collapsedcol2" style>сложный </td><td class="width:1000pxcol3">Информация о пассажире</td>===== Запрос ===== </tr> <div tr class="mw-collapsible-contentrow24">Схема запроса позволяет указывать несколько услуг для бронирования сразу. Это было сделано <td>Type</td><td>да</td><td>строка</td><td>Тип пассажира возможные значения: ADT - взрослые, CNN - дети, UNN - дети без сопровождения взрослых, INF - младенцы, INS - младенцы с заделом на возможность расширения функциональности в будущем при сохранении совместимости.местом</td>
Сейчас же необходимо указывать </tr> <tr class="row25"> <td class="col0">IsContact </td><td class="col1">нет</td><td class="col2">булевский </td><td class="col3">Индикатор показывающий является ли данное лицо контактным, возможные значение: true - пассажир является контактным лицом, false - не является. Контактное лицо может быть только 1 услугуодно, если среди пассажиров есть взрослые, то только кто-отель то из них может быть контактным лицом. Если не указано, то по умолчанию false.</td> </tr> <tr class="row26"> <td class="col0">LinkedTo </td><td class="col1">нет </td><td class="col2">целое число </td><td class="col3">Номер взрослого, к которому привязан младенец/ребёнок (элемент Itemпривязка ребёнка ко взрослому является опциональной) в запросе на бронирование.</td>
Для успешного запроса нужно указать: </tr>#Услугу. В запросе не требуется перечислять все параметры из результатов поиска, достаточно указать уникальный ID результата <tr class="row27"> <td class="col0">Num </td><td class="col1">да </td><td class="col2">число </td><td class="col3">Номер пассажира.</td> </tr> <tr class="row28"># <td class="col0">PreferedPlace </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Информация о клиентахпредпочитаемом месте. Все клиенты перечисляются в отдельной ветке Если указаны номер ряда и нумеруются по порядку. Указатели (элементы с номером клиента)номер места, также добавляются в описание услуги.#Заказчик. Указатель на одну персонуто параметры Smoking и Location игнорируются и могут быть не указаны.</td>
'''WSDL''' (тестовый сервер): http: </tr> <tr class="row29"> <td class="col0">SmokingAllowed </td><td class="col1">нет </td><td class="col2">булевский </tsttd><td class="col3">true - место для курящих, false - место для некурящих. По умолчанию false.nemo</td> </tr> <tr class="row30"> <td class="col0">Location </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Расположение места, возможные значения: W - у окна (Window); M - где-то в середине ряда (Middle); NPW - возле прохода (NearPassengerWay); NS -ibeнет предпочтения (NotSpecified).com</td> </tr> <tr class="row31"> <td class="col0">RowNumber</td><td class="col1">нет</td><td class="col2">строка </td><td class="col3">Номер ряда</td> </tr> <tr class="row32"> <td class="col0">PlaceNumber </wsdevtd><td class="col1">нет </wsdl.php?fortd><td class="col2">строка </td><td class=Booking"col3">Номер места</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><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/tr> <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 Numbertr class="1row33"/> <Person Numbertd class="2col0"/> </Persons> SegNumber </Room> <Room Id="1"> <Persons> <!--Zero or more repetitions:--td> <Person Numbertd class="3col1"/> </Persons> </Room> </Rooms> да </HotelBookData> <Customertd> <Person Numbertd class="1col2"/> </Customer> </Item> строка </Items> <Persons> <!--Zero or more repetitions:--td> <Person Number="1" Typetd class="ADTcol3"> <!--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:--td> <Gender>MR </Gender> <!--Optional:--tr> <Document Typetr class="Prow34"> <Series>1811</Series> <Number>912219</Number> <!--Optional:--> <IssueDate>2012-12-12</IssueDate> <!--Optional:--> <ExpiryDate>2014-12-12</ExpiryDate> </Document> </Person> <Person Number="2" Typetd class="CHDcol0"> <!--Optional:--> <Lastname>PETROV</Lastname> <!--Optional:--> <Name>IVANDocumentInfo </Nametd> <!--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 Typetd class="Pcol1"> <Series>1866да </Series> <Numbertd>913319</Number> <!--Optional:--> <IssueDate>2012-12-12</IssueDate> <!--Optional:--> <ExpiryDate>2014-12-12</ExpiryDate> </Document> </Person> <Person Number="3" Typetd class="ADTcol2"> <!--Optional:--> <Lastname>SIDOROV</Lastname> <!--Optional:--> <Name>IVAN</Name> <!--Optional:--> <Middlename>SERGEEVICH</Middlename> <!--Optional:--> <DateOfBirth>1987-12-12сложный </DateOfBirthtd> <!--Optional:--> <Phone>+79871231212</Phone> <!--Optional:--> <Email>m.rudenko@mute-lab.com</Email> <!--Optional:--> <Gender>MR</Gender> <!--Optional:--> <Document Typetd class="Pcol3"> <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></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:booking> </soapenv:Body></soapenv:Envelope>Паспортные данные</syntaxhighlighttd>
Элемент '''Booking''' </tr>{| style <tr class="width: 800pxrow35" > <td class="wikitablecol0"|-! scope>DocType </td><td class="col1">да </td><td class="colcol2" width>строка </td><td class="200col3" | Элемент>Тип документа, обязательный.</td>! scope </tr> <tr class="colrow36" width> <td class="300col0">DocNum </td><td class=" | Описание! scopecol1">да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения>Номер документа</td>|- </tr>| Items <tr class="row37">| Обязательный <td class="col0">CountryCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Страна выдачи, двух буквенный код(RU, US и т. Массив элементов Itemд.)</td>| Элемент Item </tr>|- <tr class="row38">| Customer| Обязательный <td class="col0">DocElapsedTime</td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Срок истечения срока действия паспорта в фирмате dd. Элемент установки заказчикаmm.| &nbsp;|-| Persons| Обязательныйyyyy (например 31. Массив клиентов12.| &nbsp;|}2012)</td>
Данные об услугах записываются в элементы &lt;Item&gt;. </tr> <tr class="row39"> <td class="col0">VisaInfo </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Информация о визе</td> </tr> <tr class="row40"> <td class="col0">Num </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Номер визы</td>
Элемент '''Item''' </tr>{| style <tr class="width: 800pxrow41" > <td class="wikitablecol0"|-! scope>IssueDate </td><td class="col1">да </td><td class="colcol2" width>строка </td><td class="200col3" | Элемент>Дата выдачи визы в формате dd.mm.yyyy</td> </tr>! scope <tr class="colrow42" width> <td class="300col0" | Описание! scope>IssueCountry </td><td class="colcol1" width>да </td><td class="300col2" | Допустимые значения|-| HotelBookData| Обязательный. В зависимости от типа объекта бронирования. В данный момент возможно указать только данные для отеля.| &nbsp;|-| Persons| Необязательный. Привязка клиентов к услуге. Если не указаны, будут привязаны все из указанных в главном элементе Booking.| [>строка </td><Person Numbertd class=''"1col3"'' >Страна выдачи визы</td>]|}
<u/tr> <tr class="row43"> <td class="col0">IssuePlace </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Бронирование отеля.Место выдачи визы</utd>Для бронирования отеля необходимы следующие параметры: </tr># ID результата поиска - один отель <tr class="row44"># ID выбранной категории этого отеля# Распределение клиентов по комнатам. <td class="col0">BirthCountry </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Страна рождения (IATA код страны)</td>
Элемент '''HotelBookData''' </tr>{| style <tr class="row45"> <td class="width: 800pxcol0" >BirthCity </td><td class="wikitablecol1"|-! scope>нет</td><td class="col2">строка</td><td class="colcol3" width>Город рождения (название)</td> </tr> <tr class="200row46" | Элемент>! scope <td class="colcol0" width>ArrAddress </td><td class="300col1" | Описание! scope>нет </td><td class="colcol2" width>сложный </td><td class="300col3" | Допустимые значения|-| CacheId| Обязательный. Идентификатор результата поиска >Адрес прибытия, для данного отеля въезжающих в системе Nemo.| Целое число|-| CategoryId| Обязательный. Идентификатор категории.| Целое число|-| Rooms| ОбязательныйСША (не граждан США) информация является обязательной. Распределение клиентов по комнатамЕсли она не заполняется при оформлении брони, то её всё равно придётся заполнять при посадке на самолёт.| Список элементов Room|-| Room| Атрибут IdИд комнаты из результата поиска</td>
Элемент Persons </tr>| Целое число <tr class="row47">|- <td class="col0">CountryCode </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">IATA код страны</td>| Persons </tr>| Обязательный. <tr class="row48">Список людей| Список элементов Person|-| Person| Обязательный.Атрибут NumberНомер пассажира из Booking - <td class="col0">State </td><td class="col1">да </td><td class="col2">строка </td>Persons-<td class="col3">Person-Штат или область въезда</td>Number| Целое число|}
<u/tr>Информация о клиентах. <tr class="row49"> <td class="col0">PostalCode </utd><td class="col1">да </td><td class="col2">строка </td><td class="col3">Почтовый код</td>Для успешного завершения бронирования нужно указать как минимум одного клиента. Максимальное число клиентов в текущей версии не ограничено. </tr> <tr class="row50"> <td class="col0">City </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Город</td>
Набор обязательных данных может меняться в зависимости от типов услуг в бронировании. Рекомендуемый набор обязательных параметров </tr> <tr class="row51"> <td class="col0">StreetAddress </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Адрес: Lastnameулица, номер дома, Nameквартиры и тп</td> </tr> <tr class="row52"> <td class="col0">DocStringFormats </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Список форматов строк паспортных данных, DateOfBirth. Остальные обязательные параметры которые будут устанавливаться индивидуально при подключении отправлены в дополнение к сервисустандартным.</td>
Элемент '''Person''' </tr>{| style="width: 800px" <tr class="wikitablerow53">|-! scope <td class="colcol0" width>DocStringFormat </td><td class="200col1" | Элемент! scope>да </td><td class="colcol2" width>строка </td><td class="300col3" | Описание! scope="col" width="300" | Допустимые >Формат данных, возможные значения|: DOCS -| Атрибут Number| Обязательный. Номер клиентастрока формата DOCS, необходим для правильной привязки к услугам.| Целое число|-| Type| Обязательный.Тип пассажира.| Строка.Возможные значения:ADTCLDINF|FOID -| Lastname| Фамилиястрока формата FOID.| Строка Установка данных в произвольном форматеDOCS как правило необходима для последующей выписки в BSP среде.|Установка FOID -| Name| Имявсреде ТКП.</td>| Строка в произвольном формате. </tr>|- <tr class="row54">| Middlename <td class="col0">PersonalInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Персональные данные пассажира</td>| Отчество. </tr>| Строка в произвольном формате. <tr class="row55">|-| <td class="col0">DateOfBirth| </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Дата рожденияв формате dd.| Формат гггг-мм-ддmm.|-| Phone| Телефонyyyy (например 31.Рекомендуемый формат:+79871234567| Строка|-| Email| Электронный адрес12.2000)</td>| Строка </tr>|- <tr class="row56">| Gender| Пол <td class="col0">Nationality </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Национальность/гражданство, двух буквенный код страны (RU, UA, US и т.| MR - мужчина,MS - женщинад.|-| Document| Документ| Элемент Document|})</td>
Для некоторых услуг может потребоваться информация о документах </tr> <tr class="row57"> <td class="col0">Gender </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Пол пассажира, обязательный, возможные значения: M - мужской(Male); F - женский(Female).</td> </tr> <tr class="row58"> <td class="col0">FirstName </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Имя пассажира</td>
Элемент '''Document''' </tr>{| style <tr class="row59"> <td class="col0">LastName </td><td class="col1">да </td><td class="width: 800pxcol2" >строка </td><td class="wikitablecol3">Фамилия пассажира</td>|- </tr> <tr class="row60">! scope <td class="colcol0" width>BMiddleName </td><td class="200col1" | Элемент>да </td><td class="col2">строка </td><td class="col3">Отчество пассажира</td>! scope </tr> <tr class="row61"> <td class="colcol0" width>Meal </td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые >Код типа питания, возможные значения|: NONE - отсутствует (по умолчанию); AVML - Азиатская вегетарианская кухня; BLML - Блюда щадящей диеты; CHML - Детское питание; CHPC -| Атрибут Type| Обязательный. Тип документа.| P Детский холодный завтрак; СНСС - загранпаспортC Детский горячий завтрак; CHHC - внутренний гражданский паспортB Детский ланч, ветчина и сыр; PBJS - свидетельство о рождении|Детский ланч, ореховое масло; CHMC -| Series| Необязательный. Серия документа. Можно указать слитно Детский обед макароны с номером в Number.| Строка в произвольном формате|сыром; DBML - Диабетическое питание; FPML - Фрукты; GFML - Питание без клейковины; HFML - Питание богатое клетчаткой; HNML - Индусская кухня; BBML - Питание для младенцев; KSML - Кошерная кухня; SMKB - Кошерный завтрак; SMKL - Кошерный ланч; SMKD - Кошерный обед; LPML - Малобелковое питание; LCML - Низкокалорийное питание; LFML - Низкохолестериновое питание; PRML - Низкопуриновое питание; LSML - Малосоленое питание; MOML - Мюсли; NLML - Безмолочные продукты; ORML - Восточная кухня; RVML - Сырые овощи; SFML - Морепродукты; SPML -| Number| Обязательный. Номер документа.| Строка в произвольном формате|Особое питание; VLML -| IssueDate| Необязательный. Дата выдачи документа.| Формат ггггВегетарианское, молоко и яйца; VGML -ммСтрого вегетарианское питание; VJML -дд|Джайнизское вегетарианское; VOML -Восточное вегетарианское питание.</td>| ExpiryDate </tr>| Необязательный. Дата истечения срока действия документа. <tr class="row62">| Формат гггг-мм-дд|} <td class="col0">LoyaltyCard </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Карточка часто летающего пассажира</td>
Элемент '''Source''' </tr> <tr class="row63">{| style <td class="col0">OpCode </td><td class="width: 800pxcol1" >да </td><td class="wikitablecol2"|-! scope>строка </td><td class="colcol3" width>IATA код компании авиаперевозчика</td> </tr> <tr class="200row64" | Элемент>! scope <td class="colcol0" width>Number </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения>Номер карточки</td>|- </tr>| ClientID <tr class="row65">| Обязательный. ID клиента в системе Nemo.Можно посмотреть <td class="col0">ContactInfo</td><td class="col1">нет </добавить в td><td class="Администрированиеcol2" >сложный </td><td class="Веб-служба. Авторизацияcol3".>Контактная информация для пассажира</td>| Целое число. </tr>|- <tr class="row66">| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть <td class="col0">EmailID </добавить в td><td class="Администрированиеcol1" >нет </td><td class="Веб-служба. Авторизацияcol2".| Латинские буквы и цифры. Всего 32 символа.|}>строка </divtd><td class="col3">Контактный email</divtd>
<div /tr> <tr class="toccolours mw-collapsible mw-collapsedrow67" style> <td class="col0">Telephone </td><td class="col1">нет </td><td class="col2">сложный </td><td class="width:1000pxcol3">Контактный телефон пассажира, описание аналогично описанию телефона агентства</td> </tr> <tr class="row68"> <td class="col0">CancelBook</td><td class="col1">да</td><td class="col2">сложный</td><td class= Ответ "col3">Контейнер для тела запроса отмены брони</td> </tr> <tr class="row69"> <td class="col0">BookID</td><td class="col1">да</td><td class=="col2">число</td><div td class="mw-collapsible-contentcol3">После выполнения запроса сразу поступит информация о бронировании. В первую очередь нужно внимательно проверить статусы &lt;Status&gt; всех услуг в бронировании. Если бронировалась услуга со статусом в результатах поиска RQ Номер брони, которая будет отменяться (по запросудля которой будет производится выписка, отмена выписки), то статус скорее всего будет не равен «booked». Через некоторое время проверять реальный статус бука отправляя запрос на чтение данных о бронировании.</td>
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><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 </BookingDatetr> <UpdateDate>2013-08-01 19:49:57 </UpdateDate> <CancelDate xsi:niltr class="truerow70"/> <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 Numbertd class="1col0"/> GetAirRules</Customertd> <Persons> <Person Numbertd class="1col1"/> <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> да</Documenttd> </Person> <Person Numbertd class="2col2"> <Lastname>PETROVсложный</Lastname> <Nametd>IVAN</Name> <Middlename>MIKHAILOVICH</Middlename> <DateOfBirth xsi:niltd class="truecol3"/> <Phone>+79871231212Контейнер для тела запроса поиска тарифных правил</Phonetd> <Email>m.rudenko@mute-lab.com </Emailtr> <Gender xsi:niltr class="truerow71"/> <Document Typetd class="Pcol0"> <Series>1866</Series> <Number>913319</Number> <IssueDate>2012-12-12 00:00:00</IssueDate> <ExpiryDate>2014-12-12 00:00:00</ExpiryDate> AirAvail</Documenttd> </Person> <Person Numbertd class="3col1"> <Lastname>SIDOROV</Lastname> <Name>IVANда</Nametd> <Middlename>SERGEEVICH</Middlename> <DateOfBirth xsi:niltd class="truecol2"/> сложный<Phone>+79871231212</Phone> <Email>m.rudenko@mute-lab.com</Email> <Gender xsi:nil="true"/td> <Document Typetd class="Pcol3"> <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>Контейнер для тела запроса проверки доступности перелёта</syntaxhighlighttd>
Структура ответа очень похожа </tr> <tr class="row72"> <td class="col0">Ticketing</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса выписки брони</td> </tr> <tr class="row73"> <td class="col0">ValCompany</td><td class="col1">нет</td><td class="col2">строка</td><td class="col3">Валидирующий перевозчик, на запрос. Выделяются те же основные элементы.бланке которого выписывается билет</td>
Элемент '''Booking''' </tr>{| style <tr class="row74"> <td class="width: 800pxcol0" >Comission</td><td class="wikitablecol1"|-! scope>нет</td><td class="col2">сложный</td><td class="colcol3" width>Комиссия</td> </tr> <tr class="200row75" | Элемент>! scope <td class="colcol0" width>Amount</td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>число с плавающей точкой</td><td class="300col3" | Допустимые значения|-| Items| Обязательный. Содержит элемент(ы) Item.| Элемент Item|-| Persons| Обязательный. Здесь перечислены все клиенты заказа.| Элемент Person|}>Значение комиссии в валюте, если указано, то комиссия в процентах игнорируется</td>
В элементах Item раскрывается подробнейшая информация об одной услуге </tr> <tr class="row76"> <td class="col0">Percent</td><td class="col1">нет</td><td class="col2">число</td><td class="col3">Комиссия в бронировании.процентах</td> </tr> <tr class="row77"> <td class="col0">VoidTicket</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела запроса отмены выписки брони</td>
Элемент '''Item''' </tr>{| style <tr class="width: 800pxrow78" > <td class="wikitablecol0"|-! scope>Search</td><td class="colcol1" width>да</td><td class="200col2">сложный</td><td class=" | Элементcol3">Контейнер для тела запроса поиска</td> </tr>! scope <tr class="colrow79" width> <td class="300col0" | Описание! scope>ODPairs</td><td class="col1">да</td><td class="colcol2" width>сложный</td><td class="300col3" | Допустимые значения|-| Атрибут Id| Обязательный.Номер заказа в системе Nemo.| Целое число|-| Type| Обязательный.Тип объекта бронирования.| HOTELS|-| Status| Обязательный. Статус объекта бронирования .| booked - забронированcancelled - аннулированpending confirmation - в процессе подтвержденияpending – произошла попытка бронирования, которое не было завершеноwaiting – ожидается результат запроса на бронирование|-| Prices| Обязательный. Данные о ценах.| см. Элемент Prices|-| Dates| Обязательный. Данные >Контейнер для информации о датах.| см. Элемент Dates|-| Statuses| Обязательный. Различные дополнительные статусы заказанной услуги.| см. Элемент Statuses|-| Persons| Обязательный. Содержит клиентов привязанных к услуге.| элементы Person|-| Hotel| Необязательный. Элемент с данными об отеле.| см. элемент Hotel (результат поиска отеля)|}перелёте</td>
Информация о цене услуги вынесена </tr> <tr class="row80"> <td class="col0">Type</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Тип перелёта, возможные значения: OW - в одну сторону, RT - туда-обратно, CR - сложный маршрут</td> </tr> <tr class="row81"> <td class="col0">Direct</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Индикатор, указывающий какие перелёты искать, только прямые или с пересадками, возможные значения: false - с пересадками, true - только прямые. Если не указан, значение по умолчанию false.</td> </tr> <tr class="row82"> <td class="col0">AroundDates</td><td class="col1">нет</td><td class="col2">число</td><td class="col3">Включает поиск по окружным датам, количество дней +/- от даты заезда/возвращения. Применим только для типов перелёта в отдельную веткуодну сторону(OW) и туда-обратно(RT). Возможные значения:0, 1, 2, 3</td> </tr> <tr class="row83"> <td class="col0">ODPair</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для информации о сегменте перелёта. Может повторяться 1-6 раз. Поиск по расписанию использует только первый сегмент, поиск сложных перелётов и перелётов туда и обратно не поддерживается</td>
Элемент '''Prices''' </tr>{| style <tr class="width: 800pxrow84" > <td class="wikitablecol0"|-! scope>DepDate</td><td class="colcol1" width>да</td><td class="200col2" | Элемент! scope>строка</td><td class="colcol3" width>Дата вылета, Формат ГГГГ-MM-DDTЧЧ:ММ:СС</td> </tr> <tr class="300row85" | Описание>! scope <td class="colcol0" width>DepAirp</td><td class="300col1" | Допустимые значения|-| Price| Обязательный. Базовая цена услуги.| Вещественное число.Атрибут Currency - код валюты.|-| Charges| Необязательный. Сумма дополнительных сборов.| Вещественное число.Атрибут Currency - код валюты.|-| Commission| Необязательный. Сумма комиссий (вычитается из общей стоимости).| Вещественное число.Атрибут Currency - код валюты.|-| Penalty| Необязательный. Сумма штрафов.| Вещественное число.Атрибут Currency - код валюты.|-| TotalPrice| Обязательный. Итоговая стоимость.>да</td><td class="col2">строка</td><td class= Price + Charges + Commission| Вещественное число.Атрибут Currency - "col3">Трёх буквенный код валютыгорода отправления или конкретного аэропорта в городе отправления.|}</td>
Информация о датах услуги также вынесена </tr> <tr class="row86"> <td class="col0">ArrAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Трёх буквенный код города прибытия или конкретного аэропорта в отдельную ветку:городе прибытия.</td> </tr> <tr class="row87"> <td class="col0">Count</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число пассажиров данного типа. Общее количество пассажиров всех типов должно быть не более 9.</td>
Элемент '''Dates''' </tr>{| style <tr class="row88"> <td class="width: 800pxcol0" >Restrictions</td><td class="wikitablecol1"|-! scope>нет</td><td class="colcol2" width>сложный</td><td class="200col3" | Элемент>Контейнер дополнительной информации для поиска.</td>! scope </tr> <tr class="colrow89" width> <td class="300col0" | Описание! scope>ClassPref</td><td class="col1">нет</td><td class="colcol2" width>строка</td><td class="300col3" | Допустимые >Предпочитаемый класс перелёта, возможные значения|-| BookingDate| Обязательный. Дата бронирования.| Формат гггг-мм-дд чч:мм:сс|All -| UpdateDate| Необязательный. Дата обновления.| Формат гггг-мм-дд чч:мм:сс|-| CancelDate| Необязательный. Дата аннуляции.| Формат гггг-мм-дд чч:мм:сс|все, Economy -| PenaltyDate| Необязательный. Дата наступления штрафов.| Формат гггг-ммэконом, Business -дд чч:мм:сс|бизнес, First -| AutoCancelDate| Необязательныйпервый. Дата автоаннулированияЕсли не указан, то по умолчанию All.| Формат гггг-мм-дд чч:мм:сс|}</td>
Дополнительные статусы </tr> <tr class="row90"> <td class="col0">OnlyAvail</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Искать только доступные, возможные значения:true - только доступные, false - все. Если не указан, то по умолчанию false.</td> </tr> <tr class="row91"> <td class="col0">AirVPrefs</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Обёртка для списка авиакомпаний, по которым будет или не будет проводиться поиск.</td>
Элемент '''Statuses''' </tr>{| style <tr class="row92"> <td class="width: 800pxcol0">AirVPref</td><td class="col1" >да</td><td class="wikitablecol2"|-! scope>сложный</td><td class="colcol3" width>Информация об авиакомпании.</td> </tr> <tr class="200row93" | Элемент>! scope <td class="colcol0" width>Include</td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>булевский</td><td class="300col3" | Допустимые значения|-| PaymentStatus| Необязательный.Статус оплаты.| Целое число1 - неоплачено2 - частично оплачено3 - оплачено|-| DocumentStatus| Необязательный.Статус ваучера.| Целое число1 - документ не сформирован2 - документ сформирован|-| DeliveryStatus| Необязательный.Статус доставки.| Целое число1 - не доставлен2 >Индикатор, показывающий включить или исключить в результатах поиска перелёты данной авиакомпании: true - доставлен|включить, false -| InvoiceStatus| Необязательныйисключить.Статус счета.| Целое число1 - счет выставлен.2 - счет Если не выставленуказан, то по умолчанию false.|}</td>
Информация о клиентах заказа полностью повторяет структуру запроса </tr> <tr class="row94"> <td class="col0">IncludePrivateFare</td><td class="col1">нет</td><td class="col2">булевский</td><td class="col3">Включать приватные цены в результат или нет, возможные значения: true - включать, false - не включать.Если не указан, то по умолчанию false.</td> </divtr> <tr class="row95"> <td class="col0">ServiceTypes</td><td class="col1">нет</td><td class="col2">сложный хмл</td><td class="col3">Контейнер массива используемых веб-сервисов при поиске.</divtd>
</tr> ==== Подтверждение бронирования ==== <div tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow96">===== Запрос ===== <div td class="mw-collapsible-contentcol0">Подтверждение бронирования заказа. '''WSDL''' (тестовый сервер): http:ServiceType<//tst.nemo-ibe.com/wsdev/wsdl.php?for=ConfirmBooking td><syntaxhighlight langtd class="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col1">нет<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd><td class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DConfirmBookingcol2"> <soapenv:Header/> <soapenv:Body> <ver:confirm> <RequestBin> <Request> <BookingId>179547строка</BookingIdtd> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:confirm> </soapenv:Body></soapenv:Envelope></syntaxhighlight> Элемент '''Request'''{| style="width: 800px" td class="wikitablecol3"|>Тип веб-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| BookingID| Обязательныйсервиса(поставщика). Идентификатор заказа в системе NemoПри указании нескольких элементов ServiceType поиск будет проведён для каждого сервиса.| Целое число|} Элемент '''Source'''{| style="widthВозможные значения: 800px" class="wikitable"|Sirena2000 -! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|поиск в Сирене; SirenaSchedule -| ClientID| Обязательный. ID клиента поиск в системе Nemo.Можно посмотреть/добавить Сирене по расписанию; SabreLFS - поиск в "Администрирование" ⇨ "ВебСэйбр LFS; SabreBFM -служба. Авторизация".| Целое число.|поиск в Сэйбр BFM; SabreSchedule -| APIKey| Обязательный. APIKey поиск Сэйбр по расписанию; Galileo - секретный ключ доступа к API Nemo.Можно посмотреть/добавить поиск в "Администрирование" ⇨ "ВебГалилео; AmadeusMPTBS -служба. Авторизация"поиск в Амадеус.</td>| Латинские буквы и цифры. Всего 32 символа. </tr>|}</table>
</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
===== Ответ =====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DConfirmBooking"> <SOAP-ENV:Body> <ns1:confirmResponse> <ResponseBin> <Response> <Books> <Book> <Id>179547</Id> <Status>booked</Status> </Book> </Books> </Response> </ResponseBin> </ns1:confirmResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope></syntaxhighlight></div></div>  ==== Выгрузка актуальных данных по заказу(ам) ====Используется для экспорта бронирований и для обновления данных Параметры, используемые в локальной клиентской базе. '''WSDL''' (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Export <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">===== Запрос =ответах ====
<div class="mw-collapsible-content">
<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; table border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport"> <soapenv:Header/> <soapenv:Body> <ver:export> <RequestBin> <Request> <Export> <Items> <!--Zero or more repetitions:--> <Item Id="3866211"/> </Items> </Export> </Request> <Source> <ClientId></ClientId> <APIKey></APIKey> <Language>ru</Language> <Currency>RUB</Currency> </Source> </RequestBin> </ver:export> </soapenv:Body></soapenv:Envelope></syntaxhighlight>
Элемент '''Item''' <tr bgcolor="#CCCCCC">{| style <th class="col0 leftalign"> Имя элемента </th><th class="width: 800pxcol1 leftalign" > Обязательный </th><th class="wikitablecol2 leftalign"|-! scope> Тип </th><th class="colcol3 centeralign" width> Описание </th> </tr> <tr class="200row1" | Элемент>! scope <td class="colcol0" width>BookFlightResult </td><td class="300col1" | Описание! scope>да </td><td class="colcol2" width>сложный </td><td class="300col3" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор заказа в системе Nemo.| Целое число|}>Контейнер для тела ответа бронирования</td>
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow2" > <td class="wikitablecol0"|-! scope>ID </td><td class="colcol1" width>да </td><td class="200col2" | Элемент! scope>число</td><td class="colcol3" width>Номер бронирования в системе Nemo.</td> </tr> <tr class="300row3" | Описание>! scope <td class="colcol0 leftalign" width>Status </td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>да </добавить в td><td class="col2"Администрирование>строка </td><td class=" col3"Веб>Статус брони, возможные значения: booked -служба. Авторизация".| Целое число.|забронировано, canceled -| APIKey| Обязательный. APIKey бронь отменена, ticket - секретный ключ доступа к API Nemo.Можно посмотреть/добавить в "Администрирование" ⇨ "Вебвыписана; UNDEFINED -служба. Авторизация".| Латинские буквы и цифры. Всего 32 символастатус не определён.|}</div></divtd>
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"/tr>===== Ответ ===== <div tr class="mw-collapsible-contentrow4">Ответ содержит элементы результатов бронирований. См. описание выше. <syntaxhighlight lang="xml" line enclose="div" styletd class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col0">Code <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DExport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"td> <SOAP-ENV:Body> <ns1:exportResponse> <ResponseBin> <Response> <Export> <Items> <Item Idtd class="386621col1"> <Hotel Id="1872666"> <Supplier>GTAда </Suppliertd> <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" ServiceIdtd class="1col2"/> строка <Room Count="1" Id="2" ServiceId="2"/td> </Rooms> <TotalPrice Currencytd class="RUBcol3">74733Номер бронирования в системе поставщика (в sabre, sirena и т.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код тарифного правила</Desctd> <Meal>Full Breakfast </Mealtr> <Price Currencytr class="RUBrow5">37366.92</Price> </Service> </Services> <Rooms> <Room Id="1" Typetd class="TWINcol0"/> QueryPlace <Room Id="2" Type="SNGL"/td> </Rooms> </Hotel> <Type>HOTELS</Type> <Status>waiting</Status> <Prices> <Price Currencytd class="RUBcol1">74733.84нет </Pricetd> <Charges Currencytd class="RUBcol2">0сложный </Chargestd> <Commission Currencytd class="RUBcol3">0</Commission> <Penalty Currency="RUB">0</Penalty> <TotalPrice Currency="RUB">74733.84</TotalPrice> </Prices> <Dates> <BookingDate>2013-08-01 20:21:47</BookingDate> <UpdateDate>2013-08-01 20:35:01</UpdateDate> <CancelDate xsi:nil="true"/> <PenaltyDate>2013-07-31 19:10:37</PenaltyDate> <AutoCancelDate>2013-08-01 20:23:47</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> </Export> </Response> </ResponseBin> </ns1:exportResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>Очередь, в которую помещено бронирование</syntaxhighlighttd>
Формат ответа аналогичен результату бронирования. </tr> <tr class="row6"> <td class="col0 leftalign">Number </td><td class="col1">да </td><td class="col2">число </td><td class="col3">Номер очереди</divtd> </tr> <tr class="row7"> <td class="col0">Flight </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Перелёт, по которому была сделана бронь (Результаты проверки доступности для перелёта)</divtd>
</tr>
<tr class="row8">
<td class="col0">Agency </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Информация об агентстве</td>
</tr>
<tr class="row9">
<td class="col0">ItinReceipts</td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Маршрут квитанция. Содержит строку в кодировки Encoding (как правило в base64), представляющую маршрут квитанцию в формате Format.</td>
</tr>
<tr class="row10">
<td class="col0">Encoding </td><td class="col1">да </td><td class="col2">строка </td><td class="col3">Кодировка</td>
</tr>
<tr class="row11">
<td class="col0">Format </td><td class="col1">да </td><td class="col2">строка</td><td class="col3">Формат</td>
==== Аннуляция заказа ===='''WSDL''' (тестовый сервер): http: <//tst.nemo-ibe.com/wsdev/wsdl.php?for=CancelBookingtr> <div tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow12">===== Запрос ===== <div td class="mw-collapsible-contentcol0">Travellers<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"/td><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vertd class="http://tst.nemo-ibe.com/wsdev/?version%3D1.0%26for%3DCancelBookingcol1"> да <soapenv:Header/td> <soapenv:Body> <ver:cancel> <RequestBin> <Request> <CancelBooking> <Item Idtd class="386621col2"/> </CancelBooking> сложный </Requesttd> <Source> <ClientIdtd class="col3">Контейнер для информации о пассажирах</ClientIdtd> <APIKey> </APIKeytr> <Language>ru</Languagetr class="row13"> <Currencytd class="col0">RUBTraveller </Currencytd> </Sourcetd class="col1"> да </RequestBintd> </ver:canceltd class="col2"> сложный </soapenv:Bodytd></soapenv:Envelopetd class="col3">Информация о пассажире</syntaxhighlighttd>
Элемент '''Item''' </tr>{| style <tr class="row14"> <td class="width: 800pxcol0" >Ticket </td><td class="wikitablecol1"|-! scope>нет </td><td class="colcol2" width>сложный </td><td class="200col3" | Элемент>Билет пассажира.</td>! scope </tr> <tr class="colrow15" width> <td class="300col0" | Описание! scope>TickectNum </td><td class="col1">да </td><td class="colcol2" width>строка </td><td class="300col3" | Допустимые значения|-| Атрибут Id| Обязательный. Идентификатор заказа в системе Nemo.| Целое число|}>Номер билета</td>
Элемент '''Source''' </tr>{| style <tr class="width: 800pxrow16" > <td class="wikitablecol0"|-! scope>Seats</td><td class="colcol1" width>нет </td><td class="200col2" | Элемент! scope>сложный </td><td class="colcol3" width>Контейнер мест пассажира.</td> </tr> <tr class="300row17" | Описание>! scope <td class="colcol0" width>Seat </td><td class="300col1" | Допустимые значения|-| ClientID| Обязательный. ID клиента в системе Nemo.Можно посмотреть>да </добавить в td><td class="Администрированиеcol2" ⇨ "Веб-служба. Авторизация".| Целое число.|-| APIKey| Обязательный. APIKey - секретный ключ доступа к API Nemo.Можно посмотреть>сложный </добавить в "Администрирование" ⇨ td><td class="Веб-служба. Авторизацияcol3".| Латинские буквы и цифры. Всего 32 символа.|}</div>Место в самолёте</divtd>
</tr> <tr class="row18"> <td class="col0">Number </td><td class="col1">да </td><td class="col2">строка</td><td class= Ответ "col3">Номер места(ряд+номер в ряду)</td> </tr> <tr class="row19"> <td class="col0">Characteristic </td><td class="col1">нет</td><td class="col2">строка </td><td class=см"col3">Характеристика места в соответствии со стандартом EDIFACT. результаты бронированияСм справочник “Таблица характеристик мест”.</td>
</tr> <tr class="row20"> <td class=Выгрузки статистики продаж через API"col0">SmokingPreference </td><td class="col1">нет </td><td class="col2">строка </td><td class="col3">Статус курения на этом месте, если Y - место для курящих, если N - место для некурящих.</td> </tr> <tr class="row21"> <td class="col0">SegmentNumber </td><td class="col1">да </td><td class="col2">число </td><td class="col3">Номер сегмента</td>
'''Метапоисковая система''' (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем. </tr> <tr class="row22"> <td class="col0">PersonalInfo </td><td class="col1">да </td><td class="col2">сложный </td><td class="col3">Личные данные</td> </tr> <tr class="row23"> <td class="col0">LoyaltyCard </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Карточка часто летающего пассажира</td>
Необходимо убедиться, что API запросы на поиск отправляются на доменное имя, указанное </tr> <tr class="row24"> <td class="col0">ContactInfo </td><td class="col1">нет </td><td class="col2">сложный </td><td class="col3">Контактная информация для агентства (субагента) пассажира</td> </tr> <tr class="row25"> <td class="col0">FareStored </td><td class="col1">нет </td><td class="col2">срока: Yes/No </td><td class="col3">Указывает установлена ли / гарантируется ли цена у поставщика. Если параметр отсутствует в разделе '''Администрирование''' -ответе, то по умолчанию значение “Yes”.</td> '''Настройки агентства'''
</tr>
<tr class="row26">
<td class="col0">CancelBookResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа отмены брони</td>
</tr>
<tr class="row27">
<td class="col0">BookID</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер брони, которая отменялась (Номер выписанной брони, выписка которой отменялась)</td>
</tr> <tr class="row28"> <td class="col0">Result</td><td class="col1">да</td><td class="col2">сложный</td><td class= Запрос ====="col3">Результат отмены (войдирования)</td>Пример запроса </tr> <syntaxhighlight langtr class="textrow29" enclose> <td class="divcol0" style>Success</td><td class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col1">http:да<//host/index.php?gotd><td class=settings"col2">булевский</download_metasearch_stat&date1td><td class=2012"col3">Индикатор, показывающий успешно или нет прошла отмена, возможные значения: true -05успешно отменена (войдирование); false -01&date2=2012-06-01&partner=aviasales&password=secretне отменена</syntaxhighlighttd>
Параметры запроса{| style="width: 800px" class="wikitable"|-! scope="col" | Параметр запроса! scope="col" | Описание|-| date1| YYYY-MM-DD дата.|-| date2| YYYY-MM-DD дата.|-| partner| Идентификатор партнёра - алиас источника переходов модуля метрики.|-| password| Пароль партнёра - пароль источника переходов модуля метрики.|} <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"/tr>===== Ответ ===== <div tr class="mw-collapsible-contentrow30"> <syntaxhighlight lang="xml" line enclosetd class="div" style=col0"font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"><bookings> <booking> <nemo_id>123123GetAirRulesResult</nemo_idtd> <idtd class="col1">JHKHVRда</idtd> <created_attd class="col2">2012-05-02 00:02:01сложный</created_attd> <markertd class="col3">1232:1222.tКонтейнер для тела ответа поиска тарифных правил</markertd> <price>1199 </pricetr> <profit>200</profittr class="row31"> <currencytd class="col0">RUBFlightId</currencytd> <statetd class="col1">PAIDда</statetd> <validatingCarriertd class="col2">UNчисло</validatingCarriertd> <segment> <flight> <operatingCarrier>UN</operatingCarrier> <number>3</number> <departure>DME</departure> <departureDate>2012-09-25</departureDate> <departureTime>09:55</departureTime> <arrival>LED</arrival> <arrivalDate>2012-09-25</arrivalDate> <arrivalTime>11:10</arrivalTime> <equipment>735</equipment> <cabin>Y</cabin> </flight> </segment> <adults>1</adults> <children>0</children> <infants>0</infantstd class="col3"> </booking> ...more bookings...</bookings>Номер перелёта, для которого найдены тарифные правила (будет проводилась проверка доступности)</syntaxhighlighttd>
'''Описание параметров''' </tr> <tr class="row32"> <td class="col0">Rules</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для правил</td> </tr> <tr class="row33"> <td class="col0">Rule</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Правило</td>
<syntaxhighlight lang/tr> <tr class="textrow34" enclose> <td class="divcol0" style>Tarrif</td><td class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col1"> да</bookings - корневой элемент содержащий информацию о бронированиях. td><td class="col2">строка<//booking - информации об одном бронировании. nemo_id - ид заказа в системе Немо. id - уникальный идентификатор бронирования в системе поставщика (локатор). created_at - YYYY-MM-DD HH:MM время и дата бронирования в таймзоне UTC; если даты бронирования нетtd><td class="col3">Код тарифа, то дата начала создания заказа. marker - маркер переданные в GET параметре marker при переходе на бронирование. price - цена билетов. profit - прибыль партнёра от данного бронирования. currency - валюта в которой указаны прибыль и цена билета. state - состояние брони. Допустимые значения PROCESSINGдля которого правило применяется</PAID/CANCELLED.td> segment - информация о перелётах. validatingCarrier - информация о бронировании. <//flight - информация об одном перелёте.tr> operatingCarrier - код авиакомпании осуществляющей рейс. <tr class="row35"> number - номер рейса. departure - IATA код аэропорта отправления. departureDate - дата отправления, 'YYYY-MM-DD', местное время. departureTime - время отправления, 'HH:MM', местное время. arrival - IATA код аэропорта назначения. arrivalDate - дата прибытия, 'YYYY-MM-DD', местное время. arrivalTime - время прибытия, 'HH:MM', местное время. equipment - IATA транспортного средства осуществляющего перевозку. cabin - класс перелёта. <td class="Ycol0" - эконом , >Name</td><td class="Ccol1" - бизнес, >да</td><td class="Fcol2" - первый. adults - кол-во взрослых пассажиров. children - кол-во детей. infants - кол-во детей до 2 лет.>строка</syntaxhighlighttd></divtd class="col3">Имя правила</divtd>
Время и дата бронирования '''''created_at''''' передается </tr> <tr class="row36"> <td class="col0">RuleText</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Текст правила</td> </tr> <tr class="row37"> <td class="col0">AirAvailResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа помещения брони в таймзоне UTC+4.очередь</td>
Состояние брони '''''state''''' может принимать </tr> <tr class="row38"> <td class="col0">IsAvail</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3">Индикатор, показывающий доступность перелёта, возможные значения:* '''''PROCESSING''''' true - забронировандоступен;false - недоступен</td> </tr>* '''''PAID''''' - выписан; <tr class="row39">* '''''CANCELLED''''' - аннулирован (по любым причинам). <td class="col0">VoidTicketResult</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для тела ответа отмены выписки брони</td>
Прибыль партнёра '''''profit''''' от данного бронирования в формате 00.99 (через точку) </tr> <tr class="row40"> <td class="col0">SearchResult</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Контейнер тела ответа для результатов поиска.</td> </tr> <tr class="row41">Размер прибыли партнера устанавливается <td class="col0">Flights</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для конкретного источника трафика в Модуле метрики и считается как процент от стоимости оплаченного заказа, включая комиссию платежного шлюза и апсейловые продажи. В последующем расчет прибыли может измениться. При возврате авиабилетов сумма ранее засчитанная как прибыль партнера (метапоисковой системы) должна подставляться с минусом в данном периоде.перелётов</td>
Количество детей до 2 лет '''''infants''''' относится только к младенцам без места </tr> <tr class="row42"> <td class="col0">Flight</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Представляет информацию о перелёте. Количество младенцев с местом объединяются с количеством детей до 12 лет '''''children'''''Отсутствует если перелётов не найдено (используется в поисковом ответе)</td> </tr> <tr class="row43"> <td class="col0">WebService</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Веб-сервис (поставщик) от которого был получен перелёт.</td>
</tr> <tr class="row44"> <td class="col0">ValCompany</td><td class=Выгрузка информации о заказах "col1">нет</td><td class="col2">строка</td><td class="col3">IATA код авиакомпании. Валидирующий перевозчик, на бланках которого должен выписываться билет.</td>'''Выгрузка заказов''' — это экспорт данных заказа или заказов для различных компонентов системы Nemo. </tr> <tr class="row45"> <td class="col0">Segments</td><td class= Процесс выгрузки "col1">да</td><td class="col2">сложный</td><td class==Схематично процесс выгрузки заказов представлен на блок-схеме."col3">Контейнер для сегментов перелёта</td>
[[Файл:Export.png]] </tr> <tr class="row46"> <td class="col0">Segment</td><td class= Статусы выгрузки заказа "col1">да</td><td class="col2">сложный</td><td class="col3">Представляет информацию о сегменте</td> </tr> <tr class="row47">Коды статусов выгрузки заказа соответствуют кодам состояния HTTP. Фактически указывается последний полученный код состояния HTTP, полученный при выгрузке данных по адресу, указанному <td class="col0">SegNum</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер сегмента в настройках выгрузки. Коды относятся к серверу, на который происходит выгрузка заказов.перелёте</td>
{| style </tr> <tr class="width: 800pxrow48" > <td class="wikitablecol0">DepAirp</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">IATA код аэропорта отправления</td>|- </tr>! scope <tr class="colrow49" width> <td class="20col0" | Код! scope>DepTerminal</td><td class="colcol1" width>нет</td><td class="300col2" | Описание|-| 0| Неизвестный ответ. Адрес для выгрузки не доступен.|-| 200| OK — успешный запрос.|-| 301| Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.|-| 403| Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.|-| 404| Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.|-| 422| Unprocessable Entity — сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.|-| 500| Любая внутренняя ошибка сервера.|}>строка</td><td class="col3">Код терминала отправления</td>
=== Выгрузка заказа для компонента «Авиабилеты»===Для компонента '''«Авиабилеты»''' доступна выгрузка заказов в форматах Nemo и </или Софи (при включенном модуле '''«Выгрузка заказов Софи»). tr> <div tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow50">==== Формат Nemo ==== <div td class="mw-collapsible-contentcol0">ArrAirp<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"/td><?xml version="1.0" encodingtd class="UTF-8col1"?><PNR> <Common> <id>277749да</idtd> <Typetd class="col2">FLIGHTSстрока</Typetd> <Servicetd class="col3">SABREIATA код аэропорта прибытия</Servicetd> <Locator>SQLJNK </Locatortr> <ExternalId>1234567</ExternalId> <!-- Внешний идентификатор --tr class="row51"> <Stamptd class="col0">123456789ArrTerminal</Stamptd> <UtmSourcetd class="col1">100нет</UtmSourcetd> <!-- Источник перехода --td class="col2"> <BeginDateTime>2014.12.18-10:45строка</BeginDateTimetd> <EndDateTime>2014.12.25-16:40</EndDateTime> <TicketingDateTime>2014.12.09-15:02</TicketingDateTime> <VoidDateTime/> <TotalPrice> <Amount>10773.8</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalPrice> <UserId>2964</UserId> <EEUserId/> <UserLogin>userLogin</UserLogin> <GroupId>2963</GroupId> <CompanyId>2963</CompanyId> <UserStatus>Менеджер</UserStatus> <DateCreate>2014.12.09-14:59</DateCreate> <ExtServices> <!-- Дополнительные услуги --td class="col3"> <ExtService> <Type>AeroExpress</Type> <Price> <Amount>1440</Amount> <CurrencyCode>RUB</CurrencyCode> </Price> </ExtService> <ExtService> <Type>AlphaInsurance</Type> <Price> <Amount>480</Amount> <CurrencyCode>RUB</CurrencyCode> </Price> <Insurances> <Insurance> <Number>Z694.198TEST.2765282</Number> <Fio>IVANOV IVAN</Fio> </Insurance> <Insurance> <Number>Z694.198TEST.2765283</Number> <Fio>PETROV PETR</Fio> </Insurance> </Insurances> </ExtService> </ExtServices> </Common> <Payment> <Title>Testpay</Title> <Method>Testpay</Method> <BillingId>117607091</BillingId> <Date>2014-12-09 15:00:39</Date> <CreateDate>2014-12-09 15:00:34</CreateDate> <Status>ticket</Status> <PenaltyDate/> <Timelimit>2014-12-10 14:59:55</Timelimit> <PaymentCharge> <!-- Сбор платежного шлюза --> <Amount>313.8</Amount> <CurrencyCode>RUB</CurrencyCode> </PaymentCharge> <Charge> <!-- Общий сбор минус сбор платежного шлюза --> <Amount>1920</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> <BaseFare> <!-- Тариф --> <Amount>1600</Amount> <CurrencyCode>RUB</CurrencyCode> </BaseFare> <Book> <!-- Тариф плюс таксы --> <Amount>8540</Amount> <CurrencyCode>RUB</CurrencyCode> </Book> <Penalty> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Penalty> <Total> <Amount>10773.8</Amount> <CurrencyCode>RUB</CurrencyCode> </Total> <Commission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <PaidValue> <Amount>10773.8</Amount> <CurrencyCode>RUB</CurrencyCode> </PaidValue> </Payment> <Client> <LastName/> <Name>SIDOROV PETR</Name> <MiddleName/> <Number/> <Birth/> <Email>mail@host.com</Email> <Phone>+74950000000</Phone> </Client> <PassengersCount>2</PassengersCount> <Passengers> <Passenger> <passenger_type>ADT</passenger_type> <lastname>IVANOV</lastname> <name>IVAN</name> <gender>F</gender> <date_of_birth>12.12.1987</date_of_birth> <doc_type>C</doc_type> <passport_number>1234567890</passport_number> <currency_of_passport>24.03.2023</currency_of_passport> <middlename/> <passenger_id>37667</passenger_id> <nationality>RU</nationality> <email>mail@host.com</email> <Tickets> <Active>0</Active> <Seg/> <Num>5553984070962</Num> <Date>2014-12-09 16:01:00</Date> </Tickets> <Tickets> <Active>1</Active> <Seg/> <Num>5553984070964</Num> <Date>2014-12-09 16:03:00</Date> </Tickets> <PriceInfo> <BaseFare> <Amount>800</Amount> <CurrencyCode>RUB</CurrencyCode> </BaseFare> <TotalFare> <Amount>4270</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalFare> <Commission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <AirlineCommission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </AirlineCommission> </PriceInfo> </Passenger> <Passenger> <passenger_type>ADT</passenger_type> <doc_type>C</doc_type> <middlename/> <passenger_id>37668</passenger_id> <lastname>PETROV</lastname> <name>PETR</name> <gender>M</gender> <date_of_birth>20.12.1984</date_of_birth> <passport_number>1234567899</passport_number> <currency_of_passport>20.12.2029</currency_of_passport> <nationality>RU</nationality> <email>mail@host.com</email> <Tickets> <Active>0</Active> <Seg/> <Num>5553984070963</Num> <Date>2014-12-09 16:01:00</Date> </Tickets> <Tickets> <Active>1</Active> <Seg/> <Num>5553984070965</Num> <Date>2014-12-09 16:03:00</Date> </Tickets> <PriceInfo> <BaseFare> <Amount>800</Amount> <CurrencyCode>RUB</CurrencyCode> </BaseFare> <TotalFare> <Amount>4270</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalFare> <Commission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <AirlineCommission> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </AirlineCommission> </PriceInfo> </Passenger> </Passengers> <FlightType>Внутренний</FlightType> <OrderInfo> <Info> <Company>Аэрофлот - Российские авиалинии</Company> <CompanyCode>SU</CompanyCode> <OperatingCompanyCode>FV</OperatingCompanyCode> <StartDate>2014.12.18</StartDate> <StartTime>10:45</StartTime> <StartDayOfWeek>Thursday</StartDayOfWeek> <FlightNumber>6128 (FV6128)</FlightNumber> <StartAirportCode>VKO</StartAirportCode> <StartAirportName>Внуково, Москва</StartAirportName> <StartCountry>Россия</StartCountry> <StartCountryCode>RU</StartCountryCode> <EndAirportCode>LED</EndAirportCode> <EndAirportName>Санкт-Петербург, Пулково</EndAirportName> <EndCountry>Россия</EndCountry> <EndCountryCode>RU</EndCountryCode> <Time>1:30</Time> <Equip> <Name>Airbus 319</Name> <Type>319</Type> </Equip> <ClassType>economy</ClassType> <ClassTypeCode>R</ClassTypeCode> <Meal/> </Info> <Info> <Company>Аэрофлот - Российские авиалинии</Company> <CompanyCode>SU</CompanyCode> <OperatingCompanyCode>FV</OperatingCompanyCode> <StartDate>2014.12.25</StartDate> <StartTime>15:10</StartTime> <StartDayOfWeek>Thursday</StartDayOfWeek> <FlightNumber>6153 (FV6153)</FlightNumber> <StartAirportCode>LED</StartAirportCode> <StartAirportName>Санкт-Петербург, Пулково</StartAirportName> <StartCountry>Россия</StartCountry> <StartCountryCode>RU</StartCountryCode> <EndAirportCode>VKO</EndAirportCode> <EndAirportName>Внуково, Москва</EndAirportName> <EndCountry>Россия</EndCountry> <EndCountryCode>RU</EndCountryCode> <Time>1:30</Time> <Equip> <Name>Airbus 319</Name> <Type>319</Type> </Equip> <ClassType>economy</ClassType> <ClassTypeCode>R</ClassTypeCode> <Meal/> </Info> </OrderInfo> <Remarks>Debit</Remarks></PNR>Код терминала прибытия</syntaxhighlighttd>
Ремарка '' <Remarks/tr> <tr class="row52"> <td class="col0">OpAirline</td><td class="col1">да</td><td class="col2">Debitстрока</Remarkstd><td class="col3">'' является не обязательнойКод авиакомпании, означает что заказ был оплачен с помощью способа оплаты «Депозит»;выполняющей рейс</td>если же заказ был оплачен с использованием депозитного кредита, и депозит ушел в минус даже на 1 руб., то будет '' </tr> <tr class="row53"> <td class="col0">MarkAirline</td><td class="col1">да</td><td class="col2">строка</td><Remarkstd class="col3">CreditКод авиакомпании, продающей билет</Remarkstd>''.
Элемент '' <TotalFare/tr> <tr class="row54"> <td class="col0">FlightNumber</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Номер рейса</td> </tr> <tr class="row55"> <td class="col0">AircraftType</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Код типа самолёта</td>'' возвращает стоимость уже оплаченного заказа. Если же заказ забронирован, но не оплачен, то значение будет 0 RUB.
Элемент '' <CreateDate/tr>'' в зависимости от состояния брони возвращает <tr class="row56"> <td class="col0">DepDateTime</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата и время окончания бронированияотправления, если бронирование было завершеноформат ГГГГ-MM-ДДTЧЧ:ММ:СС</td> </tr> <tr class="row57"> <td class="col0">ArrDateTime</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Дата и время прибытия, иначе возвращает время создания брони.формат ГГГГ-MM-ДДTЧЧ:ММ:СС</td>
Формат поддерживает возможность передачи нескольких номеров электронных билетов на одного пассажира (в том числе войдированных и аннулированных). </tr> <tr class="row58"> <td class="col0">StopNum</td><td class="col1">да</td><td class="col2">число</td><td class="col3">Число остановок</td> </divtr> <tr class="row59"> <td class="col0">Meal</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Тип питания, возможные значения: UNDEFINED - неизвестно; N - Нет питания; P - Алкогольные напитки в продаже; B - Завтрак; O - Холодная еда; C - Бесплатные алкогольные напитки; K - Континтальный завтрак; D - Обед; F - Еда в продаже; G - Еда/напитки в продаже; H - Горячая еда; L - Ланч; M - Еда; R - Освежающие еда/напитки бесплатно; V - Освежающие еда/напитки за отдельную плату; S - Закуска</divtd>
<div /tr> <tr class="row60"> <td class="col0">BookingCodes</td><td class="col1">да</td><td class="col2">сложный</td><td class="col3">Контейнер для классов перелёта</td> </tr> <tr class="row61"> <td class="col0">BookingCode</td><td class="toccolours mw-collapsible mw-collapsedcol1" style>да</td><td class="width:1000pxcol2">строка</td><td class="col3">Код класса перелёта. Если производится поиск по расписанию, то может встречаться несколько раз.</td>
</tr> <tr class="row62"> <td class="col0">FlightTime</td><td class="col1">нет</td><td class= Формат Софи =="col2">число</td><td class="col3">Время перелёта в минутах</td> </tr> <tr class="row63"> <div td class="mw-collapsible-contentcol0">TimeZone</td><syntaxhighlight langtd class="xmlcol1" line enclose>нет</td><td class="divcol2 rightalign" style> сложный</td><td class="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;col3">Информация о временных зона прибытия и отправления</td>
<?xml version="1.0" encoding="UTF-8"?><order_snapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"tr> <header currency="RUB" time_gmt="2015-01-13 08:10:54" time="2015-01-13 12:10:54" ord_id="279307" corp_ord_id="MKQFBZ" sitetr class="2806row64"/> <customer email="cepogilixe@lackmail.net" phonetd class="XXXX9048col0" name="" corp_code="2806"/> <products> <product> <!--@stamp - валидатор. Парсится из заказа(Сирена и Галилео). Если получить из ГДС не удалось, то передаётся валидатор, настроенный в реквизитах подключения к ГДС.--> <air_ticket_prod prod_id="0" psg_type="A" title="Москва - Ленинград" taxes="1776" fare="400" origin="MOW" service_fee="100" form_owner="SU" validating_carrier="SU" destination="LED" comission="0.4" stamp="92354802"> <air_seg segment_id="0" carrier="SU" flight_number="6128" op_carrier="FV" departure_datetime="2015-01-16 10:45:00" arrival_datetime="2015-01-16 12:15:00" departure_airport="VKO" arrival_airport="LED" fare_basis="RPROWRF"/> Departure</air_ticket_prodtd> </product> <product> <ral_ticket_prod rsrv_idtd class="2496500col1" prod_id="200" origin="Киевский вокзал" destination="Внуково, Москва" departure_datetime="2015-01-16 06:45:00" cartype="standart" fare="360"/> да</producttd> <product> <service_prod prod_idtd class="300col2" provider_type="INSURANCE" provider_id="AlphaInsurance" offer_type="alpha_insurance" ext_id="Z694.198TEST.2774397" price="100" count="1" psgr_id="0"/> число</producttd> <product> <payment_prod pricetd class="123col3"/> </product> Часовой пояс отправления, UTC (смещение относительно Гринвича)</productstd> <reservations> <reservation rsrv_id="279307" crs="SABRE" rloc="MKQFBZ"/tr> <reservation rsrv_id="2496500" crs="AeroExpress" rloctr class="218812row65"/> </reservations> <passengers> <passenger doc_number="1234567890" psgr_id="0" doc_country="RU" psgr_type="A" doc_type="C" birth_date="1990-01-04" name="IVAN" gender="M" first_name="IVANOV"/> </passengers> <travel_docs> <travel_doc> <air_ticket_doc tkt_oper="TKT" tkt_number="5555871998698" tkt_date="2015-01-13 12:10:50" prod_id="0" psgr_id="0" issuingAgenttd class="2807col0"/> Arrival</travel_doc> <travel_doctd> <aex_doc rsrv_id="2496500" prod_id="200" psgr_id="0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_numbertd class="394612col1"/> да</travel_doc> <travel_doctd> <insur_doc main_prod_id="0" prod_idtd class="300" psgr_id=col2"0" tkt_oper="TKT" tkt_date="2015-01-13 12:10:54" tkt_number="Z694.198TEST.2774397"/> число</travel_doctd> </travel_docs> <payments> <payment pay_id="117607839" pay_opertd class="PAYcol3" pay_time="2015-01-13 12:09:52" psp_code="024" psp_name="Rapida" psp_pay_id="" pay_system="ES" amount="2859" fop="CA"/> </payments></order_snapshot>Часовой пояс прибытия, UTC (смещение относительно Гринвича)</syntaxhighlighttd>
*service_fee — сбор агентский (только сервисный сбор, '''не включает''' в себя сбор за эквайринг). </tr>*comission - комиссия АК <tr class="row66">*stamp <td class="col0">ETicket</td><td class="col1">да</td><td class="col2">булевский</td><td class="col3 rightalign"> Индикатор электронного билета, возможные значения: true - код Валидатора в ПССбилет является электронным, берется из настроек Немо, если в настройках он не указан, то false - билет не передаетсяявляется электронным.</td>*ord_id — идентификатор заказа в НЕМО </tr>*corp_ord_id — PNR из ГДС <tr class="row67">*site — идентификатор агентства в Немо*payment pay_id — номер биллинга Немо.*pay_system — код платежной системы**SB — для сбербанка**ES — для Рапиды**UNT — для Юнителлера*cardholder — держатель карты.*expire_date — срок действия карты, у тех ПШ, что не приходит в ответе — пустой.*card_number — номер карты, в формате: 415481XXXXXX1734*approval_code — код подтверждения.*payment_prod price — сбор за эквайринг.*main_prod_id - ID основного продукта (авиабилета).*tkt_number - номер полиса для пассажира;*tkt_date - дата и время операции; *tkt_oper - тип операции (TKT <td class="col0">Baggage</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Информация о багаже</REF).*provider_type - тип поставщика (INSURANCE).*provider_id - AlphaInsurance;*offer_type - название полиса;*price - цена полиса для пассажира;*rloc - номер заказа у поставщика.td>
</divtr> <tr class="row68"> <td class="col0">Measure</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Мера веса. K - килограммы, PC - сумки/клади</td> </tr> <tr class="row69"> <td class="col0">Value</td><td class="col1">да</td><td class="col2">строка</td><td class="col3">Количество багажа</divtd>
</tr> <tr class="row70"> <td class="col0">PricingInfo</td><td class="col1">нет</td><td class="col2">сложный</td><td class= Выгрузка заказа "col3">Контейнер для компонента «Отели» информации о ценах. Отсутствует в случае, если производится поиск по расписанию.</td> </tr> <tr class="row71"> <td class="col0">Refundable</td><td class="col1">да</td><td class=Для компонента '''«Отели»''' доступна выгрузка заказов в формате Nemo. "col2">булевский</td><td class="col3">Индикатор показывающий является ли билет возвратным или нет, возможные значения: true - возвратный (нет штрафов за возврат), false - невозвратный (могут быть штрафы за возврат)</td>
<div /tr> <tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow72">==== Формат Nemo ==== <div td class="mw-collapsible-contentcol0">PassengerFare<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"/td><?xml versiontd class="1.0col1" encoding="UTF-8"?><PNR> <Common> <id>263462да</idtd> <Typetd class="col2">HOTELSсложный</Typetd> <Servicetd class="col3">ACADEM</Service> <Locator>3028655</Locator> <BeginDateTime>2014.04Информация о ценах для конкретного типа пассажиров.15-00:00</BeginDateTimetd> <EndDateTime>2014.04.16-00:00 </EndDateTimetr> <TotalPricetr class="row73"> <Amounttd class="col0">1950Quantity</Amounttd> <CurrencyCodetd class="col1">RUBда</CurrencyCodetd> </TotalPricetd class="col2"> <UserId>123число</UserIdtd> <EEUserId /> <UserLogin>userLogin</UserLogin> <GroupId>332</GroupId> <UserStatus>Менеджер</UserStatus> <DateCreate>2014.03.21-16:11</DateCreate> </Common> <Payment> <Status>booked</Status> <PenaltyDate>2014.04.13-00:00</PenaltyDate> <Timelimit>2014-04-13 00:00:00</Timelimit> <Charge> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> <Book> <Amount>1950</Amount> <CurrencyCode>RUB</CurrencyCode> </Book> <Penalty> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Penalty> <Total> <Amount>1950</Amount> <CurrencyCode>RUB</CurrencyCode> </Total> <Commission> <Amount>112</Amount> <CurrencyCode>RUB</CurrencyCode> </Commission> <PaidValue> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </PaidValue> </Payment> <Client> <LastName>Сидоров</LastName> <Name>Владимир</Name> <MiddleName>Константинович</MiddleName> <Number>1806326598</Number> <Birth>1987-05-20</Birth> <Email>mail@host.com</Email> <Phone>+79871234567</Phone> </Client> <Passengers> <Passenger> <nationality>RU</nationality> <lastname>IVANOV</lastname> <name>IVAN</name> </Passenger> </Passengers> <Info> <Name>Интурист</Name> <City> <Code>34</Code> <Name>Великий Новгород</Name> </City> <Location /> <StarRating>3</StarRating> <Days>2</Days> <Nights>1</Nights> <CheckInDate>2014.04.15</CheckInDate> <CheckOutDate>2014.04.16</CheckOutDate> <CheckInTime>14:00</CheckInTime> <CheckOutTime>12:00</CheckOutTime> <OnRequest>false</OnRequest> </Info> <Rooms> <Room> <Name>Двухместный стандарт (две кровати)</Name> <Type>SNGL</Type> <FareId>1</FareId> </Room> </Rooms> <Fares> <Fare> <Id>1</Id> <Price> <Amount>1950</Amount> <CurrencyCode>RUB</CurrencyCode> </Price> <Meals>Завтрак td class="Шведский столcol3",Отсутствует</Meals> <Description>Одноместный</Description> </Fare> </Fares> <CancelCharges> <Charge> <DateFrom>2014.04.13-00:00</DateFrom> <DateTo>2014.04.15-00:00</DateTo> <Amount>1488</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> </CancelCharges> <ModifyCharges /> <ModificationMethods> <Method>MOD_PASS_NAMES</Method> <Method>MOD_DATES</Method> </ModificationMethods></PNR></syntaxhighlight></div>Число пассажиров данного типа</divtd>
</tr> <tr class="row74"> <td class="col0">BaseFare</td><td class= Выгрузка заказа для компонента «ЖД» "col1">да</td><td class="col2">сложный</td><td class="col3">Цена в базовой валюте(за одного пассажира)</td> </tr> <tr class="row75">Для компонента '''«ЖД»''' доступна выгрузка заказов <td class="col0">EquiveFare</td><td class="col1">нет</td><td class="col2">сложный</td><td class="col3">Цена в формате Nemo. эквивалентной валюте(за одного пассажира), при поиске цены не возвращается</td>
<div /tr> <tr class="toccolours mw-collapsible mw-collapsed" style="width:1000pxrow76">==== Формат Nemo ==== <div td class="mw-collapsible-contentcol0">TotalFare<syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"/td><?xml versiontd class="1.0col1" encoding="UTF-8"?><PNR> <Common> <id>123456нет</idtd> <Typetd class="col2">TRAINSсложный</Typetd> <Servicetd class="col3">UFSПолная стоимость для пассажиров данного типа включая таксы (за одного пассажира), при поиске цены не возвращается</Servicetd> <Locator>64345987 </Locatortr> <BeginDateTime>2014.04.26-00:15</BeginDateTimetr class="row77"> <EndDateTimetd class="col0">2014.04.26-13:33Currency</EndDateTimetd> <TicketingDateTimetd class="col1">2014.06.06-15:10да</TicketingDateTimetd> <VoidDateTimetd class="col2">2014.06.07-14:19строка</VoidDateTimetd> <TotalPrice> <Amount>57505.8</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalPrice> <UserId>123</UserId> <EEUserId /> <UserLogin>mikhalevtur</UserLogin> <GroupId>122</GroupId> <UserStatus>Менеджер</UserStatus> <DateCreate>2014.04.24-15:03</DateCreate> </Common> <Payment> <Title>Testpay</Title> <Method>Testpay</Method> <BillingId>117603370</BillingId> <Date>2014-04-24 15:10:12</Date> <CreateDate>2014-06-06 15:10:00</CreateDate> <Status>cancelled</Status> <PenaltyDate /> <Timelimit>2014-04-24 15:18:01</Timelimit> <Charge> <Amount>52278</Amount> <CurrencyCode>RUB</CurrencyCode> </Charge> <Book> <Amount>5227.8</Amount> <CurrencyCode>RUB</CurrencyCode> </Book> <Penalty> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </Penalty> <TotalAgencyChargeForRefund> <Amount>100</Amount> <CurrencyCode>RUB</CurrencyCode> </TotalAgencyChargeForRefund> <Total> <Amount>57505.8</Amount> <CurrencyCode>RUB</CurrencyCode> </Total> <PaidValue> <Amount>0</Amount> <CurrencyCode>RUB</CurrencyCode> </PaidValue> </Payment> <Client> <LastName>Сидоров</LastName> <Name>Владимир</Name> <MiddleName>Константинович</MiddleName> <Number>1806326598</Number> <Birth>1987-05-20</Birth> <Email>mail@host.com</Email> <Phone>+79871234567</Phone> </Client> <Passengers> <Passenger> <name>Владимир</name> <middlename>Константинович</middlename> <phone> <country /> <city /> <number>+79271031610</number> <expansion /> </phone> <email>mlsdsar@gmail.com</email> <nationality>RU</nationality> <passenger_type>ADT</passenger_type> <lastname>Сидоров</lastname> <doc_type>C</doc_type> <passport_number>1806326598</passport_number> <passenger_id>1</passenger_id> <gender>M</gender> <date_of_birth>20.04.1984</date_of_birth> <TotalPrice>28752.9</TotalPrice> <FarePrice>2613.9</FarePrice> <Charge>26139</Charge> <RefundMoney>8649.3</RefundMoney> <ChargeForRefund>100</ChargeForRefund> <TicketNumber>74944708487545</TicketNumber> <SeatNumber>033</SeatNumber> <HasSeat>true</HasSeat> </Passenger> <Passenger> <nationality>RU</nationality> <middlename>Константинович</middlename> <passenger_type>ADT</passenger_type> <lastname>Сидоров</lastname> <name>Иван</name> <doc_type>C</doc_type> <passport_number>1806326554</passport_number> <passenger_id>2</passenger_id> <gender>M</gender> <date_of_birth>05.04.1984</date_of_birth> <TotalPrice>28752.9</TotalPrice> <FarePrice>2613.9</FarePrice> <Charge>26139</Charge> <TicketNumber /> <SeatNumber>034</SeatNumber> <HasSeat>true</HasSeat> </Passenger> </Passengers> <Info> <trainNumber>098ХА</trainNumber> <trainName /> <departureStation>МОСКВА КАЗ</departureStation> <arrivalStation>КАЗАНЬ ПАС</arrivalStation> <trainCategory>1</trainCategory> <beginStation>Москва</beginStation> <endStation>Казань</endStation> <startDatetd class="col3">2014-04-26 00:15:00</startDate> <endDate>2014-04-26 13:33:00</endDate> <timeInRoad>47880</timeInRoad> <carNumber>8</carNumber> <carType>4</carType> <choosenSeats> <type> <lower>1</lower> </type> <type> <upper>1</upper> </type> <type> <lower_side>0</lower_side> </type> <type> <upper_side>0</upper_side> </type> <type> <undefined>0</undefined> </type> </choosenSeats> <choosenRange> <start>0</start> <end>0</end> </choosenRange> <serviceClass>В стоимость входит - постельное бельеТрёх буквенный код валюты. Наличие установки кондиционирования воздуха не гарантировано.</serviceClass> </Info></PNR></syntaxhighlighttd>
'''Элемент PNR''' </tr>Элемент '''PNR''' — Passenger Name Record — запись, состоящая из группы отдельных элементов (полей), содержащих информацию об одном или более пассажирах, путешествующих вместе, и деталях путешествия. <tr class="row78">{| style <td class="width: 800pxcol0" >Amount</td><td class="wikitablecol1"|-! scope>да</td><td class="col2">число с плавающей точкой</td><td class="colcol3" width>Значение стоимости.</td> </tr> <tr class="200row79" | Элемент>! scope <td class="colcol0" width>Taxes</td><td class="300col1" | Описание! scope>нет</td><td class="colcol2" width>сложный</td><td class="300col3" | Допустимые значения|-| Common| Общая информация по заказу.| Элементы id>Контейнер для такс, Type, Service, Locator, BeginDateTime, EndDateTime, TicketingDateTime, TotalPrice, UserId, EEUserId, UserLogin, GroupId, UserStatus, DateCreate.|-| Payment| Информация о стоимости, штрафах, статусе заказа.| Элементы Status, PenaltyDate, Timelimit, Charge, Book, Penalty, Total, PaidValue.|-| Client| Информация о заказчике.| Элементы Name, MiddleName, Number, Birth, Email, Phone.|-| Passengers| Записи о пассажирах.| Элементы Passenger.|-| Info| Типовая информация по заказу в контексте услуги.| Элементы trainNumber, trainName, departureStation, arrivalStation, trainCategory, beginStation, endStation, startDate, endDate, timeInRoad, carNumber, carType, choosenSeats, choosenRange, serviceClass.|}при поиске цены не возвращается</td>
'''Элемент Common''' </tr>{| style="width: 800px" <tr class="wikitablerow80">|-! scope <td class="colcol0" width>Tax</td><td class="200col1" | Элемент! scope>да</td><td class="colcol2" width>сложный</td><td class="300col3" | Описание>Одна такса</td> </tr>! scope <tr class="colrow81" width> <td class="300col0" | Допустимые значения|-| id| Номер заказа в Немо.| Число. Пример: 268281.|-| Type| Тип услуги.| Строка: Пример: FLIGHTS.>CurCode<br/td>Допустимые значения: <ultd class="col1"><li>FLIGHTS — авиа,да</litd><litd class="col2">HOTELS — отели,строка</litd><litd class="col3">TRAINS — ЖД.Трёх буквенный код валюты для таксы</litd></ul>|-| Service| Поставщик услуги.| Строка. Пример: UFS.|-| Locator| Идентификатор в системе поставщика.| Число. Пример: 65525140.|-| BeginDateTime| Дата и время отправления первого сегмента.| Дата и время. Пример: 2014.03.06-00:15.|-| EndDateTime| Дата и время прибытия последнего сегмента.| Дата и время. Пример: 2014.03.06-13:33.|-| TicketingDateTime| Дата и время выписки билета.| Дата и время. Пример: 2014.10.17-17:23|-| VoidDateTime| Дата и время возврата билета.| Дата и время. Пример: 2014.10.17-17:23|-| TotalPrice| Общая стоимость заказа.| Элементы Amount — номинал стоимости, CurrencyCode — валюта стоимости.|-| UserId| Идентификатор пользователя в системе Немо, оформившего заказ.| Число. Пример: 123.|-| UserLogin| Логин пользователя в системе Немо, оформившего заказ.| Строка. Пример: userLogin.|-| GroupId| Идентификатор группы пользователя в системе Немо, оформившего заказ.| Число. Пример: 122.|-| UserStatus| Тип пользователя в системе Немо.| Строка. Пример: Менеджер.|-| DateCreate| Дата и время резервирования в системе поставщика.| Дата и время. Пример: 2014.03.05-15:08|}
'''Элемент TotalPrice''' </tr>{| style <tr class="width: 800pxrow82" > <td class="wikitablecol0"|-! scope>TaxCode</td><td class="col1">да</td><td class="col2">строка</td><td class="colcol3" width>Код таксы</td> </tr> <tr class="200row83" | Элемент>! scope <td class="colcol0" width>Amount</td><td class="300col1" | Описание! scope>да</td><td class="colcol2" width>число с плавающей точкой</td><td class="300col3" | Допустимые значения|-| Amount| Номинал.| Число. Пример: 1884.|-| CurrencyCode| Валюта.| Строка (Код ISO 4217 alfa-3). Пример: RUB.|}>Значение таксы</td>
'''Элемент Payment'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Title| Название платежного шлюза<sup>* </suptr>.| Строка. Пример: Testpay.|-| Method| Тип формы оплаты <sup>*</sup>.| Строка. Пример: Testpay.|-| BillingId| Идентификатор транзакции Немо.| Строка. Пример: 117603370.|-| Date| Дата и время оплаты платежной транзакции Немо.| Строка. Пример: 2014-04-24 15:10:12.|-| CreateDate| Дата и время создания платежной транзакции Немо.| Строка. Пример: 2014-06-06 15:10:00.|-| Status| Статус заказа в системе Немо.| Строка. Пример: booked.<br/>Допустимые значения: <ul><li>pending — в ожидании,</li><li>booked — зарезервирован,</li><li>ticket — выписан,</li><li>cancelled — отменен.</li></ul>|-| PenaltyDate| Дата и время наступления штрафных санкций.| Дата и время. Пример: 2014-03-05 15:23:40.|-| Timelimit| Таймлимит на оплату и подтверждение заказа.| Дата и время. Пример: 2014-03-05 15:23:40.|-| Charge| Сбор агентства.| См. элемент Common.TotalPrice.|-| Book| Тариф.| См. элемент Common.TotalPrice.|-| Penalty| Штраф. <br/><span style="background-color:#fff0f5;">'''<span styletr class="color:#ff0000;row84">Внимание!</span>''' На данный момент параметр неактуален и при выгрузке всегда принимает нулевое значение.</span>| См. элемент Common.TotalPrice.|-| TotalAgencyChargeForRefund| Общий сбор агентства за возврат.| См. элемент Common.TotalPrice.|-| Total| Общая стоимость.| См. элемент Common.TotalPrice.|-| PaidValue| Оплачено.| См. элемент Common.TotalPrice.|}  <sup>*</sup> — список возможный платежных шлюзов:<br/>Acquiro, Chronopay, Copayco, CourierNew, Deposit, EasyPay, GatelineNew, ITransfer, Invoice, Offices, PayU, Payture, Platron, PrivatBank, Qiwi, Rapida, Receipt, Sberbank, Sirena, Sirena2, UnitellerNew, WebMoney. '''Элемент Client'''{| style="width: 800px" td class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| Name| Фамилия и имя заказчика.| Строка. Пример: Иванов Иван.|-| MiddleName| Отчество заказчика.| Строка. Пример: Иванович.|-| Number| Серия и номер документа.| Строка. Пример: 1806123456.|-| Birth| Дата рождения заказчика.| Дата. Пример: 1984-06-30.|-| Email| Адрес электронной почты заказчика.| Строка. Пример: client@host.com.|-| Phone| Номер телефона заказчика.| Строка. Пример: +74951234567|} '''Элемент Passenger'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width=col0"300" | Допустимые значения|-| lastname| Фамилия пассажира.| Строка. Пример: Сидоров.|-| name| Имя пассажира.| Строка. Пример: Владимир.|-| middlename| Отчество пассажира.| Строка. Пример: Константинович.|-| doc_type| Тип документа.| Строка. Пример: C.<br/>Допустимые значения:<ul><li>C — Российский паспорт</li><li>P — Заграничный паспорт</li><li>A — Иностранный документ</li><li>S — Паспорт моряка</li><li>M — Военный билет</li><li>B — Свидетельство о рождении</li></ul>|-| passport_number| Серия и номер документа.| Строка. Пример: 1806123456. |-| gender| Пол пассажира.| Строка. Пример: M.<br/>Допустимые значения:<ul><li>M — мужской</li><li>F — женский</li></ul>|-| date_of_birth| Дата рождения пассажира.| Дата. Пример: 20.05.1987.|-| nationality| Гражданство пассажира.| Строка (ISO 3166-1 Alpha-2). Пример: RU.|-| passenger_type| Тип пассажира.| Строка. Пример: ADT.Tariffs<br/td>Допустимые значения:<ul><li>ADT — взрослый</li><li>CLD — ребенок до 10 лет<sup>*, **</sup></li><li>INF — ребенок до 5 лет<sup>*, ***</sup></li></ul>|-| passenger_id| Порядковый номер пассажира в заказе.| Число. Пример: 2.|-| TotalPrice| Общая стоимость билета со сборами для данного пассажира.| Число. Пример: 1934.|-| FarePrice| Стоимость по тарифу тарифу.| Число. Пример: 1884.|-| Charge| Сбор агентства.| Число. Пример: 50.|-| RefundMoney| Сумма к возврату. Значение, полученное от поставщика, уменьшенное на сумму сбора агентства за возврат.| Число. Пример: 1643.|-| ChargeForRefund| Cбор агентства за возврат.| Число. Пример: 100.|-| TicketNumber| Номер билета.| Число. Пример: 73944708472624.|-| SeatNumber| Номер места.| число. Пример: 21.|-| TariffType| Наименование тарифа.| Строка. Пример: ПОЛНЫЙ.|-| HasSeat| Занимает ли пассажир отдельное место.| Допустимые значения:<ul><li>true — с местом,</li><li>false — без места.</li></ul>|} <sup>*</sup> — Не включая верхний предел. Возраст ребенка определяется на день совершения поездки. <sup>**</sup> — Нижний и верхний пределы определяются видом сообщения:* от 5 до 10 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.* от 6 до 17 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.* от 4 до 12 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад. <sup>***</sup> — Верхний предел определяется видом сообщения:* до 5 лет — Внутригосударственное сообщение, а также международное сообщение со странами-участниками СНГ, Литовской, Латвийской, Эстонской Республиками, Республикой Абхазия.* до 6 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Россия-Финляндия.* до 4 лет — Международное сообщение в дальнем зарубежье по глобальным ценам. Направление Восток-Запад. '''Элемент Passenger'''{| style="width: 800px" td class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width=col1"300" | Описание! scope="col" width="300" | Допустимые значения|-| trainNumber| Номер поезда.| Строка. Пример: 098ХА.|-| trainName| Имя фирменного поезда. Приходит от поставщика.| Строка. Пример: Россия.|-| departureStation| Станция отправления пассажира.| Строка. Пример: МОСКВА КАЗ.|-| arrivalStation| Станция прибытия пассажира.| Строка. Пример: КАЗАНЬ ПАС.|-| trainCategory| Тип поезда.| Число. Пример: 1.<br/>Допустимые значения:<ul><li>0 — неизвестный тип поезда</li><li>1 — скорый поезд</li><li>2 — фирменный поезд</li><li>3 — скоростной поезд</li><li>4 — фирменный скоростной поезд</li></ul>|-| beginStation| Начальная станция в маршруте поезда.| Строка. Пример: Казань|-| endStation| Конечная станция в маршруте поезда.| Строка. Пример: Москва|-| startDate| Дата и время отправления со станции отправления пассажира.| Дата и время. Пример: 2014-03-06 00:15:00.|-| endDate| Дата и время прибытия со станции отправления пассажира.| Дата и время. Пример: 2014-03-06 13:33:00. |-| timeInRoad| Время в пути от станции отправления до станции прибытия пассажира.| Число (секунд). Пример: 47880.|-| carNumber| Номер вагона.| Число. Пример: 7.|-| carType| Тип вагона.| Число. Пример: 1.<br/>Допустимые значения:<ul><li>1 - общий вагон</li><li>2 - сидячий вагон</li><li>3 - плацкартада</litd><li>4 - купе</li><li>5 - люкс</li><li>6 - мягкий</li><li>7 - неизвестный тип</li></ul>|-| choosenSeats| Элемент описывает количество нижних, нижних боковых, верхних, верхних боковых мест.| Элементы type.|-| choosenRange| Выбранный диапазон мест в вагоне.| Элементы start, end.|-| serviceClass| Описание услуг. Приходит от поставщика.| Текст. Пример: В стоимость входит - постельное белье. Наличие установки кондиционирования воздуха не гарантировано.|} '''Элемент type'''{| style="width: 800px" td class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width=col2"300" | Описание! scope="col" width="300" | Допустимые значения|-| lower| Количество нижних мест.| Число. Пример: 1.|-| upper| Количество верхних мест.| Число. Пример: 0.|-| lower_side| Количество нижних боковых мест.| Число. Пример: 1.|-| upper_side| Количество верхних боковых мест.| Число. Пример: 1.|-| undefined| Количество мест неопределенного типа.| Число. Пример: 0.|} '''Элемент choosenRange'''{| style="width: 800px" class="wikitable"|-! scope="col" width="200" | Элемент! scope="col" width="300" | Описание! scope="col" width="300" | Допустимые значения|-| start| Начало выбранного диапазон мест в вагоне<sup>*сложный</sup>.| Число. Пример: 4.|-| end| Конец выбранного диапазон мест в вагоне<suptd>*</sup>.| Число. Пример: 17.|} <sup>*</sup> — Если диапазон не был зада пользователем на этапе выбора мест, то поля start и end будут содержать нули. </div></div> === Пакетный экспорт заказов по категориям в формате Nemo ===Сервис выгрузки заказов позволяет экспортировать интересующие выборки по заказам в формате XML. Например, можно выбрать все заказы по дате бронирования и получить информацию по ним в XML-виде. ==== Экспорт заказов под авторизованным пользователем (в личном кабинете) ====[[Файл:Экспортировать_в_XML_(ЛК).png|400px|thumb|right|Фильтры пакетного экспорта заказов в личном кабинете]]Порядок пользования сервисом:# Перейти в личный кабинет# В адресной строке браузера к текущему адресу дописать параметр '''''&exportxml'''''. Должен получиться адрес вида: <syntaxhighlight langtd class="text" enclose=col3"div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0; width: 800px;">http://DOMAIN/index.php?go=poffice/table&exportxml</syntaxhighlight># После обновления страницы под блоком фильтров должна появиться кнопка '''«Экспортировать в XML»'''. При ее нажатии на странице появляется предложение сохранить в XML-файл выборку отфильтрованных заказов. Выгружаются только заказы выбранного пользователя/компании с учетом примененных параметров фильтра. Пользователь может произвести выгрузку только своих заказов. === Пакетный экспорт заказов по категориям в формате СОФИ ===Для использования выгрузки заказов в формате СОФИ у агентства должен быть включен модуль "Выгрузка заказов Софи" и заданы настройки:* "Тип выгрузки СОФИ" должен иметь значение "Выгрузка заказов СОФИ" или должна быть включена настройка "Выгрузка одновременно и Nemo, и Софи",* Должен быть указан "Url скрипта для выгрузки в формате СОФИ",* Должен быть указан "Код сайта в системе СОФИ". Выгрузка конкретного заказа: http://DOMAIN/booking__sofi_export_bookings&booking_id=123456 где booking_id — номер заказа в системе Немо. Выгрузка заказов забронированных за определенный период: http://DOMAIN/booking__sofi_export_bookings&date_begin=01.01.2014&date_end=01.01.2015 где [date_begin; date_end] — период бронирования заказа (забронированные заказы с датой бронирования совпадающей с началом/окончанием периода, заданного в запросе, попадают в экспорт), формат — дд.мм.гггг. ==Фиксация оплаты внешним запросом==!!! не нашел, есть просто фиксация оплаты, но это вроде немного не то !!! ==API универсального платежного шлюза==!!! сказано спросить у КШ, я спросил, у него нет информации !!! == API Синхронизации пользователей и субагентов ==Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей. Модуль является компонентом, включаемым и отключаемым из административной части.=== Авторизация B2B-пользователей === Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий [[пароль]]. Механизм авторизации работает следующим образом: 1.Система пытается авторизовать пользователя через собственную службу авторизации.2.В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур».3.В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля. Регистрация неудачных попыток входа производится только в двух случаях:*Компонент взаимодействия выключен.*Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней). Для сторонней авторизации пользователей в системе Nemo внешняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo на странице конфигурации интеграции с внешней системой. Для импортированных пользователей в Nemo имеется поле «Идентификатор внешней системы», который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, Контейнер для пользователей — номеру пользователя в «САМО-туре». Для пользователей, имеющих какое-либо значение в поле «идентификатор во внешней системе», запрещен функционал смены пароля или его восстановления по электронной почте. Пример запросов и ответов на авторизацию:  '''Request'''<pre><?xml version="1.0" encoding="utf-8"?>тарифов<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"td> <soap12:Body> <getAuthorization xmlns="http://tempuri.org/"> <login>string</login> <pass>string</pass> </getAuthorization> </soap12:Body></soap12:Envelope></pre> '''Response'''<pre><?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <getAuthorizationResponse xmlns="http://tempuri.org/"> <getAuthorizationResult> <session_id>string</session_id> <user_id>string</user_id> <login>string</login> <status>string</status> </getAuthorizationResult> </getAuthorizationResponse> </soap12:Body></soap12:Envelope></pre> Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»: *login (строка) - введенный пользователем логин*pass (строка) - введенный пользователем пароль Функция должна отдавать системе конструкцию getAuthorizationResponse: *session_id (строка) - пустое значение*user_id (строка) - идентификатор менеджера в системе «САМО-тур»*login (строка) - логин пользователя (для контроля)*status (строка) - может иметь значения:1. adm - администратор2. mgr - менеджер3. usr - пользователь (возвращается всегда это значение) === Импорт и синхронизация учетных записей === Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo, с ключом авторизации, определенным в Nemo в административной части модуля. Передаваемые элементы с описанием учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления, соответственно. В административной части модуля в Nemo задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым. Скрипт получает данные об обновлении и добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов. Описание передаваемых в Nemo XML-документов: <pre><?xml version="1.0" encoding="UTF-8" ?><changes key="ключ_авторизации"> <accounts> - список изменений по аккаунтам пользователей <item id=3 partnerId=10 action="update" admin="1"> <login>Логин пользователя</login> </item> <item id=6 partnerId=15 action="update"> ... </item> <item id=9 partnerId=30 action="delete" /> </accounts> <partners> - список изменений по партнерам <item id=140 action="update"> <name>Название агентства</name> <ofname>Официальное Название агентства</ofname> <phone>Телефон</phone> <tax>Форма налогообложения</tax> <group>123</group> <code>ABCD</item> </partners></changes></code></pre> При импорте информации об агентствах будут возвращаться следующие значения:  <table border="1"tr> <tr class="row0" bgcolor="#CCCCCCrow85"> <th td class="col0">Поле во внешней системе Tariff</thtd><th td class="col1"> Путь к элементу xml да</thtd><th td class="col2"> Тип данных сложный</thtd><th td class="col3"> Сопоставляемое поле в Nemo </th><th class="col4"> Примечание Контейнер для одного тарифа</thtd>
</tr>
<tr class="row1row86"> <td class="col0">Идентификатор партнераCode</td><td class="col1">/changes/partners/item[@id]да</td><td class="col2 leftalign">Целое число строка</td><td class="col3 leftalign">Идентификатор во внешней системе для менеджера / администратора </td><td class="col4">Код тарифа</td>
</tr>
<tr class="row2row87"> <td class="col0">Название юридического лицаSegNum</td><td class="col1">/changes/partners/item/ofnameда</td><td class="col2">Строкачисло</td><td class="col3">Полное официальное название юридического лица </td><td class="col4">Необходимо Номер сегмента для которого применяется тариф, если тариф применяется для выписки счетов юридическими лицамивсех сегментов, то возвращается 0.</td>
</tr>
<tr class="row3row88"> <td class="col0">Сокращенное названиеFareCalc</td><td class="col1">/changes/partners/item/nameнет</td><td class="col2">Строкастрока</td><td class="col3 leftalign">Имя агентства </td><td class="col4">Строка расчёта цены</td>
</tr>
<tr class="row4row89"> <td class="col0">Код агентстваLastTicketDateTime</td><td class="col1">/changes/partners/item/codeда</td><td class="col2">Строкастрока</td><td class="col3">Используется при создании логина администратора</td><td class="col4">Дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС. Если бронирование не будет аннулировано или выписано до этого времени, то могут быть применены штрафы.</td>
</tr>
<tr class="row5">
<td class="col0">Номер группы в самотуре</td><td class="col1">/changes/partners/item/group</td><td class="col2">Целое число, либо пусто</td><td class="col3 leftalign">На основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo </td><td class="col4"></td>
</tr>
<tr class="row6">
<td class="col0">Форма налогообложения</td><td class="col1">/changes/partners/item/tax</td><td class="col2">Целое число, равное идентификатору во внешней системе</td><td class="col3"></td><td class="col4"></td>
</tr>
</table>
</div>
</div>
Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если [[агентство]] не найдено==API Отелей=='''Агентский API Отелей''' - система, то создается новоекоторая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, для него создается менеджер (админ) с логином ABCD-1234уникальной информации об отеле, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системеполучение статической информации. Подробнее можно узнать в нашей специальной статье [http://support. Пароль генерируется случайный и криптостойкийnemo.travel/ru/%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D1%81%D0%BA%D0%B8%D0%B9_API_%D0%9E%D1%82%D0%B5%D0%BB%D0%B5%D0%B9 Агентский АПИ отелей]
Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился буквенный код агентства, то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля:
<table border="1">
<tr class="row0" bgcolor="#CCCCCC">
<th class="col0">Поле во внешней системе</th><th class="col1">Путь к элементу xml</th><th class="col2">Тип данных</th><th class="col3">Сопоставляемое поле в Nemo</th><th class="col4">Примечание</th>
</tr> <tr class="row1"> <td class="col0">Идентификатор пользователя</td><td classВыгрузки статистики продаж через API (Метапоиск)="col1">/changes/accounts/item[@id]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы</td><td class="col4">Храним как дополнительное поле </td> </tr> <tr class="row2"> <td class="col0">Идентификатор партнера</td><td class="col1">/changes/accounts/item[@partnerId]</td><td class="col2">Целое число</td><td class="col3">Идентификатор внешней системы менеджера агентства</td><td class="col4"></td>
</tr> <tr class="row3"> <td class="col0">Логин</td><td class="col1">/changes/accounts/item/login</td><td class="col2">Строка</td><td class="col3">Логин пользователя</td><td class="col4"></td> </tr> <tr class="row4"> <td class="col0">Администратор</td><td class="col1">/changes/accounts/item[@admin]</td><td class="col2">0 - нет'''Метапоисковая система''' (метапоисковая машина, 1 - да</td><td class="col3 leftalign">Эксперт по бронированию </td><td class="col4"></td>метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.
В разделе статистики заказов из метапоисков можно получить данные по статистике метапоиска (по источнику переходов модуля метрики) </tru>за определенный период бронирования заказов</tableu>в виде файла данных в формате XML.
Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найденМожно получить список заказов с их статусом (забронирован, то создается новый. Пароль генерируется случайный и криптостойкийвыписан, аннулирован), сделанных через метапоисковую систему.
Если Подробнее можно узнать в статье посвященной взаимодействию с метопоисковиками [[пользовательВзаимодействие с метапоисковиками]] найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само].
<pre><item id==Выгрузка информации о заказах =='''Выгрузка заказов''' — это экспорт данных заказа или заказов для различных компонентов системы Nemo. Модуль позволяет внешней системе получать данные по заказам для дальнейшей обработки. Подробнее о процессе выгрузки, настройках, форматах выгрузки для различных компонент можно прочитать в статье [[идентификаторВыгрузка]] action="delete" /></pre>
=== Таблица сопоставлений групп =API Синхронизации пользователей и субагентов ==Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.Модуль является компонентом, включаемым и отключаемым из административной части.
В административной части Nemo надо создать отдельную страницуО механизме авторизации B2B-пользователей, на которой синхронизации учетных записей можно сопоставить имеющиеся прочитать в статье [[Пользователь#Группы в Nemo|группы в NemoСинхронизация пользователей]] номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.
==API Кросс­авторизации==
'''Авторизация пользователей из внешних систем''' — Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
</div></div>
==Передача параметров в форму поиска (FastSearch)==
==Передача параметров в форму поиска==
{{Contract}}
В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
=== Применение ===Эта технология может использоватся к примеру для формирования ссылок с баннеров, при клике на которые пользователь попадает на форму, на которой уже могут быть заполнены пункты назначения, даты, количество пассажиров Примеры FastSearch запросов и прочие параметры. Также, при указании всех необходимых параметров, пользователя можно перебрасывать сразу на процесс поиска авиабилетов с указанными критериями. Для использования заполнения формы из URL следует включить опцию: '''Администрирование''' → '''Настройки системы''' → '''''Включить используемые переменные подробно описаны в статье [[FastSearch (передачу - передача параметров поиска)''''' После этого можно использовать ссылки на в форму поиска вида <pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=BER&departure_date=21.10.2009&adults=1&children=0&input_vendors=SU,PS&param_by_get=on</pre>]]
=== Переменные FastSearch ===Имена полей - такие так же как имена инпутов на поисковой форме. Следите за тем, чтобы значения соответствовали установленным в настройках ограничениям. Переменные, которые предполагают в качестве значения "true" можно просто не включать в запрос, чтобы их логика не отработала. ==== Форма поиска ====Чтобы перенаправить пользователя на страницу с заполненными параметрами поиска, необходимо указать get-параметр '''&param_by_get=on''', иначе сработают стандартные предустановки полей формы поиска. ==== Процесс поиска ====Если вы указываете все необходимые для поиска параметры, то работает и для того чтобы отправить пользователя сразу на результаты поискаотелей, нужно указать get-параметр '''&fast_search=on'''. ==== Маршрут «В одну сторону» и «Туда и обратно» ===={| style="width: 800px;" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" | Допустимые значения|-| Тип маршрута| trip_type| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | OW| В одну сторону|-| RT| Туда и обратно|-| CR| Сложный маршрут|} |-| Пункт вылета| out_iata| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | MOW| Код аэропорта ИАТА|} |-| Пункт прилета| in_iata| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | LED| Код аэропорта ИАТА|} |-| Дата вылета| departure_date| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 25.10.2013| Дата в формате ДД.ММ.ГГГГ|} |-| Дата обратного вылета| back_departure_date| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 27.10.2013| Дата в формате ДД.ММ.ГГГГ|} |-| Время вылета| prefered_departure_type| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | not_important| Любое время|-| morning| Утром|-| afternoon| Днем|-| evening| Вечером|-| night| Ночью|} |-| Время обратного вылета| prefered_back_departure_type| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | not_important| Любое время|-| morning| Утром|-| afternoon| Днем|-| evening| Вечером|-| night| Ночью|} |-| Поиск только среди прямых рейсов ("Без пересадок")| direct| true|} ===== Дополнительные параметры ====={| style="width: 800px" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" | Допустимые значения|-| Нижнее ограничение по цене по умолчанию| money_from| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 0| Целое число большее либо равное 0|} |-| Верхнее ограничение по цене по умолчанию| money_to| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 10000| Целое число большее 0|} |-| Поиск подробности в окружных датах| district_date| true|-| Диапазон соседних дат +(-) статье [дней]| date_range| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее [1..3]|} |-| Поиск по соседним аэропортам| district_airport| true|-| Класс обслуживания| class| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| econom| Перелет эконом-классом|-| business| Перелет бизнес-классом|-| first| Перелет первым-классом|} |-| Фильтр по авиакомпании | input_vendors| style="padding: 0;" |  {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | SU,PS| Коды авиакомпании ИАТА через запятую без пробелов|} |-| Сортировка| sort| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | price| По стоимости|-| out_date| По расписанию|-| company| По авиакомпании|-| fltduration| По длительности перелёта|} |} ==== Сложный маршрут ====<span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данные переменные применимы только для сложного маршрута ('''trip_type=CR''').</span> '''[X]''' - номера отдельных перелетов. Нумерация начинается с 0, что означает первый перелет.  Максимальное количество сегментов Fast Search для сложного маршрута определяется одноименной настройкой в разделе '''Авиабилеты ⇨ Поиск ⇨ Ограничения поиска'''.  {| style="width: 800px;" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" colspan="2" | Допустимые значения|-| Пункты вылета| cr_iata[0]<br/>cr_iata[1]<br/>...<br/>cr_iata[8]| width="80" | MOW| Код аэропорта ИАТА|-| Пункты прилета| cr_back_iata[0]<br/>cr_back_iata[1]<br/>...<br/>cr_back_iata[8]| width="80" | LED| Код аэропорта ИАТА|-| Дата вылета| cr_date[0]<br/>cr_date[1]<br/>...<br/>cr_date[8]| width="80" | 25.10.2013 | Дата в формате ДД.ММ.ГГГГ |-| Время вылета| cr_pref_departure[0]<br/>cr_pref_departure[1]<br/>...<br/>cr_pref_departure[8]| colspan="2" style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | not_important| Любое время|-| morning| Утром|-| afternoon| Днем|-| evening| Вечером|-| night| Ночью|} |-| Класс обслуживания| cr_class[0отелей]<br/>cr_class[1]<br/>...<br/>cr_class[8]| colspan="2" style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| econom| Перелет эконом-классом|-| business| Перелет бизнес-классом|-| first| Перелет первым классом|} |-| Окружные аэропорты (±XX км) | cr_district_airport[0]<br/>cr_district_airport[1]<br/>...<br/>cr_district_airport[8]| colspan="2" | true|} ==== Пассажиры ===={| style="width: 800px" class="wikitable"|-! scope="col" width="300" | Элемент! scope="col" width="250" | Переменная! scope="col" width="250" | Допустимые значения|-| Взрослых от 12 лет| adults| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Детей от 2 до 12 лет| children| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Младенцев до 2 лет| infants| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Младенцев с местом до 2 лет| infants_seat| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0|} |-| Молодых от 12 до 24 лет <br/>| youths| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0<br/><span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данный параметр доступен только в новой базовой теме.</span>|} |-| Пожилых от 65 лет| seniors| style="padding: 0;" | {| style="width: 257px; height: 100%; margin: -1px;" class="wikitable"|-| width="80" | 1| Целое число большее либо равное 0<br/><span style="font-size: large; color: rgb(255, 0, 0);">!&nbsp;</span><span style="background-color: rgb(255, 240, 245);">&nbsp;Данный параметр доступен только в новой базовой теме.</span>|} |} ==== Примеры FastSearch запросов ==== <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''В одну сторону (простой)'''</u><div class="mw-collapsible-content">'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2&param_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2&param_by_get=on&fast_search=on</pre></div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''В одну сторону (с фильтрами по авиакомпаниям)'''</u><div class="mw-collapsible-content">'''Рейс в одну сторону из Москвы в Париж, дата вылета 25.10.2013, Пассажиры: пожилых - 2, Авиакомпании: Аэрофлот - Российские авиалинии, Международные Авиалинии Украины'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&seniors=2&input_vendors=SU,PS&param_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&seniors=2&input_vendors=SU,PS&param_by_get=on&fast_search=on</pre></div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''Туда-обратно'''</u><div class="mw-collapsible-content">'''Рейсы туда-обратно Москва ↔ Париж, дата вылета: 25.10.2013, обратно: 27.10.2013, класс перелета: Эконом, Пассажиры: взрослых - 2 младенцев - 1'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&back_departure_date=27.10.2013&class=econom&adults=2&infants=1&param_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=RT&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&back_departure_date=27.10.2013&class=econom&adults=2&infants=1&param_by_get=on&fast_search=on</pre></div></div> <div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''Сложный маршрут'''</u><div class="mw-collapsible-content">'''из Москвы в Париж, дата вылета 25.10.2013,'''<br/>'''из Парижа в Санкт-Петербург, дата вылета 26.10.2013,'''<br/>'''из Санкт-Петербурга в Москву, дата вылета 29.10.2013,'''<br/>'''1 взрослый'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=CR&cr_iata[0]=MOW&cr_back_iata[0]=PAR&cr_date[0]=25.10.2013&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013&adults=1&param_by_get=on</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=CR&cr_iata[0]=MOW&cr_back_iata[0]=PAR&cr_date[0]=25.10.2013&cr_iata[1]=PAR&cr_back_iata[1]=LED&cr_date[1]=26.10.2013&cr_iata[2]=LED&cr_back_iata[2]=MOW&cr_date[2]=29.10.2013&adults=1&param_by_get=on&fast_search=on</pre></div></div> === Взаимодействие FastSearch и Метрики ===Для того, чтобы переход был зарегистрирован системой как переход с определенного источника, необходимо передать в запросе дополнительный параметр utm_source (Metrics Session ID). Например:<pre>http://SITEMANE/?(some_parameters=vals&)utm_source=source_alias</pre>где source_alias - алиас источника переходов. [[Модуль метрики | Дополнительная информация по использованию модуля Метрики]]. ==== Пример FastSearch запроса с параметром для модуля Метрики ====<div class="toccolours mw-collapsible mw-collapsed" style="width:800px"><u>'''FastSearch (с учетом источника перехода для модуля Метрики)'''</u><div class="mw-collapsible-content">'''Рейс в одну сторону из Москвы в Париж, дата вылета: 25.10.2013, без пересадок, 1 взрослый (с учетом источника перехода для модуля Метрики).'''* '''''форма поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2&param_by_get=on&utm_source=source_alias</pre>* '''''процесс поиска'''''<pre>http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=PAR&departure_date=25.10.2013&direct=true&adults=2&param_by_get=on&fast_search=on&utm_source=source_alias</pre></div></div>
<!-- Т.к. это внутренний формат обмена данными между Немо и одним клиентом, то данную инфу скроем в комментарии
==Проверка в сторонней системе возможности тикетинга==
При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, то в ответе будет
<pre><m:Opportunity>Да</m:Opportunity></pre>
Пример запроса "GetDebtCounterparty"
</pre>
</div></div>
 
-->
1382
правки
'