Содержание
Список иллюстраций
Данное руководство предоставляет описание по установке и настройке модуля интеграции для работы с системой лояльности "getCRM" на автозаправочных комплексах cети ПАО "ТАТНЕФТЬ", работающих с системой управления Бук-TS.
Модуль запускается при старте системы на каждом рабочем месте.
Используется для накопления бонусов и оплаты ими товаров и топлива при предъявлении карты лояльности.
Модуль контролирует соединение с системой лояльности "getCRM", обеспечивает синхронную передачу команд и их преобразование в формат сответствующий протоколу взаимодействия с системой лояльности, хранение и последующую передачу данных о продажах зарегистрированных при отсутствии связи с системой лояльности getCRM (оффлайн операции) для последующего начисления бонусов.
Содержание
Модуль интеграции к системе лояльности getCrm реализован в виде клиент-серверного приложения. Серверная часть запускается в качестве демона при старте системы.
Серверная часть приложения выполняет следующие задачи:
Устанавливает подключение к системе лояльности getCRM и контролирует наличие соединения.
Производит авторизацию передачи данных.
Предоставляет клиентский интерфейс для подключения кассового ПО.
Транслирует передаваемую информацию между кассовым ПО и системой лояльности getCRM.
Управляет ханением информации передаваемой от кассового ПО в локальной базе данных.
Предоставляет возможость накопления бонусов при отсутствии связи с системой лояльности.
Производит синхронизацию данных при восстановление соединения с системой лояльности.
Модуль интеграции устанавливается на каждое рабочее место.
Для работы с системой лояльности «getCRM» необходимо установить следующие пакеты:
На сервере:
bukdbase версия >= 6.0
На рабочем месте (там, где подключен банковский терминал):
bukwp версия >= 1.2.1-0
siebel версия >= 0.1.0
/opt/siebel/bin/siebeld - основной демон, запускающийся при старте системы управления на рабочем месте.
Обеспечивает подключение, проверку связи преобразование комманд в формат протокола обмена между системой управление и системой лояльности SiebelCRM.
Выполняет обратное преобразование ответов поступающих от системы лояльности в формат для чтения системой управления.
Обеспечивает периодичную синхронизацию транзакций, зафиксированных на момент отсутствия связи (offline) с системой лояльности.
/opt/siebel/bin/siebel-сli - консольный интерфейс клиента. При запуске подключается к работающему демону и предоставляет интерфейс для работы с ним.
/opt/siebel/bin/siebel-task - Програма для передчи демону (серверному приложению) команды на постановку задания синхронизации за день .Данное задание будет выполнено процессом синхронизации сразу же при срабатывании таймаута проверки.
/opt/siebel/bin/siebel-config - утилита для просмотра текущих настроек модуля
/opt/siebel/bin/key-perms - скрипт для установки прав на пользовательские сертификаты
/opt/siebel/version - файл с информацией о текущей версии модуля
/etc/opt/siebel/samples/siebel.conf - Пример файла конфигурации
/etc/opt/siebel/ssl - Каталог для хранения пользовательских сертификатов (по умолчанию)
/etc/init.d/siebeld - Скрипт для управления запуска/остановки основного демона
/var/opt/siebel/log - Каталог логирования работы демона.
/var/opt/siebel/run - Каталог хранения информации по работающему демону (pid файлы с номером процесса демона).
/var/opt/siebel/db - Каталог локальной БД для хранения зарегистрированных модулем транзакций.
Настройки работы программы хранятся в файле "siebel.conf".
Для Debian систем по умолчанию файл конфигурации располагается в каталоге /etc/opt/siebel/.
Если путь к файлу конфигурации не указан через аргументы коммандной строки, то поиск файла конфигурации производится по следующим каталогам :
siebel.conf
${INSTALL_PREFIX}/etc/siebel.conf
/etc/siebel/siebel.conf
/usr/etc/siebel/siebel.conf
/opt/siebel/etc/siebel.conf
/usr/local/etc/siebel/siebel.conf
Файлы настройки, представлен в формате Json.
Отредактировать /etc/opt/siebel/siebel.conf и привести его к следующему виду :
{ "CheckPmtJsonRoot": 1
, "PmtJsonRootName" : "SBL"
, "ConnectionString": "https://tn103.getcrmdev.ru:18889/eai_rus/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1"
, "UseTLS" : 1
, "CertsCAPath" : "/etc/ssl/certs"
, "UserId" : "ASUTP_USER"
, "UserPass" : "XD9fYO5d"
, "ConnectTimeout" : 10 /* Таймаут соединения в секундах */
, "RetryCount" : 2 /* Кол-во попыток соединения */
, "BackgndFlushPeriod" : 900 /* Интервал проверки передачи офлайн чеков в секундах (15 мин.) */
, "OfflineCheckPeriod" : 120 /* Интервал проверки наличия TCP соединения */
, "SessionTokenTTL" : 300 /* Время жизни сессионного токена в сек. по истечении времени требуется переавторизация (на getcrm 15 мин) */
, "SendRecvTimeout" : 10 /* Таймаут приема/передачи в секундах (по умолчанию)*/
, "Port" : "54121" /* (Порт по умолчанию - 54121) */
, "Host" : "127.0.0.1" /* Только для клиента адрес сервера ( по умолчанию 127.0.0.1 ) */
, "DebugEnable" : 1
}
Дополнительные параметры с комментариями можно посмотреть в файле примера /etc/opt/siebel/samples/siebel.conf
Посмотреть настроенные параметры можно выполнив команду
/opt/siebel/bin/siebel-config
Для вступления параметров в силу необходимо перезапустить демон выполнив команду.
sudo /etc/init.d/siebeld restart
| Имя параметра | Тип данных | Описание |
|---|---|---|
|
PmtJsonRootName |
char |
Имя корневого объекта JSON в запросах/ответах идентифицирующий платежную систему по умолчанию "SBL"
{ "SBL" : { ..... } }
|
|
CheckPmtJsonRoot |
bool |
Проверять запросы/ответы JSON на принадлежность к платежной системе, все сообщения находятся внутри объекта с PmtJsonRootName |
|
ConnectionString |
char |
Адрес обработчика SOAP сообщений
https://tn103.getcrmdev.ru:18889/eai_rus/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1
|
|
DaemonNeedConnect |
bool |
Требовать наличия соединения с системой лояльности при старте демона. Если значение установлено в true, то при отсутствии связи демон завершает свою работу. |
|
UserId |
char |
Имя пользователя для подключения к сервису |
|
UserPass |
char |
Пароль пользователя для подключения к сервису |
|
ConnectTimeout |
int |
Таймаут соединения в секундах (по умолчанию 10сек.) |
|
RetryCount |
int |
Кол-во попыток соединения (по умолчанию 2) |
|
RetryTaskCount |
int |
Кол-во попыток соединения для операций суточной сверки(по умолчанию 2) |
|
RetryOffSyncCount |
int |
Кол-во попыток соединения для операций синхронизации offline чеков(по умолчанию 2) |
|
BackgndFlushPeriod |
int |
Интервал проверки передачи офлайн чеков в секундах. Если значение установлено в 0 и OfflineCheckPeriod так же установлено в 0, то паралелльный процесс проверки офлайн синхронизации отключен |
|
OfflineCheckPeriod |
int |
Интервал проверки на восстановление сетевого соединения вязи офлайн чеков в секундах. Если значение установлено в 0 и BackgndFlushPeriod так же установлено в 0, то паралелльный процесс проверки офлайн синхронизации отключен По умолчанию параметр = значению BackgndFlushPeriod по умолчанию. (15мин.) Значение не может быть больше значения BackgndFlushPeriod |
|
SessionTokenTTL |
int |
Время жизни сессионного токена в сек. по истечении времени требуется переавторизация (на getcrm 15 мин) |
|
SendRecvTimeout |
int |
Таймаут приема/передачи в секундах (по умолчанию 10сек.) |
|
SendRecvTaskTimeout |
int |
Таймаут приема/передачи в секундах для background заданий суточной сверки данных (по умолчанию 40сек.) |
|
SendRecvOffSyncTimeout |
int |
Таймаут приема/передачи в секундах для background заданий (данные оффлайн чеков и синхронизации) (по умолчанию 40сек.) |
|
Port |
int |
Порт на котором работает демон (по умолчанию - 54121) |
|
Host |
address |
Только для клиента адрес сервера ( по умолчанию 127.0.0.1) |
|
AzsIdentOverride |
bool |
Перезаписывать Идентификацию АЗС, Терминала, типа интегрируемого приложения если не указан явно в запросе |
|
SourceSystem |
char |
тип интегрируемого приложения по умолчанию <i>ASUTP</i> (требуется включение параметра AzsIdentOverride) |
|
Terminal |
char |
Используемый идентификатор терминала если не указан явно в запросе |
|
Location |
char |
Используемый идентификатор АЗС если не указан явно в запросе или отличается от идентификатора в СУ |
|
ProductIdLength |
int |
Использовать кол-во символов для идентификатора продукта (только при zeroFilledProductId = true ) |
|
ProductIdZeros |
bool |
Идентификатор продукта слева дополнять нулями до кол-ва знаков ProductIdLength.( только при значении ProductIdLength > 0 ) по умолчанию FALSE |
|
ProductTrimZeros |
bool |
Для идентификатора продукта слева убирать нули до кол-ва знаков ProductTrimLength. по умолчанию FALSE |
|
ProductTrimLength |
int |
Убрать ведущие нули для идентификатора продукта до установленной длины артикула или не 0 символа (только при ProductTrimZeros = true ) |
|
DebugEnable |
bool |
Вести отладочный лог отправленных/принятых SOAP сообщений. Работает только в случае если, программа собрана с опцией -DDEBUG_ENABLE |
|
DebugFile |
char |
Имя файла для записи отладочной информации с кодом отправляемых и получаемых SOAP сообщений (все сообщения пишутся в один файл) |
|
DebugSentFile |
char |
Имя файла для записи отладочной информации с кодом отправляемых SOAP сообщений (переопределяет DebugFile)(по умолчанию soap_SENT.log) |
|
DebugRecvFile |
char |
Имя файла для записи отладочной информации с кодом получаемых SOAP сообщений (переопределяет DebugFile)(по умолчанию soap_RECV.log) |
|
DebugTestFile |
char |
Имя файла для записи отладочной информации по обработке soap объектов (по умолчанию soap_TEST.log) |
|
DebugErrInfoEnable |
bool |
Заполнять значение ErrInfo (подробное сообщение Siebel об ошибке (системное)) |
|
AutosyncDailyEnable |
bool |
Автоматическое формирование заданий синзронизации за сутки.(по умолчанию включено) |
|
AutosyncDailyDelay |
int |
Задержка в секундах для проверки времени автоматического формирования задания синхронизации (в секундах от начала суток) (по умолчанию 0, без задержки) |
|
AutosyncShiftEnable |
bool |
Автоматическое формирование заданий синзронизации за смену (по умолчанию отключено) Введено для использования этого параметра в дальнейшем |
|
SSL/TLS Support |
||
|
UseTLS |
bool |
Использовать защищенное соединение (default) |
|
CertFilePath |
char |
Путь к файлу со списком доверенных сертификатов |
| CertsCAPath |
char |
Путь к каталогу со списком доверенных сертификатов |
| CertKeyFile |
char |
Путь к файлу с приватным ключом |
| CertKeyPassword |
char |
Пароль для приватного ключа |
|
RandomDataPath |
char |
Путь к файлу с random data |
|
TLSMode |
|
Режим работы TLS для ( по умолчанию SOAP_SSL_DEFAULT ) На текущий момент не работает, введен для дальнейшей поддержки кода На текущий момент испольжуется только режим SOAP_SSL_DEFAULT Допустимые значения для режимов TLS SOAP_SSL_DEFAULT - enables TLS v1.0, v1.1, and v1.2. SOAP_SSL_NO_AUTHENTICATION - disables peer authentication SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION - requires servers to authenticate to the client (default) SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION - requires clients to authenticate to the server SOAP_SSL_SKIP_HOST_CHECK - disables checking of the common name of the host in certificate SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE - disables checking of the expiration date of the certificate and omit CRL checks SOAP_SSL_NO_DEFAULT_CA_PATH - disables default_verify_paths (OpenSSL) SOAP_TLSv1 - enables TLS v1.0/1.1/1.2 (default) SOAP_SSLv3_TLSv1 - enables SSL v3 and TLS v1.0/1.1/1.2 SOAP_SSLv3 - restricts SSL to SSL v3 only SOAP_TLSv1_0 - restricts TLS to TLS v1.0 only SOAP_TLSv1_1 - restricts TLS to TLS v1.1 only SOAP_TLSv1_2 - restricts TLS to TLS v1.2 only |
Для запуска демона siebeld, необходимо чтобы скрипт запуска/остановки /etc/init.d/siebeld был включен в автозагрузку операционной системы.
Если необходимо управлять работой демона в ручном режиме, то можно выполнить следующие команды:
sudo /etc/init.d/siebeld start - для запуска демона
sudo /etc/init.d/siebeld stop - для остановки демона
sudo /etc/init.d/siebeld restart - для перезапуска демона
За работой демона можно наблюдать через файлы логирования, которые будут записываться в каталог /var/opt/siebel/log.
/var/opt/siebel/log/siebeld.log - основной лог файл работы демона
/var/opt/siebel/log/siebeld.err - файл ошибок работы демона
При старте демона производится попытка соединения с системой лояльности SiebelCRM, с параметрами заданными в конфигурации.
В случае если соединение не нудалось, то демон завершаеи свою работу, если только параметр DaemonNeedConnect не установлен в значение false. В этом случае демон будет инициализирован в режиме offline. Он будет продолжать принимать запросы от клиентского приложения. Часть операций (списание бонусов, получение информации по карте) будет недоступна. Демон продолжит полноценный режим работы после восстановления связи с центром лояльности. Если за время отсутствия связи накопились данные, то они будут автоматически переданы в центр лояльности. (Если инициализирован дополнительный процесс проверки offline данных. Параметр BackgroundFlushPeriod должен быть установлен в значение > 0).
Если демону не удалось инициировать соединение с центром лояльности, то необходимо проверить параметры конфигурации и в ручном режиме запустить демон еще раз. Если причина была в отсутствии связи интернет, или недоступности системы лояльности из-за каких-либо временных причин, то необходимо перезапустить демон позже или установить параметр DaemonNeedConnect в значение false и запустить демон в ручном режиме.
Если соединение с системой лояльности было успешно, то демон считается успешно инициализирован, и предоставляет интерфейс для подключения клиентов на порту 54121 (по умолчанию) для обмена командами (JSON -формат).
При запуске демон проверяет наличие локальной БД для фиксации данных по оплате с применением системы лояльности, и в случае ее отсутсвия создает новую.