Изменения

Перейти к навигации Перейти к поиску

Веб-служба бронирования

3654 байта добавлено, 18:44, 6 мая 2019
Нет описания правки
{{Attention|В системе реализован усовершенствованный API-проект «Nemo Connect», настоятельно рекомендуем подключаться по схеме, описанной в документации по [http://docs.nemo.travel/ ссылке]}}
 
== Подключение ==
Получить доступ к результатам бронирования в данном сервисе можно через SOAP клиента. Для получения результата необходим параметр — «FlightId» — Id перелёта, для которого будет производится бронирование. WSDL находится по адресу: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=BookFlight.
== Общий формат запроса / ответа бронирования ==
<!--FlightId — Id перелёта в системе Nemo-->
<!--Optional:-->
<ValidatingCompanyBookId>?</ValidatingCompany> <!--необязательный--BookId> <!--ValidatingCompany BookId валидирующий перевозчик (тот кто выписывает билет)--> <!--Optional:--> <BookingCodes> <!--Zero or more repetitions:--> <BookingCode Code="?" SegNumber="?"/> <!--Code — код класса перелёта--> <!--SegNumber — номер сегмента Id заказа в системе Nemo, полученный в перелёте (начинаются с 1)ответе на запрос EmptyBook--> </BookingCodes>
<!--Optional:-->
<CurrencyCode>?</CurrencyCode> <!--необязательный-->
<!--CurrencyCode — код валюты-->
<!--Optional:-->
<TicketTimeLimit>?</TicketTimeLimit> <!--необязательный-->
<!--TicketTimeLimit — таймлимит на оплату, формат: ГГГГ-ММ-ДДTЧЧ:ММ:СС-->
<!--Optional:-->
<Agency Name="?"> <!--необязательный-->
<Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
<!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
CNN CLD — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
<!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
может быть контактным лицом, по умолчанию false-->
<!--Num — порядковый номер пассажира, начинается с 1-->
<!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок(привязка ребёнка ко взрослому является опциональной)--> <!--необязательный--> <!--TravellerId — устаревший параметрактуализированный номер пассажира, не используетсякоторый возвращается в ответе на запрос бронирования и в дальнейшем ссылки на пассажиров даются на основании этого параметра-->
<Meal>?</Meal> <!--необязательный-->
<!--Meal — код типа питания, возможные значения:
NONE — отсутствует
AVML — Азиатская вегетарианская кухня
BLML — Блюда щадящей диеты
</Telephone>
</ContactInfo>
<DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/> <!--необязательный-->
<!--DocType — тип документа, возможные значения:
Р P — Паспорт
A – Паспорт иностранца
С C — Внутренний гражданский паспорт
F – Документ заменяющий паспорт
М M — Воинское удостоверение
N – Сертификат натурализации(специфичный документ США)
T – Док.повторного въезда, паспорт беженца
V – Документ для пересечения границы F – Свидетельство о рождении (только для ГРС Сирена Трэвел, для других ГРС рекомендуется использовать тип документа P)-->
<!--DocNum — номер документа-->
<!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
<!--PostalCode — почтовый код-->
<!--CountryCode — код страны-->
<PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/> <!--необязательный--> <!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются--> <!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих--> <!--Location — положение места в ряде, возможные значения: W — у окна (Window) M — где-то в середине ряда (Middle) NPW — возле прохода (NearPassengerWay) NS — нет предпочтения (NotSpecified)--> <!--RowNumber — номер ряда--> <!--PlaceNumber — номер места--> <!--SegNumber — номер сегмента--> <DocStringFormats> <!--Zero or more repetitions:--> <DocStringFormat>?</DocStringFormat> <!--DocStringFormat — формат паспортной строки, возможные значения: DOCS — строка формата DOCS, FOID — строка формата FOID--> </DocStringFormats> </Traveller>
</Travellers>
<!--Optional:-->
<QueueNum>?</QueueNum> <!--необязательный-->
<!--QueueNum — номер очереди, в которую необходимо поместить бронирование-->
<DeviceId> <!--необязательный-->
<Type>?</Type>
<!--Token — Токен мобильного устройства-->
</DeviceId>
<Marker>?</Marker>
<!--Marker — Маркер пользователя-->
</BookFlight>
</Request>
<Currency>?</Currency>
<!-- CUrrency — валюта-->
<EndUserData>
<!--Блок с данными о конечном пользователе, необязательный, но необходим при при использовании запросов поиска и бронирования для поставщика TravelFusion-->
<EndUserIP>123.123.123.123</EndUserIP>
<!--IP адрес пользователя-->
<EndUserBrowserAgent>firefox</EndUserBrowserAgent>
<!--Браузер пользователя-->
<RequestOrigin>Russia-nemo.travel</RequestOrigin>
<!--Страна и домен, с которого пользователь совершает поиск/бронирование-->
</EndUserData>
</Source>
</RequestBin>
<QueryPlace xsi:nil="true"/>
<!--QueryPlace — положение брони в очереди, Number — номер брони в очереди-->
<IsPossibleToTicket>?</IsPossibleToTicket>
<!--IsPossibleToTicket — возможность провести выписку ПНРа, boolean-->
<Flight FlightId="?">
<!--FlightId — Id перелёта в системе Nemo-->
<!--SegNum — номер сегмента в перелёте-->
<!--SegGroupNum – номер плеча перелёта-->
<SupplierCode>?</SupplierCode>
<!--SupplierCode – номер заказа в системе АК-->
<DepAirp CodeType="IATA">?</DepAirp>
<!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва
<StopNum>?</StopNum>
<!--StopNum — количество остановок-->
<StopPoints>
<!--StopPoints — информация о технических остановках, если они есть-->
<StopPoint>
<AirportCode>?</AirportCode>
<!--AirportCode — код аэропорта остановки, трех символьный iata код-->
<UTC>?</UTC>
<!--UTC — сдвиг часового пояса аэропорта-->
<ArrDateTime>?</ArrDateTime>
<!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
<DepDateTime>?</DepDateTime>
<!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
</StopPoint>
</StopPoints>
<BookingCodes>
<BookingCode ClassType="?">
<ETicket>?</ETicket>
<!--ETicket — признак электронного билета, значения: true / false-->
<isCharter>?</isCharter>
<!--isCharter — признак чартерного перелета, значения: true / false-->
<BaggageAllowances>
<!--BaggageAllowances — информация о багаже-->
<BaggageAllowance>
<PassengerType>?</PassengerType>
<!--PassengerType — тип пассажира, возможные значения: ADT — взрослые, CNN — дети, INF — младенцы, INS — младенцы с местомсоответствует типу тарифа в PricingInfo -->
<Value>?</Value>
<!--Value — количество-->
<Measurement>?</Measurement>
<!--Measurement — мера измерения, может принимать значения: K kg — килограмм, PC pc — багажное место, PNDS lb — фунт-->
</BaggageAllowance>
</BaggageAllowances>
<!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно-->
<PassengerFare Type="?" Quantity="?">
<!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети, INF — младенцы, INS — младенцы с местомтарифа-->
<!--Quantity — количество пассажиров данного типа-->
<TravellerRef>
<!--TravellerRef — Ссылка на пассажиров, к которым относится данный тариф-->
<Ref>?</Ref>
<!--Ref — Номера пассажиров, к которым относится данный тариф-->
</TravellerRef>
<BaseFare Currency="?" Amount="?"/>
<!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены-->
<Tariff Code="?" SegNum="?"/>
<!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф-->
<FareFamilies>
<FullName>?</FullName>
<!--FullName — название тарифа-->
</FareFamilies>
</Tariffs>
<FareCalc>?</FareCalc>
<!--FareCalc — строка расчёта цены-->
<LastTicketDateTime>?</LastTicketDateTime>
<!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС. Если включена настройка "Применение временной зоны - Для расчетов таймлимитов в агентском API", дата и время таймлимита будут переведены во временную зону пользователя. При отключенной настройке по умолчанию дата и время будут в Московском часовом поясе.-->
</PassengerFare>
</PricingInfo>
<Commission/>
<Charges Currency="?">?</Charges>
<!--Charges — сборы, Currency — код валюты-->
<Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
<!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
CNN CLD — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
<!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
может быть контактным лицом, по умолчанию false-->
<!--Num — порядковый номер пассажира, начинается с 1-->
<!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок(привязка ребёнка ко взрослому является опциональной)--> <!--TravellerId — устаревший параметрактуализированный номер пассажира, не используетсякоторый возвращается в ответе на запрос бронирования и в дальнейшем ссылки на пассажиров даются на основании этого параметра-->
<Meal>?</Meal>
<!--Meal — код типа питания, возможные значения:
NONE — отсутствует
AVML — Азиатская вегетарианская кухня
BLML — Блюда щадящей диеты
<!--PostalCode — почтовый код-->
<!--CountryCode — код страны-->
<PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/>
<!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются-->
<!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих-->
<!--Location — положение места в ряде, возможные значения:
W — у окна (Window)
M — где-то в середине ряда (Middle)
NPW — возле прохода (NearPassengerWay)
NS — нет предпочтения (NotSpecified)-->
<!--RowNumber — номер ряда-->
<!--PlaceNumber — номер места-->
<!--SegNumber — номер сегмента-->
<DocStringFormats>
<!--Zero or more repetitions:-->
</Traveller>
</Travellers>
<AutoCancelDate>?</AutoCancelDate>
<!--AutoCancelDate — дата и время таймлимита автоаннуляции в формате ГГГГ-MM-ДДTЧЧ:ММ:СС определяемые по настройкам агентства-->
<TimeLimits>
<TicketingTimeLimit>?</TicketingTimeLimit>
<!--TicketingTimeLimit — Таймлимит на выписку в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
<PriceTimeLimit>?</PriceTimeLimit>
<!--PriceTimeLimit — Таймлимит цены из ГРС в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
<AdvancedPurchaseTimeLimit>?</AdvancedPurchaseTimeLimit>
<!--AdvancedPurchaseTimeLimit — Таймлимит цены из тарифных правил в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
<AgencyTimeLimit>?</AgencyTimeLimit>
<!--AgencyTimeLimit - Таймлимит по настройкам в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
</TimeLimits>
</BookFlight>
<Requisites/>
<RequestType xsi:nil="true"/>
<UserID xsi:nil="true"/>
<Errors> <Error Code="?"> <!--Code — код ошибки в системе Nemo--> <ServiceErrorMessage>?</ServiceErrorMessage> <!--ServiceErrorMessage — сообщение об ошибке полученное от веб-сервиса поставщика--> <Message>?</Message> <!--Message — сообщение Сообщение об ошибке от системы Nemo--> </Error> </Errors>
</Response>
</ResponseBin>
<BookFlight>
<FlightId>171430002</FlightId>
<BookingCodes> <!--Zero or more repetitions:--> <BookingCode Code="E" SegNumber="2"/> </BookingCodes> <Travellers>
<!--Zero or more repetitions:-->
<Traveller Type="ADT" IsContact="true" Num="1">
<Tax CurCode="RUB" TaxCode="QV" Amount="230"/>
</Taxes>
<Tariffs> <Tariff Code="EBSRT" SegNum="1"> <FareFamilies> <FullName>Бюджет-Эконом</FullName> </FareFamilies> </Tariff> <Tariff Code="EBSRT" SegNum="2"> <FareFamilies> <FullName>Бюджет-Эконом</FullName> </FareFamilies> </Tariff> </Tariffs>
<FareCalc>MOW SU X/BCN SU MAD225.45NUC225.45END ROE0.731857</FareCalc>
<LastTicketDateTime>2014-03-14T12:45:00</LastTicketDateTime>
</PassengerFare>
</PricingInfo>
<Commission Currency="RUB">0</Commission>
<Charges Currency="RUB">140.25</Charges>
<TotalPrice Currency="RUB">14165.25</TotalPrice>
</Traveller>
</Travellers>
<AutoCancelDate>2014-03-14T09:45:00</AutoCancelDate>
<TimeLimits>
<TicketingTimeLimit>2014-03-14T12:45:00</TicketingTimeLimit>
<PriceTimeLimit>2014-03-14T10:45:00</PriceTimeLimit>
<AdvancedPurchaseTimeLimit>2014-03-14T12:40:00</AdvancedPurchaseTimeLimit>
<AgencyTimeLimit>2014-03-14T09:45:00</AgencyTimeLimit>
</TimeLimits>
</BookFlight>
<Requisites/>
<Errors xsi:nil="true"/>
</Response>
</ResponseBin>
</ns1:BookFlightResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</syntaxhighlight>
</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://release.mlsd.ru/nemoflights/?version%3D1.0%26for%3DBookFlight">
<SOAP-ENV:Body>
<ns1:BookFlightResponse>
<ResponseBin>
<Error Code="E001936">Invalid Flight ID</Error>
</ResponseBin>
</ns1:BookFlightResponse>
== Общий формат запроса / ответа отмены бронирования ==
После бронирования, если не истек таймлимит , можно аннулировать сделанный заказ. Аннуляция заказа в Nemo может быть ручной (сделанной пользователем) и автоматической — по истечению таймлимита, установленного для заказа , система сама аннулирует заказ.
WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=CancelBook
<RequestType xsi:nil="true"/>
<UserID xsi:nil="true"/>
<Errors xsi:nilError Code="true?">Сообщение об ошибке</Error>
</Response>
</ResponseBin>
== См. также ==
*[[Агентский АПИAPI Авиабилеты]]
*[[Бронирование]]
[[Категория:Интеграция]]
[[Категория:Агентский API]]

Навигация

'