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

Изменения

Веб-служба выписки

6369 байт добавлено, 17:09, 20 сентября 2022
Информация
{{Attention|В системе реализован усовершенствованный API-проект «Nemo Connect», настоятельно рекомендуем подключаться по схеме, описанной в документации по [http://docs.nemo.travel/ ссылке]}}
 
[[Категория:Интеграция]]
[[Категория:Агентский API]]
<!-- -->
== Информация ==
Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета.
Как правило для выписки билета достаточно чтобы у заказа был статус "Оплачено"«Оплачено». При включенной опции '''''«Для {{Setting|Для успешных бронирований производить оформление: автоматически после изменения статуса на "Оплачено"''''' «Оплачено»}} из раздела '''«Заказы»''' ⇨ '''«Настройки бронирования»Для техподдержки → Устаревшие настройки → Настройки бронирования''' билет будет автоматически выписан после оплаты. Однако, это не является обязательным условиемтолько для пользователей, так как реализован дополнительный функционал, предоставляющий имеется возможность получения выписки билета, не требующей оплаты, для этого необходимо чтобы у АПИ пользователя были соответствующие права. Такая опция К примеру, АПИ учётка должна быть заведена на менеджера агентства. Дополнительно была реализована настройкой '''''«Допустимые ip адреса»''''' настройка {{Setting|Допустимые IP адреса}} в разделе '''''«Администрирование»''' ⇨ '''«Веб-сервисы»''Настройки системы → Интеграция → Nemo 1.0 (SOAP API)''', определяющей определяющая диапазон ipIP-адресов для дополнительной защиты учётных записей, для которых будет доступно получение выписки под которыми происходит выписка билета без оплаты или фиксации оплаты. IP-адреса имеют следующий допустимый формат: <syntaxhighlight lang="text" enclose="none" style="font-size: 1em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">125.125.25.5/8</syntaxhighlight>, то есть возможно задавать с маской подсети. Выполнение запроса Ticketing без оплаты возможно только при работе под менеджером головного агентства, либо в случае использования значения "CC" в элементе PassengerFops. {{Attention|При этом если диапазон допустимых ip-адресов отсутствии в нашей системе данных о локаторе брони в системе авиакомпании операция выписки невозможна. Поэтому в ответе на запрос Ticketing может возвращаться ошибка вида «Запрошенная операция не заданразрешена для данного объекта».В случае отсутствия на стороне GDS данных о локаторе брони в системе авиакомпании, то выписка билетав параметре Segments.Segment.SupplierCode в ответе на запрос BookFlight будет возвращено пустое значение. В этом случае необходимо произвести отправку запроса [[Дополнительные_запросы_АПИ_авиабилетов#.D0.97.D0.B0.D0.BF.D1.80.D0.BE.D1.81_.D0.BD.D0.B0_.D0.BE.D0.B1.D0.BD.D0.BE.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B7.D0.B0.D0.BA.D0.B0.D0.B7.D0.B0 | UpdateBook]] несколько раз, пока на стороне GDS информация не требующая оплатыбудет получена о локаторе брони в системе авиакомпании. После этого наша система получит от GDS данное значение. Запрос выписки билетов может быть отправлен только после того, как в параметре Segments.Segment.SupplierCode в ответе от Агентского API Nemo 1 будет допустима всемполучено ненулевое значение.}}
В Nemo 2.0 {{NameProject2}} в агентский сервис (интерфейс к серверу бронирования) добавлены дополнительные настройки для выписки авиабилетов. В новой версии АПИ позволяет:
* сообщать ВП (валидирующего перевозчика) по данной комбинации;
* сообщать комиссию по данной комбинации;
* сообщать эндорсменты по данной комбинации;
* принимать запрос на тикетинг;
* проверять наличие брони в ГДСГРС;
* синхронизировать бронь;
* выписывать билет;
== Общий формат запроса / ответа выписки ==
Данный запрос запускается после оплаты заказа, может быть запущен как в ручном режиме — пользователем, у которого есть на это права, так и автоматически. Выписать неоплаченный не оплаченный заказ через Nemo возможности нет{{NameSystem}} можно только с определенный IP-адресов, список которых настраивается в разделе настроек, описанном выше. При запуске запроса на выписку также запускается процесс обновления заказа, в ходе которого сверяется цена и остальные параметры заказа, а также проверяется его актуальность. Заказы, с истекшим таймлимитом выписать нельзя.
WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=Ticketing
<Ticketing>
<BookID>?</BookID>
<!--BookID — Id заказа в системе Nemonemo.travel-->
<ValCompany>?</ValCompany>
<!--ValCompany — валидирующий перевозчик (тот кто выписывает билет)-->
<PassengerFop>
<PassengerId>?</PassengerId>
<!--PassengerId - порядковый номер пассажира в перелете-->
<Fops>
<!--Zero or more repetitions:-->
<Fop>
<Type>?</Type>
<!--Type - форма оплаты: CC (по кредитной карте) или СА (наличными)-->
<Money Currency="?">?</Money>
<!--Money - сумма платежа--> <!--Currency - код валюты-->
<VendorCode>?</VendorCode>
<!--VendorCode - код типа карты: (например, VI - Visa, MC - MasterCard, AX - American Express DC - DCL, CA - EURO, IK - EURO, JB - JCB, JC - JCB, BA - Visa)-->
<Number>?</Number>
<!--Number - номер карты-->
<ExpireDate>?</ExpireDate>
<!--ExpireDate - срок действия карты, например 12.2020-->
<ManualApprovalCode>?</ManualApprovalCode>
<!--ManualApprovalCode - Код преавторизации транзакции, по которой были заблокированы средства для выписки. Это НЕ CVV код. Необязательный. Если не указан, то он будет автоматически получен нашей системой через GDSГРС/-->
</Fop>
</Fops>
<DataItem>
<Type>Remark</Type>
<!--Type - тип контента в данном блоке, например: Meal, Remark-->
<Remark>
<Type>?</Type>
<!--Type - тип ремарки, например: General, Historical-->
<Text>?</Text>
<!--Text - содержание ремарки-->
</Remark>
</DataItem>
<Source>
<ClientId>?</ClientId>
<!--ClientId — ID клиента в системе Nemonemo.travel. Можно посмотреть/добавить в разделе "Администрирование" ⇨ "Веб-служба«Настройки системы» → «Интеграция» → «Nemo 1. Авторизация"0 (SOAP API)».-->
<APIKey>?</APIKey>
<!--APIKey — секретный ключ доступа к API Nemonemo.travel. Можно посмотреть/добавить в разделе "Администрирование" ⇨ "Веб-служба«Настройки системы» → «Интеграция» → «Nemo 1. Авторизация"0 (SOAP API)».-->
<Language>?</Language>
<!--Language — язык, например: RU-->
<Response>
<Ticketing ID="?" Status="?" Code="?">
<!--ID — Id брони в системе Nemonemo.travel, целое число, обязательный-->
<!--Status — индикатор состояния брони, возможные значения:
booked — забронировано,
<!--QueryPlace — положение брони в очереди, Number — номер брони в очереди-->
<Flight FlightId="?">
<!--FlightId — Id перелёта в системе Nemonemo.travel-->
<WebService>?</WebService>
<!--WebService — поставщик перелёта-->
<!--SegNum — номер сегмента в перелёте-->
<!--SegGroupNum – номер плеча перелёта-->
<SupplierCode>?</SupplierCode>
<!--SupplierCode – номер заказа в системе АК-->
<DepAirp CodeType="IATA">?</DepAirp>
<!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва
<!--FlightNumber — номер рейса-->
<AircraftName>?</AircraftName>
<!--AircraftName - наименование воздушного судна-->
<AircraftType>?</AircraftType>
<!--AircraftType — тип воздушного судна, код-->
<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 — тип пассажира, соответстует типу тарифа в PricingInfo -->
<Value>?</Value>
<!--Value — количество-->
<Measurement>?</Measurement>
<!--Measurement — мера измерения, может принимать значения: kg — килограмм, pc — багажное место, lb — фунт-->
</BaggageAllowance>
</BaggageAllowances>
</Segment>
</Segments>
<!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно-->
<PassengerFare Type="?" Quantity="?">
<!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети, INF — младенцы, INS — младенцы с местомтарифа-->
<!--Quantity — количество пассажиров данного типа-->
<BaseFare Currency="?" Amount="?"/>
<!--FareCalc — строка расчёта цены-->
<LastTicketDateTime>?</LastTicketDateTime>
<!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС. Если включена настройка "Применение временной зоны - Для расчетов таймлимитов в агентском API", дата и время таймлимита будут переведены во временную зону пользователя. При отключенной настройке по умолчанию дата и время будут в Московском часовом поясе.-->
</PassengerFare>
</PricingInfo>
<Transaction>
<Id>?</Id>
<!--Id - номер транзакции в Немо-->
<Status>?</Status>
<!--Status - статус транзакции-->
<GatewayName>?</GatewayName>
<!--GatewayName - название платежного шлюза-->
<MoneyPaid Currency="?">?</MoneyPaid>
<!--MoneyPaid - сумма оплаты--> <!--Currency - валюта-->
<PaymentDateTime>?</PaymentDateTime>
<!--PaymentDateTime - дата и время оплаты-->
<CreateDateTime>?</CreateDateTime>
<!--CreateDateTime - дата и время создания платежной транзакции-->
<Description/>
</Transaction>
</PaymentTransactions>
<PaymentStatus>?</PaymentStatus>
<!--PaymentStatus - статус оплаты:
not_paid — не оплачено
partly_paid — оплачено, частично
<!--Num — порядковый номер пассажира, начинается с 1-->
<!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок (привязка ребёнка ко взрослому является опциональной)-->
<!--TravellerId — устаревший параметрактуализированный номер пассажира, не используетсякоторый возвращается в ответе на запрос бронирования и в дальнейшем ссылки на пассажиров даются на основании этого параметра-->
<Meal>?</Meal>
<!--Meal — код типа питания, возможные значения:
</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>
</Ticketing>
<Requisites/>
<RequestType xsi:nil="true"/>
<UserID xsi:nil="true"/>
<Errors xsi:nilError Code="true?">Сообщение об ошибке</Error>
</Response>
</ResponseBin>
</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%3DTicketing">
<SOAP-ENV:Body>
<ns1:TicketingResponse>
<ResponseBin>
<Error Code="E002205">Ошибка от поставщика.. UNABLE TO PROCESS - RETRY IN 15 MINUTES</Error>
</ResponseBin>
</ns1:TicketingResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
 
</syntaxhighlight>
</div>
<VoidTicket>
<BookID>?</BookID>
<!--BookID — Id брони в системе Nemonemo.travel, целое число-->
</VoidTicket>
</Request>
<Source>
<ClientId>?</ClientId>
<!--ClientId — ID клиента в системе Nemonemo.travel. Можно посмотреть/добавить в разделе "Администрирование" ⇨ "Веб-служба«Настройки системы» → «Интеграция» → «Nemo 1. Авторизация"0 (SOAP API)».-->
<APIKey>?</APIKey>
<!--APIKey — секретный ключ доступа к API Nemonemo.travel. Можно посмотреть/добавить в разделе "Администрирование" ⇨ "Веб-служба«Настройки системы» → «Интеграция» → «Nemo 1. Авторизация"0 (SOAP API)».-->
<Language>?</Language>
<!--Language — язык, например: RU-->
<Response>
<VoidTicket BookID="?">
<!--BookID — Id брони в системе Nemonemo.travel, целое число-->
<Result Success="?"/>
<!--Sucscess — результат отмены выписки, true или false-->
<RequestType xsi:nil="true"/>
<UserID xsi:nil="true"/>
<Errors xsi:nilError Code="true?">Сообщение об ошибке</Error>
</Response>
</ResponseBin>
== См. также ==
*[[Агентский АПИAPI Авиабилеты]]*[[Бронирование]] * [[Категория:ИнтеграцияДополнительные запросы АПИ авиабилетов]]
'