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

Изменения

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

13 020 байт добавлено, 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 — валидирующий перевозчик (тот кто выписывает билет)-->
<!--Percent — комиссия в процентах-->
<!--CurrencyCode — код валюты комиссии-->
<PassengerFops>
<!--Zero or more repetitions:-->
<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 код. Необязательный. Если не указан, то он будет автоматически получен нашей системой через ГРС/-->
</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 — любой аэропорт в г.Москва
<MarkAirline>?</MarkAirline>
<!--MarkAirline — авиакомпания, продающая перелёт-->
<MarkAirlineName>?</MarkAirlineName>
<!--MarkAirlineName - полное наименование АК на кириллице-->
<FlightNumber>?</FlightNumber>
<!--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>
<CommissionCurrency="?">?</Commission>
<Charges Currency="?">?</Charges>
<!--Charges — сборы, Currency — код валюты-->
<!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат-->
<FareStored xsi:nil="true"/>
<PaymentTransactions>
<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 — оплачено, частично
fully_paid — оплачено, полностью-->
<Travellers>
<!--Zero or more repetitions:-->
<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)-->
<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 Авиабилеты]]*[[Бронирование]] * [[Категория:ИнтеграцияДополнительные запросы АПИ авиабилетов]]
'