Веб-служба выписки
Содержание
Информация
Агентский АПИ выписки позволяет определить валидирующего перевозчика и значение комиссии от авиакомпании для брони, а также запустить процедуру выписки билета.
Как правило для выписки билета достаточно чтобы у заказа был статус "Оплачено". При включенной опции «Для успешных бронирований производить оформление: автоматически после изменения статуса на "Оплачено" из раздела «Заказы» ⇨ «Настройки бронирования» билет будет автоматически выписан после оплаты. Однако, это не является обязательным условием, так как реализован дополнительный функционал, предоставляющий возможность получения выписки билета, не требующей оплаты. Такая опция реализована настройкой «Допустимые ip адреса» в разделе «Администрирование» ⇨ «Веб-сервисы», определяющей диапазон ip-адресов, для которых будет доступно получение выписки без оплаты. IP-адреса имеют следующий допустимый формат: 125.125.25.5/8, то есть возможно задавать с маской подсети. При этом если диапазон допустимых ip-адресов не задан, то выписка билета, не требующая оплаты, будет допустима всем.
В Nemo 2.0 в агентский сервис (интерфейс к серверу бронирования) добавлены дополнительные настройки для выписки авиабилетов. В новой версии АПИ позволяет:
- сообщать ВП (валидирующего перевозчика) по данной комбинации;
- сообщать комиссию по данной комбинации;
- сообщать эндорсменты по данной комбинации;
- принимать запрос на тикетинг;
- проверять наличие брони в ГДС;
- синхронизировать бронь;
- выписывать билет;
- передавать дополнительную информацию в ремарках;
- войдировать билет.
Общий формат запроса / ответа выписки
Данный запрос запускается после оплаты заказа, может быть запущен как в ручном режиме — пользователем, у которого есть на это права, так и автоматически. Выписать неоплаченный заказ через Nemo возможности нет. При запуске запроса на выписку также запускается процесс обновления заказа, в ходе которого сверяется цена и остальные параметры заказа, а также проверяется его актуальность. Заказы, с истекшим таймлимитом выписать нельзя.
WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=Ticketing
Запрос
1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DTicketing">
2 <soapenv:Header/>
3 <soapenv:Body>
4 <ver:Ticketing>
5 <RequestBin>
6 <Request>
7 <Ticketing>
8 <BookID>?</BookID>
9 <!--BookID — Id заказа в системе Nemo-->
10 <ValCompany>?</ValCompany>
11 <!--ValCompany — валидирующий перевозчик (тот кто выписывает билет)-->
12 <Comission Amount="?" Percent="?" CurrencyCode="?"/>
13 <!--Comission Amount — комиссии, указываются или в валюте, или в процентах, для валюты обязательным является
14 код валюты. Если указана и в валюте и в процентах, то у поставщика комиссия устанавливается в валюте-->
15 <!--Amount — комиссия в валюте-->
16 <!--Percent — комиссия в процентах-->
17 <!--CurrencyCode — код валюты комиссии-->
18 <PassengerFops>
19 <!--Zero or more repetitions:-->
20 <PassengerFop>
21 <PassengerId>?</PassengerId>
22 <!--PassengerId - порядковый номер пассажира в перелете-->
23 <Fops>
24 <!--Zero or more repetitions:-->
25 <Fop>
26 <Type>?</Type>
27 <!--Type - форма оплаты: CC (по кредитной карте) или СА (наличными)-->
28 <Money Currency="?">?</Money>
29 <!--Money - сумма платежа-->
30 <!--Currency - код валюты-->
31 <VendorCode>?</VendorCode>
32 <!--VendorCode - код типа карты: (например, VI - Visa,
33 MC - MasterCard,
34 AX - American Express
35 DC - DCL,
36 CA - EURO,
37 IK - EURO,
38 JB - JCB,
39 JC - JCB,
40 BA - Visa)-->
41 <Number>?</Number>
42 <!--Number - номер карты-->
43 <ExpireDate>?</ExpireDate>
44 <!--ExpireDate - срок действия карты, например 12.2020-->
45 <ManualApprovalCode>?</ManualApprovalCode>
46 <!--ManualApprovalCode - Код преавторизации транзакции, по которой были заблокированы средства для выписки. Это НЕ CVV код. Необязательный. Если не указан, то он будет автоматически получен нашей системой через GDS/-->
47 </Fop>
48 </Fops>
49 </PassengerFop>
50 </PassengerFops>
51 <DataItems>
52 <!--Zero or more repetitions:-->
53 <DataItem>
54 <Type>Remark</Type>
55 <!--Type - тип контента в данном блоке, например: Meal, Remark-->
56 <Remark>
57 <Type>?</Type>
58 <!--Type - тип ремарки, например: General, Historical-->
59 <Text>?</Text>
60 <!--Text - содержание ремарки-->
61 </Remark>
62 </DataItem>
63 </DataItems>
64 </Ticketing>
65 </Request>
66 <Source>
67 <ClientId>?</ClientId>
68 <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе
69 "Администрирование" ⇨ "Веб-служба. Авторизация".-->
70 <APIKey>?</APIKey>
71 <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе
72 "Администрирование" ⇨ "Веб-служба. Авторизация".-->
73 <Language>?</Language>
74 <!--Language — язык, например: RU-->
75 <Currency>?</Currency>
76 <!-- Currency — валюта, например: RUB, EUR-->
77 </Source>
78 </RequestBin>
79 </ver:Ticketing>
80 </soapenv:Body>
81 </soapenv:Envelope>
Ответ
1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DTicketing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2 <SOAP-ENV:Body>
3 <ns1:TicketingResponse>
4 <ResponseBin>
5 <Response>
6 <Ticketing ID="?" Status="?" Code="?">
7 <!--ID — Id брони в системе Nemo, целое число, обязательный-->
8 <!--Status — индикатор состояния брони, возможные значения:
9 booked — забронировано,
10 canceled — бронь отменена,
11 ticket — выписана
12 UNDEFINED — статус не определён-->
13 <!--Code — код брони в системе поставщика-->
14 <QueryPlace xsi:nil="true"/>
15 <!--QueryPlace — положение брони в очереди, Number — номер брони в очереди-->
16 <Flight FlightId="?">
17 <!--FlightId — Id перелёта в системе Nemo-->
18 <WebService>?</WebService>
19 <!--WebService — поставщик перелёта-->
20 <ValCompany>?</ValCompany>
21 <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA-->
22 <URL>?</URL>
23 <!--URL — ссылка на бронирование конкретного перелета-->
24 <Segments>
25 <Segment SegNum="?" SegGroupNum="?">
26 <!--SegNum — номер сегмента в перелёте-->
27 <!--SegGroupNum – номер плеча перелёта-->
28 <DepAirp CodeType="IATA">?</DepAirp>
29 <!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва
30 или SVO — Шереметьево-->
31 <DepTerminal>?</DepTerminal>
32 <!--DepTerminal — терминал пункта отправления, если пустое значение,
33 то в аэропорту всего 1 терминал-->
34 <ArrAirp CodeType="IATA">?</ArrAirp>
35 <!--ArrAirp — аэропорт прибытия-->
36 <ArrTerminal>?</ArrTerminal>
37 <!--ArrTerminal — терминал пункта прибытия, если пустое значение,
38 то в аэропорту всего 1 терминал-->
39 <OpAirline>?</OpAirline>
40 <!--OpAirline — авиакомпания перевозчик, например: SU — Аэрофлот-->
41 <MarkAirline>?</MarkAirline>
42 <!--MarkAirline — авиакомпания, продающая перелёт-->
43 <MarkAirlineName>?</MarkAirlineName>
44 <!--MarkAirlineName - полное наименование АК на кириллице-->
45 <FlightNumber>?</FlightNumber>
46 <!--FlightNumber — номер рейса-->
47 <AircraftName>?</AircraftName>
48 <!--AircraftName - наименование воздушного судна-->
49 <AircraftType>?</AircraftType>
50 <!--AircraftType — тип воздушного судна, код-->
51 <DepDateTime>?</DepDateTime>
52 <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
53 <ArrDateTime>?</ArrDateTime>
54 <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
55 <StopNum>?</StopNum>
56 <!--StopNum — количество остановок-->
57 <BookingCodes>
58 <BookingCode ClassType="?">
59 <!--ClassType — класс перелета, например: economy-->
60 <BookingCode>?</BookingCode>
61 <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс
62 может записываться разными литерами, например: L-->
63 </BookingCode>
64 </BookingCodes>
65 <FlightTime>?</FlightTime>
66 <!--FlightTime — время перелёта в минутах-->
67 <TimeZone Departure="?" Arrival="?"/>
68 <!--Departure временная зона аэропорта отправления-->
69 <!--Arrival — временная зона аэропорта прибытия-->
70 <ETicket>?</ETicket>
71 <!--ETicket — признак электронного билета, значения: true / false-->
72 </Segment>
73 </Segments>
74 <PricingInfo Refundable="?">
75 <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно-->
76 <PassengerFare Type="?" Quantity="?">
77 <!--Type — тип пассажира, возможные значения: ADT — взрослые, CNN — дети,
78 INF — младенцы, INS — младенцы с местом-->
79 <!--Quantity — количество пассажиров данного типа-->
80 <BaseFare Currency="?" Amount="?"/>
81 <!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены-->
82 <EquiveFare Currency="?" Amount="?"/>
83 <!--EquiveFare — базовая стоимость, в эквивалентной валюте(валюте продажи).
84 Currency — код валюты, Amount — значение цены-->
85 <TotalFare Currency="?" Amount="?"/>
86 <!--TotalFare — суммарная стоимость, в эквивалентной валюте.
87 Currency — код валюты, Amount — значение цены-->
88 <Taxes>
89 <Tax CurCode="?" TaxCode="?" Amount="?"/>
90 <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы-->
91 </Taxes>
92 <Tariffs>
93 <Tariff Code="?" SegNum="?"/>
94 <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф-->
95 </Tariffs>
96 <FareCalc>?</FareCalc>
97 <!--FareCalc — строка расчёта цены-->
98 <LastTicketDateTime>?</LastTicketDateTime>
99 <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
100 </PassengerFare>
101 </PricingInfo>
102 <Commission Currency="?">?</Commission>
103 <Charges Currency="?">?</Charges>
104 <!--Charges — сборы, Currency — код валюты-->
105 <TotalPrice Currency="?">?</TotalPrice>
106 <!--TotalPrice — итоговая цена, Currency — код валюты-->
107 </Flight>
108 <Agency Name="?">
109 <!--Name — название агентства-->
110 <Telephone Type="?">
111 <!--Type — тип номера, обязательный, возможные значения:
112 M — мобильный, H — домашний, B — рабочий, A — агенство-->
113 <!--Optional:-->
114 <PhoneNumber>?</PhoneNumber>
115 <!--PhoneNumber — номер телефона-->
116 <!--Optional:-->
117 <CountryAccessCode>?</CountryAccessCode>
118 <!--CountryAccessCode — код страны-->
119 <!--Optional:-->
120 <AreaCityCode>?</AreaCityCode>
121 <!--AreaCityCode — код региона/города-->
122 </Telephone>
123 <Address City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/>
124 <!--City — город-->
125 <!--State — штат-->
126 <!--StreetAddress — адрес в городе (улица, дом, корпус, офис и т.д.)-->
127 <!--PostalCode — почтовый индекс-->
128 <!--CountryCode — код страны (RU, UA и т.п.)-->
129 </Agency>
130 <ItinReceipts Encoding="?" Format="?">
131 <!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат-->
132 <FareStored xsi:nil="true"/>
133 <PaymentTransactions>
134 <Transaction>
135 <Id>?</Id>
136 <!--Id - номер транзакции в Немо-->
137 <Status>?</Status>
138 <!--Status - статус транзакции-->
139 <GatewayName>?</GatewayName>
140 <!--GatewayName - название платежного шлюза-->
141 <MoneyPaid Currency="?">?</MoneyPaid>
142 <!--MoneyPaid - сумма оплаты-->
143 <!--Currency - валюта-->
144 <PaymentDateTime>?</PaymentDateTime>
145 <!--PaymentDateTime - дата и время оплаты-->
146 <CreateDateTime>?</CreateDateTime>
147 <!--CreateDateTime - дата и время создания платежной транзакции-->
148 <Description/>
149 </Transaction>
150 </PaymentTransactions>
151 <PaymentStatus>?</PaymentStatus>
152 <!--PaymentStatus - статус оплаты:
153 not_paid — не оплачено
154 partly_paid — оплачено, частично
155 fully_paid — оплачено, полностью-->
156 <Travellers>
157 <!--Zero or more repetitions:-->
158 <Traveller Type="?" IsContact="?" LinkedTo="?" Num="?" TravellerId="?">
159 <!--Type — тип пассажира, обязательный, возможные значения: ADT — взрослые,
160 CNN — дети, UNN — дети без сопровождения взрослых, INF — младенцы, INS — младенцы с местом-->
161 <!--IsContact — если true — то данный пассажир является контактным лицом, если false — то не является,
162 контактное лицо может быть только 1, если среди пассажиров есть взрослые, то только кто-то из них
163 может быть контактным лицом, по умолчанию false-->
164 <!--Num — порядковый номер пассажира, начинается с 1-->
165 <!--LinkedTo — номер взрослого, к которому привязан младенец/ребёнок (привязка ребёнка ко взрослому является опциональной)-->
166 <!--TravellerId — устаревший параметр, не используется-->
167 <Meal>?</Meal>
168 <!--Meal — код типа питания, возможные значения:
169 NONE — отсутствует
170 AVML — Азиатская вегетарианская кухня
171 BLML — Блюда щадящей диеты
172 CHML — Детское питание
173 CHPC — Детский холодный завтрак
174 СНСС — Детский горячий завтрак
175 CHHC — Детский ланч, ветчина и сыр
176 PBJS — Детский ланч, ореховое масло
177 CHMC — Детский обед макароны с сыром
178 DBML — Диабетическое питание
179 FPML — Фрукты
180 GFML — Питание без клейковины
181 HFML — Питание богатое клетчаткой
182 HNML — Индусская кухня
183 BBML — Питание для младенцев
184 KSML — Кошерная кухня
185 SMKB — Кошерный завтрак
186 SMKL — Кошерный ланч
187 SMKD — Кошерный обед
188 LPML — Малобелковое питание
189 LCML — Низкокалорийное питание
190 LFML — Низкохолестериновое питание
191 PRML — Низкопуриновое питание
192 LSML — Малосоленое питание
193 MOML — Мюсли
194 NLML — Безмолочные продукты
195 ORML — Восточная кухня
196 RVML — Сырые овощи
197 SFML — Морепродукты
198 SPML — Особое питание
199 VLML — Вегетарианское, молоко и яйца
200 VGML — Строго вегетарианское питание
201 VJML — Джайнизское вегетарианское
202 VOML — Восточное вегетарианское питание-->
203 <PersonalInfo DateOfBirth="?" Nationality="?" Gender="?">
204 <!--DateOfBirth — дата рождения в формате ДД.ММ.ГГГГ (например 31.12.2000)-->
205 <!--Nationality — гражданство, двух буквенный код страны (RU, UA, US и т.д.)-->
206 <!--Gender — пол пассажира, возможные значения: M — мужской(Male), F — женский(Female)-->
207 <FirstName>?</FirstName>
208 <!--FirstName — имя пассажира-->
209 <LastName>?</LastName>
210 <!--LastName — фамилия пассажира-->
211 <!--Optional:-->
212 <MiddleName>?</MiddleName>
213 <!--MiddleName — отчество пассажира-->
214 </PersonalInfo>
215 <LoyaltyCard OpCode="?" Number="?"/>
216 <!--OpCode — код авиакомпании-->
217 <!--Number — номер карточки-->
218 <ContactInfo>
219 <!--Optional:-->
220 <EmailID>?</EmailID>
221 <!--EmailID — контактный email-->
222 <!--Optional:-->
223 <Telephone Type="?">
224 <!--Type — тип номера, возможные значения: M — мобильный, H — домашний, B — рабочий-->
225 <!--Optional:-->
226 <PhoneNumber>?</PhoneNumber>
227 <!--PhoneNumber — номер телефона-->
228 <!--Optional:-->
229 <CountryAccessCode>?</CountryAccessCode>
230 <!--CountryAccessCode — код страны-->
231 <!--Optional:-->
232 <AreaCityCode>?</AreaCityCode>
233 <!--AreaCityCode — код региона/города-->
234 </Telephone>
235 </ContactInfo>
236 <DocumentInfo DocType="?" DocNum="?" CountryCode="?" DocElapsedTime="?"/>
237 <!--DocType — тип документа, возможные значения:
238 Р — Паспорт
239 A – Паспорт иностранца
240 С — Внутренний гражданский паспорт
241 F – Документ заменяющий паспорт
242 М — Воинское удостоверение
243 N – Сертификат натурализации(специфичный документ США)
244 T – Док.повторного въезда, паспорт беженца
245 V – Документ для пересечения границы-->
246 <!--DocNum — номер документа-->
247 <!--CountryCode — двух буквенный код страны выдачи паспорта (RU, UA, US и т.д.)-->
248 <!--DocElapsedTime — срок истечения срока действия паспорта в ДД.ММ.ГГГ (например 31.12.2000)-->
249 <Ticket TicketNum="?">
250 <!-- TicketNum — номер выписанного билета-->
251 <VisaInfo Num="?" IssueCountry="?" IssuePlace="?" BirthCountry="?" BirthCity="?" IssueDate="?"/>
252 <!--Num — номер визы-->
253 <!--IssueDate — дата(ДД.ММ.ГГГГ) выдачи визы-->
254 <!--IssueCountry — страна выдачи визы-->
255 <!--IssuePlace — место выдачи визы-->
256 <!--BirthCountry — страна рождения(IATA код страны)-->
257 <!--BirthCity — город рождения(название)-->
258 <ArrAddress City="?" State="?" StreetAddress="?" PostalCode="?" CountryCode="?"/>
259 <!--City — город-->
260 <!--State — штат или область въезда-->
261 <!--StreetAddress — адрес: улица, номер дома, квартиры и т.д.-->
262 <!--PostalCode — почтовый код-->
263 <!--CountryCode — код страны-->
264 <PreferedPlace SmokingAllowed="?" Location="?" RowNumber="?" PlaceNumber="?" SegNumber="?"/>
265 <!--Если указаны номер ряда и номер места, то параметры SmokingAllowed и Location игнорируются-->
266 <!--SmokingAllowed — булевское значение, true — место для курящих, false — место для некурящих-->
267 <!--Location — положение места в ряде, возможные значения:
268 W — у окна (Window)
269 M — где-то в середине ряда (Middle)
270 NPW — возле прохода (NearPassengerWay)
271 NS — нет предпочтения (NotSpecified)-->
272 <!--RowNumber — номер ряда-->
273 <!--PlaceNumber — номер места-->
274 <!--SegNumber — номер сегмента-->
275 <DocStringFormats>
276 <!--Zero or more repetitions:-->
277 <DocStringFormat>?</DocStringFormat>
278 <!--DocStringFormat — формат паспортной строки, возможные значения:
279 DOCS — строка формата DOCS, FOID — строка формата FOID-->
280 </DocStringFormats>
281 </Traveller>
282 </Travellers>
283 </Ticketing>
284 <Requisites/>
285 <RequestType xsi:nil="true"/>
286 <UserID xsi:nil="true"/>
287 <Errors>
288 <Error Code="?">
289 <!--Code — код ошибки в системе Nemo-->
290 <ServiceErrorMessage>?</ServiceErrorMessage>
291 <!--ServiceErrorMessage — сообщение об ошибке полученное от веб-сервиса поставщика-->
292 <Message>?</Message>
293 <!--Message — сообщение об ошибке от системы Nemo-->
294 </Error>
295 </Errors>
296 </Response>
297 </ResponseBin>
298 </ns1:TicketingResponse>
299 </SOAP-ENV:Body>
300 </SOAP-ENV:Envelope>
Ответ с ошибками
1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://release.mlsd.ru/nemoflights/?version%3D1.0%26for%3DTicketing">
2 <SOAP-ENV:Body>
3 <ns1:TicketingResponse>
4 <ResponseBin>
5 <Error Code="E002205">Ошибка от поставщика.. UNABLE TO PROCESS - RETRY IN 15 MINUTES</Error>
6 </ResponseBin>
7 </ns1:TicketingResponse>
8 </SOAP-ENV:Body>
9 </SOAP-ENV:Envelope>
Общий формат запроса / ответа войдирования
Данный запрос запускается после выписки билета, если необходимо его отменить.
WSDL: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=VoidTicket
Запрос
1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DVoidTicket">
2 <soapenv:Header/>
3 <soapenv:Body>
4 <ver:VoidTicket>
5 <RequestBin>
6 <Request>
7 <VoidTicket>
8 <BookID>?</BookID>
9 <!--BookID — Id брони в системе Nemo, целое число-->
10 </VoidTicket>
11 </Request>
12 <Source>
13 <ClientId>?</ClientId>
14 <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе
15 "Администрирование" ⇨ "Веб-служба. Авторизация".-->
16 <APIKey>?</APIKey>
17 <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе
18 "Администрирование" ⇨ "Веб-служба. Авторизация".-->
19 <Language>?</Language>
20 <!--Language — язык, например: RU-->
21 <Currency>?</Currency>
22 <!-- Currency — валюта, например: RUB, EUR-->
23 </Source>
24 </RequestBin>
25 </ver:VoidTicket>
26 </soapenv:Body>
27 </soapenv:Envelope>
Ответ
1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version%3D1.0%26for%3DVoidTicket" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2 <SOAP-ENV:Body>
3 <ns1:VoidTicketResponse>
4 <ResponseBin>
5 <Response>
6 <VoidTicket BookID="?">
7 <!--BookID — Id брони в системе Nemo, целое число-->
8 <Result Success="?"/>
9 <!--Sucscess — результат отмены выписки, true или false-->
10 </VoidTicket>
11 <Requisites/>
12 <RequestType xsi:nil="true"/>
13 <UserID xsi:nil="true"/>
14 <Errors xsi:nil="true"/>
15 </Response>
16 </ResponseBin>
17 </ns1:VoidTicketResponse>
18 </SOAP-ENV:Body>
19 </SOAP-ENV:Envelope>