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

Изменения

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

8790 байт добавлено, 17:09, 20 сентября 2022
Информация
{{Attention|В системе реализован усовершенствованный API-проект «Nemo Connect», настоятельно рекомендуем подключаться по схеме, описанной в документации по [http://docs.nemo.travel/ ссылке]}}
 
[[Категория:Интеграция]]
[[Категория:Агентский API]]
<!-- -->
== Информация ==
Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета.
<span style="background-color:#fff0f5;"><span style="font-size:large;"><span style="color:#ff0000;">!</span></span> Как правило для выписки билета достаточно чтобы у заказа был статус "Оплачено"«Оплачено». При включенной опции '''''«Для {{Setting|Для успешных бронирований производить оформление: автоматически после изменения статуса на "Оплачено"»''''' «Оплачено»}} из раздела '''«Заказы»''' ⇨ '''«Настройки бронирования»Для техподдержки → Устаревшие настройки → Настройки бронирования''' билет будет автоматически выписан после оплаты. Однако, это является обязательным условием только для пользователей, имеется возможность получения выписки билета, не требующей оплаты, для этого необходимо чтобы у АПИ пользователя были соответствующие права. К примеру, АПИ учётка должна быть заведена на менеджера агентства.
Дополнительно была реализована настройка {{Setting|Допустимые IP адреса}} в разделе '''Настройки системы → Интеграция → Nemo 1.0 (SOAP API)''' , определяющая диапазон IP-адресов для дополнительной защиты учётных записей, под которыми происходит выписка билета без оплаты или фиксации оплаты. 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|При отсутствии в нашей системе данных о локаторе брони в системе авиакомпании операция выписки невозможна. Поэтому в ответе на запрос 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 21 будет получено ненулевое значение.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 код проверки подлинности карты платёжной системы, например. Необязательный. Если не указан, 123то он будет автоматически получен нашей системой через ГРС/-->
</Fop>
</Fops>
</PassengerFop>
</PassengerFops>
<DataItems>
<!--Zero or more repetitions:-->
<DataItem>
<Type>Remark</Type>
<!--Type — тип контента в данном блоке, например: Meal, Remark-->
<Remark>
<Type>?</Type>
<!--Type — тип ремарки, например: General, Historical-->
<Text>?</Text>
<!--Text — содержание ремарки-->
</Remark>
</DataItem>
</DataItems>
</Ticketing>
</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>
<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 — оплачено, частично
<Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
<!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
CNN — дети со взрослыми,UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
<!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
может быть контактным лицом, по умолчанию false-->
<!--Num — порядковый номер пассажира, начинается с 1-->
<!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок(привязка ребёнка ко взрослому является опциональной)--> <!--TravellerId — устаревший параметрактуализированный номер пассажира, не используетсякоторый возвращается в ответе на запрос бронирования и в дальнейшем ссылки на пассажиров даются на основании этого параметра-->
<Meal>?</Meal>
<!--Meal — код типа питания, возможные значения:
<!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
<!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)-->
<AcquiredDocuments Ticket TicketNum="?"> <!-- TicketNum — номер выписанного билета-->
<VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/>
<!--Num — номер визы-->
</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> </BookFlightTicketing>
<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>
<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 Авиабилеты]]*[[Бронирование]] * [[Категория:ИнтеграцияДополнительные запросы АПИ авиабилетов]]
'