Изменения

Перейти к навигации Перейти к поиску

Интеграция

213 байт добавлено, 13:14, 7 ноября 2017
Нет описания правки
[[Category:Функции]]{{Deprecated ru}}[[Category:Интеграция]]<!-- -->Для интеграции Nemo {{NameSystemLink}} с другими системами имеются инструменты обмена данными.
== Легкая форма на сайт ==
=== Настройка легкой формы ===
В архиве собраны все необходимые файлы для установки легкой формы на вашем сайте.<br /> 
'''Архив легкой формы:''' [[Файл:Light-form.zip]].
<span style="background-color:#fff0f5;"><span style="font-size:large;"><span style="color:#ff0000;">Если ранее вы использовали http://DOMAIN/static/js/jquery-1.3.1.min.js — обратите внимание на изменение пути.</span></span>
<span style="background-color:#fff0f5;"><span style="font-size:large;"><span style="color:#ff0000;">!</span></span> {{Attention|Здесь и далее замените в адресах ссылок DOMAIN на имя вашего домена!}}
2. Также необходимо разместить скрипт инициализации формы:
Здесь:
*'''typeSearch''' может принимать значения OW или RT (в один конец или туда и обратно);<br> *'''arrDate''' - через сколько дней вылет;<br> *'''depDate''' - через сколько дней обратный вылет;<br> *'''outSearch''' - текст запроса в автокомплит для предзаполнения поля "Вылет"; <br> *'''inSearch''' - текст запроса в автокомплит для предзаполнения поля "Прилет"; <br>
Дефолтным пунктом вылета/прилета в полях формы установится первый пункт, который подгружается в автокомплит по вводу этого текста.
В настройках системы (если доступно) перечислите домены, на которых будет размещена легкая форма.
<span style="background-color:#fff0f5;"><span style="font-size:large;"><span style="color:#ff0000;">!</span></span> {{Attention|Легкая форма работает на сайтах с кодировкой UTF-8.}}
== Сайты-спутники ==
Альтернативой функционалу [[Интеграция#Легкая форма на сайт|«Легкая форма поиска»]] является функционал «Сайты-спутники».
В этом случае, если мини-форма поиска размещается на другом домене, то пользователь при переходе к результатам поиска остается на том же домене. Это позволяет видеть статистику поисковых запросов и созданных бронирований именно с партнерского домена.
[[Файл:IMG_13092012_112049.png]]
Для настройки функционала необходимо:
1. # Создать компанию-партнер в разделе '''Администрирование''' - '''Пользователи Аккаунт менеджмент → Агенты и группыпользователи → Управление'''. 2. # В настройки этой компании-партнера в разделе '''Администрирование''' - '''Настройки системыУправление сайтом → Домены и протоколы''' указать '''{{Setting|Доменное имя сайта для загрузки настроек''' - }} — доменное имя сайта компании-партнера. Здесь может быть домен второго уровня. А на домене первого уровня - на основном сайте компании-партнера можно разместить «Легкую форму» поиска. 3. # Также необходимо выполнить [[Веб-сайт#Привязка сайта в Nemo к доменному имени агентства|привязку сайта к доменному имени агентства]]. 4. # Стили основного сайта на сайт компании-партнера не распространяются. Их можно прописать отдельно в разделе '''Администрирование''' - '''Управление сайтом → Настройки внешнего вида'''.
== Фиксация оплаты внешним запросом ==
Сервис вызывается следующим образом: http://CLIENT_DOMAIN/index.php?go=payment/bill
'''=== Подпись запроса'''===
Подпись sig сверяется c <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">md5($booking_id.$secret)</syntaxhighlight>, где:* $booking_id — Id заказа в системе {{NameSystem}};* $secret — значение настройки {{Setting|Ключ безопасности для сервиса выставления оплаты и получения XML выгрузки}} в разделе '''Управление сайтом → Домены и протоколы'''.
$booking_id - Id заказа в системе Nemo, $secret - значение настройки в разделе '''«Администрирование»''' ⇨ '''«Настройки агентства»''' ⇨ '''''«Ключ безопасности для сервиса выставления оплаты и получения XML выгрузки»''''' '''=== Пример:'''===
<pre>
Для фиксации оплаты получается такая ссылка:
http://CLIENT_DOMAIN/index.php?go=payment/bill&booking_id=263330&sig=a439a4492131f4b866ed1a17d018d3a6
<pre>http://CLIENT_DOMAIN/index.php?go=payment/bill&booking_id= FastSearch - передача параметров в форму =263330&sig=a439a4492131f4b866ed1a17d018d3a6</pre>
== FastSearch — передача параметров в форму == В системе Nemo {{NameSystem}} имеется возможность перенаправлять пользователей на страницу с уже заполненными параметрами поиска или сразу напрямую на результаты поиска.
Эта технология может использоваться, к примеру, для формирования ссылок с баннеров, при клике на которые [[пользователь]] попадает на форму, в которой уже могут быть заполнены пункты назначения, даты, количество пассажиров и прочие параметры.
Также при указании всех необходимых параметров пользователя можно перебрасывать сразу на процесс поиска авиабилетов с указанными критериями.
Для использования заполнения формы из URL следует включить опцию: '''Администрирование → Настройки системы → '''{{Setting|Включить FastSearch (передачу параметров поиска)}} в разделе '''Управление сайтом → Домены и протоколы'''.
После этого можно использовать ссылки на форму поиска вида:
<pre>http://DOMAIN/?trip_type=OW&out_iata=MOW&in_iata=BER&departure_date=21.10.2009&adults=1&children=0&input_vendors=SU,PS&param_by_get=on</pre>
'''Имена полей''' - такие же как имена инпутов на поисковой форме.
Если вы указываете все необходимые для поиска параметры, то для того чтобы отправить пользователя сразу на результаты поиска нужно указать непустой параметр fast_search. Например, &fast_search=true.
Подробная информация о данном функционале для отелей находится по ссылке [[Fast Search для отелей]]
== Интеграция со Сторонней системой - Авторизация==
В Немо {{NameSystem}} существует возможность авторизоваться в системе менеджерам агентства и субагентам, прежде не работавшим в системе, при помощи интеграции со Сторонней системой (СС).
Настраивается данный функционал в разделе: «Администрирование» - «Реквизиты подключения»'''Для техподдержки → Устаревшие настройки → Реквизиты подключения''', где логин и пароль используется для доступа к системе.
[[Файл:Shema avtopizacii.png]]
== Пример: Интеграция с Eagle Eye - авторизация ==
'''Процесс авторизации:'''
# Пользователь на странице авторизации в системе {{NameSystem}} вводит Логин и Пароль, которые отправляются в СС для авторизации.
'''Процесс Сценарий успешной авторизации:'''# Если авторизация пользователя в СС прошла успешно, то идёт проверка, есть ли в базе данных пользователей {{NameSystem}} пользователь с таким ID.# Если такой пользователь существует в базе {{NameSystem}}, то данные о пользователе и агентстве обновляются, исходя из информации, содержащейся в ответе на авторизацию.Обновляется логин и пароль.# Логин пользователя {{NameSystem}} может быть обновлен на актуальный.# Если в {{NameSystem}} отсутствует пользователь с данным ID — то происходит добавление пользователя.
1'''Сценарий неуспешной авторизации:'''# Если авторизация в СС прошла не успешно, то система {{NameSystem}} проверяет, существует ли в СС ID для пользователя с запрашиваемым логином. Пользователь на странице # Если в СС пользователь с ID был сохранен, значит данный пользователь выключен в системе СС, пользователю будет отказано в авторизации .# Если в СС пользователь с данным ID отсутствует, то данного пользователя нет в системе Немо вводит Логин СС и Пароль, которые отправляются если шаг 1 был успешным, то он авторизуется в СС для {{NameSystem}} как при обычной авторизации{{NameSystem}}.
'''Сценарий успешной авторизации''' 1. Если авторизация пользователя в СС прошла успешно, то идёт проверка, есть ли в базе данных пользователей Немо пользователь с таким ID. 2. Если такой пользователь существует в базе Немо, то данные о пользователе и агентстве обновляются, исходя из информации, содержащейся в ответе на авторизацию.Обновляется логин и пароль. 3. Логин пользователя Немо может быть обновлен на актуальный. 4. Если в Немо отсутствует пользователь с данным ID - то происходит добавление пользователя. '''Сценарий неуспешной авторизации''' 1. Если авторизация в СС прошла не успешно, то система Немо проверяет, существует ли в СС ID для пользователя с запрашиваемым логином. 2. Если в СС пользователь с ID был сохранен, значит данный пользователь выключен в системе СС, пользователю будет отказано в авторизации. 3. Если в СС пользователь с данным ID отсутствует, то данного пользователя нет в системе СС и, если шаг 1 был успешным, то он авторизуется в Немо как при обычной авторизации Немо. <span style="background-color:#fff0f5;"><span style="font-size:large;"><span style="color:#ff0000;">!</span></span> {{Attention|Если в системе пытается авторизоваться субагент агентства, которое ещё не создано в системе, то в регистрации ему будет отказано, т.к. родительское агентство отсутствует.}}
== Синхронизация данных о пользователях и компаниях ==
Назначение данного модуля — обеспечение взаимодействия между сторонней программой (например, «САМО-тур») и системой Nemo {{NameSystem}} в части синхронизации списка B2B-пользователей.
Модуль является компонентом, включаемым/отключаемым из административной части.
'''=== Авторизация'''===
Все B2B-пользователи, загруженные через модуль взаимодействия со сторонней программой, будут иметь случайным образом сгенерированный криптостойкий пароль. Механизм авторизации работает следующим образом:
 1. # Система пытается авторизовать пользователя через собственную службу авторизации.<br>2. # В случае неудачи, но присутствия в системе введенного логина, она должна попытаться авторизовать пользователя во внешней службе авторизации («САМО-тур»), при включенном компоненте взаимодействия с «САМО-тур».<br>3. # В случае неудачного опознавания пользователя выводится соответствующее сообщение и процедура может быть повторена путем повторного ввода логина и пароля.
Регистрация неудачных попыток входа производится только в двух случаях:
*Компонент взаимодействия выключен.*Компонент взаимодействия включен и провалены обе попытки авторизации (внутренней и внешней).
Для сторонней авторизации пользователей в системе Nemo {{NameSystem}} сторонняя программа должна иметь веб-службу, основанную на WSDL определенного формата. Ссылка на веб-службу прописывается в настройках системы Nemo {{NameSystem}} на странице конфигурации интеграции с внешней системой.
Для импортированных пользователей в Nemo {{NameSystem}} имеется поле '''«Идентификатор внешней системы»''', который отвечает за сопоставление с ID пользователя в сторонней системе. Для менеджеров агентств оно равно номеру партнера (агента) во внешней системе, для пользователей — номеру пользователя в «САМО-туре».
Для пользователей, имеющих какое-либо значение в поле '''«Идентификатор во внешней системе»''', запрещен функционал смены пароля или его восстановления по электронной почте.
'''=== Пример запросов и ответов на авторизацию:'''===
<pre><?xml version="1.0" encoding="utf-8"?>
Сервис реализует функцию «getAuthorization», на вход которой передается конструкция «getAuthorizationRequest»:
*login (строка) - введенный пользователем логин*pass (строка) - введенный пользователем пароль
Функция должна отдавать системе конструкцию getAuthorizationResponse:
*session_id (строка) - пустое значение*user_id (строка) - идентификатор менеджера в системе «САМО-тур»*login (строка) - логин пользователя (для контроля)*status (строка) - может иметь значения:** oadm - администратор** omgr - менеджер** ousr - пользователь (возвращается всегда это значение)
'''=== Импорт\синхронизация учетных записей'''===
Со стороны внешней системы должно быть приложение, отправляющее в формате XML данные по учетным записям B2B-клиентов (агентств и пользователей). Со стороны Nemo {{NameSystem}} имеется скрипт, который принимает XML в формате, приведенном в описании документов, передаваемых в Nemo {{NameSystem}} с ключом авторизации, определенным в Nemo {{NameSystem}} в административной части модуля.
Передаваемые элементы с описанием учетных записей и партнеров имеют аккаунт (Account ID) во внешней системе и атрибут action, который может быть в состоянии update или delete, т.е. обновления/добавления и удаления соответственно.
В административной части модуля в Nemo {{NameSystem}} задается ключ авторизации для защиты от несанкционированного доступа. Значение не должно быть пустым.
Скрипт получает данные об обновлении, добавлении (проходят как одно и то же действие) или удалении информации по аккаунту. XML-данные могут содержать несколько элементов, например:
<item id=9 partnerId=30 action="delete" />
</accounts>
<partners> - список изменений по партнерам
<item id=140 action="update">
<name>Название агентства</name>
При импорте информации об '''Агентствах''' будут возвращаться следующие значения:
<table {| collspadding="10" border="1"> <tr bgcolorclass="#ccccccwikitable"> <th>! Поле во внешней системе </th><th> !! Путь к элементу xml </th><th> !! Тип данных </th><th> !! Сопоставляемое поле в Nemo </th><th> {{NameSystem}} !! Примечание </th>|- </tr> <tr> <td>| Идентификатор партнера</td><td>| /changes/partners/item[@id]</td><td>| Целое число </td><td>| Идентификатор во внешней системе для менеджера / администратора </td><td></td> </tr>| <tr>|- <td>| Название юридического лица</td><td>| /changes/partners/item/ofname</td><td>| Строка</td><td>| Полное официальное название юридического лица </td><td>| Необходимо для выписки счетов юридическими лицами</td>|- </tr> <tr> <td>| Сокращенное название</td><td>| /changes/partners/item/name</td><td>| Строка</td><td>| Имя агентства </td><td></td> </tr>| <tr>|- <td>| Код агентства</td><td>| /changes/partners/item/code</td><td>| Строка</td><td>| Используется при создании логина администратора</td><td></td>| </tr> <tr>|- <td>| Номер группы в самотуре</td><td>| /changes/partners/item/group</td><td>| Целое число, либо пусто</td><td>| На основании таблицы сопоставлений (см. ниже) определяется, к какой группе агентство принадлежит в Nemo </td><td></td>{{NameSystem}} </tr>| <tr class="row6">|- <td>| Форма налогообложения</td><td class="col1">| /changes/partners/item/tax</td><td>| Целое число, равное идентификатору во внешней системе</td><td class="col3"></td><td></td>| </tr>| </table> Для каждого возвращенного агентства Nemo проверяет наличие его в своей базе. Если [[агентство]] не найдено, то создается новое. Для него создается менеджер (админ) с логином ABCD-1234, где ABCD – буквенный идентификатор партнера во внешней системе, 1234 — id партнера во внешней системе. Пароль — генерируется случайный и криптостойкий. Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. Если изменился код агентства (буквенный), то Nemo переименовывает менеджера в соответствии с новым кодом. При импорте информации о пользователях агентств в Nemo будут посылаться следующие поля: |}
Для каждого возвращенного агентства {{NameSystem}} проверяет наличие его в своей базе. Если [[агентство]] не найдено, то создается новое. Для него создается менеджер (админ) с логином <table bordersyntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;"> ABCD-1234<tr bgcolor/syntaxhighlight>, где <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #cccccc2F6FAB;"> ABCD<th/syntaxhighlight>Поле – буквенный идентификатор партнера во внешней системе, </thsyntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;"><th>Путь к элементу xml1234</th><th>Тип данных</th><th>Сопоставляемое поле в Nemo</th><th>Примечание</thsyntaxhighlight>— id партнера во внешней системе. Пароль — генерируется случайный и криптостойкий.
</tr> <tr> <td>Идентификатор пользователя</td><td>/changes/accounts/item[@id]</td><td>Целое число</td><td>Идентификатор внешней системы</td><td>Храним как дополнительное поле </td> </tr> <tr> <td>Идентификатор партнера</td><td class="col1">/changes/accounts/item[@partnerId]</td><td>Целое число</td><td>Идентификатор Если агентство найдено, то в случае необходимости производится обновление всех полей на основании данных из внешней системы . Если изменился код агентства (буквенный), то {{NameSystem}} переименовывает менеджера агентства</td><td></td>в соответствии с новым кодом. При импорте информации о пользователях агентств в {{NameSystem}} будут посылаться следующие поля:
<{| collspadding="10" border="1" class="wikitable"! Поле во внешней системе !! Путь к элементу xml !! Тип данных !! Сопоставляемое поле в {{NameSystem}} !! Примечание|-| Идентификатор партнера| /changes/tr>partners/item[@id] <tr>| Целое число <td>| Идентификатор внешней системы| Храним как дополнительное поле|-| Идентификатор партнера| /changes/accounts/item[@partnerId]| Целое число| Идентификатор внешней системы менеджера агентства| |-| Логин</td><td>| /changes/accounts/item/login</td><td>| Строка</td><td>| Логин пользователя</td><td class="col4"></td> </tr>| <tr>|- <td>| Администратор</td><td>| /changes/accounts/item[@admin]</td><td>| 0 - нет, 1 - да</td><td>| Эксперт по бронированию </td><td></td>| |}
</tr></table>Для каждого возвращенного пользователя {{NameSystem}} проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.
Для каждого возвращенного пользователя Nemo проверяет наличие его в своей базе. Если пользователь не найден, то создается новый. Пароль генерируется случайный и криптостойкий.  Если пользователь найден, то в случае необходимости производится обновление всех полей на основании данных из внешней системы. При запросе на удаление пользователя, в Nemo {{NameSystem}} указанный логин удаляться не будет в целях сохранения целостности старых данных, а просто помечается как удаленный, и логин переименовывается и становится вида <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">[логин_пользователя]_X_[числовой идентификатор_пользователя в Само]</syntaxhighlight>.
<pre><item id=[идентификатор] action="delete" /></pre>
'''=== Таблица сопоставлений групп'''===
В административной части Nemo {{NameSystem}} надо создать отдельную страницу, на которой можно сопоставить имеющиеся группы в Nemo {{NameSystem}} номерам групп в САМО-тур (поле group в XML). Выводится список существующих групп для текущего (корневого) агентства.
== См. также ==
*[[Пользователь]]<br>*[[Авторизованный пользователь]]<br>*[[Авторизация пользователей из внешних систем]]<br>*[[Пароль]]<br>*[[Агентство]]<br>*[[Веб-сайт]]<br>*[[ПНРPassenger Name Record (PNR)]]<br>*[[Бронирование]]<br>*[[Войдирование]] [[Category:Функции]]<br/>[[Category:Интеграция]]

Навигация

'