Интеграция со сторонними системами АПИ: различия между версиями
(→API Поиска отелей) |
(→API бронирования, аннуляции, войдирования авиабилетов) |
||
Строка 19: | Строка 19: | ||
==API бронирования, аннуляции, войдирования авиабилетов== | ==API бронирования, аннуляции, войдирования авиабилетов== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==API бронирования, отмены отелей== | ==API бронирования, отмены отелей== |
Версия 18:55, 24 апреля 2015
!!!СТАТЬЯ В РАЗРАБОТКЕ!!!
Содержание
- 1 API Поиска авиабилетов
- 2 API Поиска отелей
- 3 API бронирования, аннуляции, войдирования авиабилетов
- 4 API бронирования, отмены отелей
- 5 Выгрузки статистики продаж через API
- 6 Выгрузка информации о заказах
- 7 Фиксация оплаты внешним запросом
- 8 API универсального платежного шлюза
- 9 API Синхронизации пользователей и субагентов
- 10 API Кроссавторизации
- 11 Передача параметров в форму поиска
- 12 Проверка в сторонней системе возможности тикетинга
- 13 Загрузка счетов из сторонней системы
API Поиска авиабилетов
Это сервис внутри Nemo, который позволяет получить результаты поиска.
Для подключения к веб-службе поиска авиабилетов необходимо открыть доступ нужному пользователю. Это можно сделать в разделе «Администрирование» ⇨ «Веб-служба. Авторизация».
После добавления пользователя, ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
Подробнее можно узнать в специальной статье Веб-служба поиска авиабилетов
API Поиска отелей
Агентский API Отелей - система, которая предоставляет возможность поиска и бронирования отелей а так же получение информации о времени и размерах штрафов, уникальной информации об отеле, получение статической информации.
Сервис предназначен для получения списка отелей, удовлетворяющих условиям запроса. В условия запроса входят: идентификатор города, где будет вестись поиск; дата заезда и дата выезда; информация о количестве людей и способе их размещения в комнатах. Так же указываются дополнительные необязательные поля фильтров.
Подробнее можно узнать в нашей специальной статье АПИ Поиска отелей
API бронирования, аннуляции, войдирования авиабилетов
API бронирования, отмены отелей
Штрафы за аннуляцию
Всегда в явном виде нужно указывать пользователю информацию о штрафах за аннуляцию до бронирования.
Штрафы получаются по каждой услуге отдельным запросом. Нужно указать тип услуги, идентификатор результата поиска и выбранную категорию.
Внимание. Для отелей из Hotelbeds (Supplier=HOTELBEDS) штрафы до бронирования получить невозможно.
WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Penalty
Запрос
Ответ
Бронирование
Запрос
Ответ
Подтверждение бронирования
Запрос
Ответ
Выгрузка актуальных данных по заказу(ам)
Используется для экспорта бронирований и для обновления данных в локальной клиентской базе.
WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=Export
Запрос
Ответ
Аннуляция заказа
WSDL (тестовый сервер): http://tst.nemo-ibe.com/wsdev/wsdl.php?for=CancelBooking
Запрос
Ответ
см. результаты бронирования.
Выгрузки статистики продаж через API
Метапоисковая система (метапоисковая машина, метапоисковик) — это поисковая система, которая в отличие от классических поисковых машин не имеет собственной базы данных и собственного поискового индекса, а формирует поисковую выдачу за счет смешивания и переранжирования результатов поиска других поисковых систем.
Необходимо убедиться, что API запросы на поиск отправляются на доменное имя, указанное для агентства (субагента) в разделе Администрирование -> Настройки агентства
Запрос
Пример запроса
http://host/index.php?go=settings/download_metasearch_stat&date1=2012-05-01&date2=2012-06-01&partner=aviasales&password=secret
Параметры запроса
Параметр запроса | Описание |
---|---|
date1 | YYYY-MM-DD дата. |
date2 | YYYY-MM-DD дата. |
partner | Идентификатор партнёра - алиас источника переходов модуля метрики. |
password | Пароль партнёра - пароль источника переходов модуля метрики. |
Ответ
Время и дата бронирования created_at передается в таймзоне UTC+4.
Состояние брони state может принимать значения:
- PROCESSING - забронирован;
- PAID - выписан;
- CANCELLED - аннулирован (по любым причинам).
Прибыль партнёра profit от данного бронирования в формате 00.99 (через точку). Размер прибыли партнера устанавливается для конкретного источника трафика в Модуле метрики и считается как процент от стоимости оплаченного заказа, включая комиссию платежного шлюза и апсейловые продажи. В последующем расчет прибыли может измениться. При возврате авиабилетов сумма ранее засчитанная как прибыль партнера (метапоисковой системы) должна подставляться с минусом в данном периоде.
Количество детей до 2 лет infants относится только к младенцам без места. Количество младенцев с местом объединяются с количеством детей до 12 лет children.
Выгрузка информации о заказах
Выгрузка заказов — это экспорт данных заказа или заказов для различных компонентов системы Nemo.
Процесс выгрузки
Схематично процесс выгрузки заказов представлен на блок-схеме.
Статусы выгрузки заказа
Коды статусов выгрузки заказа соответствуют кодам состояния HTTP. Фактически указывается последний полученный код состояния HTTP, полученный при выгрузке данных по адресу, указанному в настройках выгрузки. Коды относятся к серверу, на который происходит выгрузка заказов.
Код | Описание |
---|---|
0 | Неизвестный ответ. Адрес для выгрузки не доступен. |
200 | OK — успешный запрос. |
301 | Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. |
403 | Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. |
404 | Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI. |
422 | Unprocessable Entity — сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом. |
500 | Любая внутренняя ошибка сервера. |
Выгрузка заказа для компонента «Авиабилеты»
Для компонента «Авиабилеты» доступна выгрузка заказов в форматах Nemo и/или Софи (при включенном модуле «Выгрузка заказов Софи»).
Формат Nemo
Формат Софи
Выгрузка заказа для компонента «Отели»
Для компонента «Отели» доступна выгрузка заказов в формате Nemo.
Формат Nemo
Выгрузка заказа для компонента «ЖД»
Для компонента «ЖД» доступна выгрузка заказов в формате Nemo.
Формат Nemo
Пакетный экспорт заказов по категориям в формате Nemo
Сервис выгрузки заказов позволяет экспортировать интересующие выборки по заказам в формате XML. Например, можно выбрать все заказы по дате бронирования и получить информацию по ним в XML-виде.
Экспорт заказов под авторизованным пользователем (в личном кабинете)
Порядок пользования сервисом:
- Перейти в личный кабинет
- В адресной строке браузера к текущему адресу дописать параметр &exportxml. Должен получиться адрес вида:
http://DOMAIN/index.php?go=poffice/table&exportxml
- После обновления страницы под блоком фильтров должна появиться кнопка «Экспортировать в XML». При ее нажатии на странице появляется предложение сохранить в XML-файл выборку отфильтрованных заказов.
Выгружаются только заказы выбранного пользователя/компании с учетом примененных параметров фильтра.
Пользователь может произвести выгрузку только своих заказов.
Пакетный экспорт заказов по категориям в формате СОФИ
Для использования выгрузки заказов в формате СОФИ у агентства должен быть включен модуль "Выгрузка заказов Софи" и заданы настройки:
- "Тип выгрузки СОФИ" должен иметь значение "Выгрузка заказов СОФИ" или должна быть включена настройка "Выгрузка одновременно и Nemo, и Софи",
- Должен быть указан "Url скрипта для выгрузки в формате СОФИ",
- Должен быть указан "Код сайта в системе СОФИ".
Выгрузка конкретного заказа:
http://DOMAIN/booking__sofi_export_bookings&booking_id=123456 где booking_id — номер заказа в системе Немо.
Выгрузка заказов забронированных за определенный период:
http://DOMAIN/booking__sofi_export_bookings&date_begin=01.01.2014&date_end=01.01.2015 где [date_begin; date_end] — период бронирования заказа (забронированные заказы с датой бронирования совпадающей с началом/окончанием периода, заданного в запросе, попадают в экспорт), формат — дд.мм.гггг.
Фиксация оплаты внешним запросом
!!! не нашел, есть просто фиксация оплаты, но это вроде немного не то !!!
API универсального платежного шлюза
!!! сказано спросить у КШ, я спросил, у него нет информации !!!
API Синхронизации пользователей и субагентов
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, системой автоматизации туроператора "САМО-тур") и Nemo в части синхронизации списка B2B-пользователей.
Модуль является компонентом, включаемым и отключаемым из административной части.
Авторизация B2B-пользователей
Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий пароль. Механизм авторизации работает следующим образом:
1.Система пытается авторизовать пользователя через собственную службу авторизации. 2.В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур». 3.В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля.
Регистрация неудачных попыток входа производится только в двух случаях:
- Компонент взаимодействия выключен.
- Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней).
Для сторонней авторизации пользователей в системе Nemo внешняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo на странице конфигурации интеграции с внешней системой.
Для импортированных пользователей в Nemo имеется поле «Идентификатор внешней системы», который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, для пользователей — номеру пользователя в «САМО-туре».
Для пользователей, имеющих какое-либо значение в поле «идентификатор во внешней системе», запрещен функционал смены пароля или его восстановления по электронной почте.
Пример запросов и ответов на авторизацию:
Request
<?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <getAuthorization xmlns="http://tempuri.org/"> <login>string</login> <pass>string</pass> </getAuthorization> </soap12:Body> </soap12:Envelope>
Response
<?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <getAuthorizationResponse xmlns="http://tempuri.org/"> <getAuthorizationResult> <session_id>string</session_id> <user_id>string</user_id> <login>string</login> <status>string</status> </getAuthorizationResult> </getAuthorizationResponse> </soap12:Body> </soap12:Envelope>
Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»:
- login (строка) - введенный пользователем логин
- pass (строка) - введенный пользователем пароль
Функция должна отдавать системе конструкцию getAuthorizationResponse:
- session_id (строка) - пустое значение
- user_id (строка) - идентификатор менеджера в системе «САМО-тур»
- login (строка) - логин пользователя (для контроля)
- status (строка) - может иметь значения:
1. adm - администратор 2. mgr - менеджер 3. usr - пользователь (возвращается всегда это значение)
Импорт и синхронизация учетных записей
Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo, с ключом авторизации, определенным в Nemo в административной части модуля.
Передаваемые элементы с описанием учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления, соответственно.
В административной части модуля в Nemo задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым.
Скрипт получает данные об обновлении и добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов.
Описание передаваемых в Nemo XML-документов:
<?xml version="1.0" encoding="UTF-8" ?> <changes key="ключ_авторизации"> <accounts> - список изменений по аккаунтам пользователей <item id=3 partnerId=10 action="update" admin="1"> <login>Логин пользователя</login> </item> <item id=6 partnerId=15 action="update"> ... </item> <item id=9 partnerId=30 action="delete" /> </accounts> <partners> - список изменений по партнерам <item id=140 action="update"> <name>Название агентства</name> <ofname>Официальное Название агентства</ofname> <phone>Телефон</phone> <tax>Форма налогообложения</tax> <group>123</group> <code>ABCD</item> </partners></changes></code>
При импорте информации об агентствах будут возвращаться следующие значения:
Поле во внешней системе | Путь к элементу xml | Тип данных | Сопоставляемое поле в Nemo | Примечание |
---|---|---|---|---|
Идентификатор партнера | /changes/partners/item[@id] | Целое число | Идентификатор во внешней системе для менеджера / администратора | |
Название юридического лица | /changes/partners/item/ofname | Строка | Полное официальное название юридического лица | Необходимо для выписки счетов юридическими лицами |
Сокращенное название | /changes/partners/item/name | Строка | Имя агентства | |
Код агентства | /changes/partners/item/code | Строка | Используется при создании логина администратора | |
Номер группы в самотуре | /changes/partners/item/group | Целое число, либо пусто | На основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo | |
Форма налогообложения | /changes/partners/item/tax | Целое число, равное идентификатору во внешней системе |
Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если агентство не найдено, то создается новое, для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль генерируется случайный и криптостойкий.
Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился буквенный код агентства, то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля:
Поле во внешней системе | Путь к элементу xml | Тип данных | Сопоставляемое поле в Nemo | Примечание |
---|---|---|---|---|
Идентификатор пользователя | /changes/accounts/item[@id] | Целое число | Идентификатор внешней системы | Храним как дополнительное поле |
Идентификатор партнера | /changes/accounts/item[@partnerId] | Целое число | Идентификатор внешней системы менеджера агентства | |
Логин | /changes/accounts/item/login | Строка | Логин пользователя | |
Администратор | /changes/accounts/item[@admin] | 0 - нет, 1 - да | Эксперт по бронированию |
Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.
Если пользователь найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида [логин_пользователя]_X_[числовой идентификатор_пользователя в Само].
<item id=[идентификатор] action="delete" />
Таблица сопоставлений групп
В административной части Nemo надо создать отдельную страницу, на которой можно сопоставить имеющиеся группы в Nemo номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.
API Кроссавторизации
Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
http://hostname/authorization_reol.wsdl
Запрос
Передача параметров в форму поиска
Описанная функциональность не входит в стандартную поставку системы.
Для получения возможности использовать ее, пожалуйста, обратитесь в коммерческий отдел.
В системе Nemo имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
Применение
Эта технология может использоватся к примеру для формирования ссылок с баннеров, при клике на которые пользователь попадает на форму, на которой уже могут быть заполнены пункты назначения, даты, количество пассажиров и прочие параметры.
Также, при указании всех необходимых параметров, пользователя можно перебрасывать сразу на процесс поиска авиабилетов с указанными критериями.
Для использования заполнения формы из URL следует включить опцию: Администрирование → Настройки системы → Включить FastSearch (передачу параметров поиска)
После этого можно использовать ссылки на форму поиска вида
http://SITEMANE/?trip_type=OW&out_iata=MOW&in_iata=BER&departure_date=21.10.2009&adults=1&children=0&input_vendors=SU,PS¶m_by_get=on
Переменные FastSearch
Имена полей - такие же как имена инпутов на поисковой форме.
Следите за тем, чтобы значения соответствовали установленным в настройках ограничениям.
Переменные, которые предполагают в качестве значения "true" можно просто не включать в запрос, чтобы их логика не отработала.
Форма поиска
Чтобы перенаправить пользователя на страницу с заполненными параметрами поиска, необходимо указать get-параметр ¶m_by_get=on, иначе сработают стандартные предустановки полей формы поиска.
Процесс поиска
Если вы указываете все необходимые для поиска параметры, то для того чтобы отправить пользователя сразу на результаты поиска, нужно указать get-параметр &fast_search=on.
Маршрут «В одну сторону» и «Туда и обратно»
Элемент | Переменная | Допустимые значения | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Тип маршрута | trip_type |
| ||||||||||
Пункт вылета | out_iata |
| ||||||||||
Пункт прилета | in_iata |
| ||||||||||
Дата вылета | departure_date |
| ||||||||||
Дата обратного вылета | back_departure_date |
| ||||||||||
Время вылета | prefered_departure_type |
| ||||||||||
Время обратного вылета | prefered_back_departure_type |
| ||||||||||
Поиск только среди прямых рейсов ("Без пересадок") | direct | true |
Дополнительные параметры
Элемент | Переменная | Допустимые значения | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Нижнее ограничение по цене по умолчанию | money_from |
| ||||||||
Верхнее ограничение по цене по умолчанию | money_to |
| ||||||||
Поиск в окружных датах | district_date | true | ||||||||
Диапазон соседних дат +(-) [дней] | date_range |
| ||||||||
Поиск по соседним аэропортам | district_airport | true | ||||||||
Класс обслуживания | class |
| ||||||||
Фильтр по авиакомпании | input_vendors |
| ||||||||
Сортировка | sort |
|
Сложный маршрут
! Данные переменные применимы только для сложного маршрута (trip_type=CR).
[X] - номера отдельных перелетов. Нумерация начинается с 0, что означает первый перелет.
Максимальное количество сегментов для сложного маршрута определяется одноименной настройкой в разделе Авиабилеты ⇨ Поиск ⇨ Ограничения поиска.
Элемент | Переменная | Допустимые значения | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Пункты вылета | cr_iata[0] cr_iata[1] |
MOW | Код аэропорта ИАТА | ||||||||||
Пункты прилета | cr_back_iata[0] cr_back_iata[1] |
LED | Код аэропорта ИАТА | ||||||||||
Дата вылета | cr_date[0] cr_date[1] |
25.10.2013 | Дата в формате ДД.ММ.ГГГГ | ||||||||||
Время вылета | cr_pref_departure[0] cr_pref_departure[1] |
| |||||||||||
Класс обслуживания | cr_class[0] cr_class[1] |
| |||||||||||
Окружные аэропорты (±XX км) | cr_district_airport[0] cr_district_airport[1] |
true |
Пассажиры
Элемент | Переменная | Допустимые значения | ||
---|---|---|---|---|
Взрослых от 12 лет | adults |
| ||
Детей от 2 до 12 лет | children |
| ||
Младенцев до 2 лет | infants |
| ||
Младенцев с местом до 2 лет | infants_seat |
| ||
Молодых от 12 до 24 лет |
youths |
| ||
Пожилых от 65 лет | seniors |
|
Примеры FastSearch запросов
В одну сторону (простой)
В одну сторону (с фильтрами по авиакомпаниям)
Туда-обратно
Сложный маршрут
Взаимодействие FastSearch и Метрики
Для того, чтобы переход был зарегистрирован системой как переход с определенного источника, необходимо передать в запросе дополнительный параметр utm_source (Metrics Session ID). Например:
http://SITEMANE/?(some_parameters=vals&)utm_source=source_alias
где source_alias - алиас источника переходов. Дополнительная информация по использованию модуля Метрики.
Пример FastSearch запроса с параметром для модуля Метрики
FastSearch (с учетом источника перехода для модуля Метрики)
Проверка в сторонней системе возможности тикетинга
При выписки билета через стороннюю систему 1С, отправляется запрос "GetDebtCounterparty", который спрашивает, можно ли с счета в 1С списать средства для оплаты. В ответе содержится заключение от 1С, в случае если ошибок нет, в ответе будет
<m:Opportunity>Да</m:Opportunity>
Пример запроса "GetDebtCounterparty"
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Body> <ns1:GetDebtCounterparty> <ns1:ExternalUserId>00000001</ns1:ExternalUserId> <ns1:ExternalPaymentId>00000001</ns1:ExternalPaymentId> <ns1:BaseFare>2490</ns1:BaseFare> <ns1:Tax>643</ns1:Tax> <ns1:ValVendorCommission>49.8</ns1:ValVendorCommission> <ns1:Locator>0X97T6</ns1:Locator> <ns1:Discount>0</ns1:Discount> <ns1:Charge>0</ns1:Charge> <ns1:Sum>3133</ns1:Sum> <ns1:TotalPrice>3658.1</ns1:TotalPrice> <ns1:GDSCurrency>RUB</ns1:GDSCurrency> <ns1:OrderCurrency>RUB</ns1:OrderCurrency> <ns1:OrderCurrencyRate>1</ns1:OrderCurrencyRate> <ns1:beginDate>2014-08-30T11:05:00</ns1:beginDate> </ns1:GetDebtCounterparty> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Пример ответа "GetDebtCounterparty"
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <m:GetDebtCounterpartyResponse xmlns:m="http://DOMEN_NAME/avia"> <m:return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="m:AnswerDebt"> <m:Opportunity>Да</m:Opportunity> <m:Message1/> </m:return> </m:GetDebtCounterpartyResponse> </soap:Body> </soap:Envelope>
Загрузка счетов из сторонней системы
При взаимодействии с веб-сервисом 1С, на этапе бронирования отправляется запрос, на создание аккаунта 1С, содержащий в себе данные счета. В системе логирования этот запрос можно найти под именем «[GDS] Запрос "NewAccount"» и ответ «[GDS] Ответ "NewAccount"»