Перейти к основному контенту

Интеграция Абонемент и RK7 через Farcards

Интеграция RK7 с Абонементом представляет собой следующую структурную схему (рис.1) 

Рисунок 1

RKeeper при оплате на специальную валюту, например, "Закрытие на фолио Абонемента" в категории "платежные карты" обращается к FarCards, который вызывает подключенную к нему sdmHTTPFarCard.dll. Последняя dll обращается к ключу защиты и если лицензия найдена (проект 2 модуль 11), отправляется XML запрос на TCP/IP сервер - программу HTTPRKtoSH. Этот сервер обращается к базе данных через библиотеку ShelterConnect.dll

Интеграция проверялась на версии Абонемента 145+ с версией RK7 7.6.5.475. 

  • Версия FarCards 6.04
  • Версия HttpToSH 1.5.0.1
  • ShelterConnect 1.9.0.3
  • sdmHTTPFarCard.dll 1.17.0.5

Подготовка утилит

1.  FarCards 

FarCards устанавливается на любом компьютере в одной сети с кассой и кассовым сервером. Если модуль лицензии прописан в одном ключе с Абонементом, то FarCards обязательно устанавливается на машину, где установлен этот ключ, как правило это сервер, в противном случае необходимо в настройках будет указать ip/port в секции [LOCK.SERVER] машины, где установлен сервер блокировок. 

Настройка FARCARDS.INI 

[FarServer]
Type = 1
 DLL = sdmHTTPFarCard.dll
Gate = 1
log = 30
XMLCP=1251

[LinkDLL]
1 = pds_netk
 
[pds_netk]
NetServerName=rk_first
ininame=netk.ini
DebugMessages=1

NetServerName - серверное имя. Оно понадобиться в настройках PDS интерфейса RK7.

2.  sdmHTTPFarCard.dll
FarCards обращается к sdmHTTPFarCard.dll, которая должна находиться в папке с FarCards. sdmHTTPFarCard.dll защищена ключом защиты Shelter/Абонемент
Настройки осуществляются в файле HTTPFarCard.ini. Ниже приведен его пример.
[PARAMS]
  ClientCode = HOTEL
  UserCode = UCS
  UserPwd = 12345
  LangCode = RU

[SERVER]
  Port =2277
  Host =127.0.0.1

[LOCK.SERVER]
  TCPHost = 81.94.140.196
  TCPPort = 1116
  Project = 2
  Module = 11   

[LOG]
  FileName=HTTPFarCards_AB.log
  Level = 100
  DebugLevel = 100




В данных настройках sdmHTTPFarCard.dll обращается к TCP/IP серверу, который запущен локально на машине и слушает 2277 порт.
В секции [PARAMS] задаются параметры, которыми обворачивается XML запрос. В Настройках TCP/IP сервера, могут использоваться аналогичные параметры, например для определения «свой/чужой».
В секции [LOCK.SERVER] указывается ip/port машины, где установлен сервер блокировок Shelter/Абонемент. 
В файле HTTPFarCards_AB.log ведется логирование XML команд.
SdmHTTPFarCard.dll передает данные на TCP/IP сервер/ Для интеграции с Абонементом используется HTTPRKtoSH.exe
2.3. HTTPRKtoSH.exe
HTTPRKtoSH.exe является сервером, который слушает TCP/IP и обрабатывает XML запрос от sdmHTTPFarCard.dll.  HTTPRKtoSH.exe по умолчанию всегда вызывает функции ShelterConnect.dll, которая должна находить в одной директории с ним. Основные настройки осуществляются в файле HTTPRKtoSH.ini
[SERVER]
[SERVER]
  Port = 2277
  RKInterfaceID=7
  AllCheckToHotel = 1  
                                    
  IdentPhysType = 2

  Autostart = 1
  Autohide =1

[LOG]
  FileName =  C:\UCS\AbRK7_Example\HTTPtoAB\LOG\HTTPRKtoSH.log

  Level = 30
  DebugLevel =30

  ByMonthes = 1
  ByDays = 1
  ByHours = 1

[MAIN]
messages=errors.msg

Секция [SERVER] 

Port - порт, на который будут прилетать данные из sdmHTTPFarCard 

RKInterfaceID  - Код интерфейса в RK7

image-1636643932513.png

4. ShelterConnect.dll

ShelterConnect.ini настроечный файл ShelterConnect.dll, который управляет тем, в каком формате данные будут переданы во внешнюю систему.

[Database]
  DBname    = 81.94.140.196/3080:D:\Base\Garbage\n.kamyshnikova\Vpark2\FITNESS145.FDB
  DBUser     = ucs
  DBPassword = oQKH8n0BFUE=

[ExternalClient]
  ClientID      = 1
  IdentPhysType = 2
  ConvertOperationNeed = 1
  ToOEM = 0
  NeverRestrictTransaction = 1
  FolioMask = 1
  ShowBalance = 0
  ShowBalanceFirst = 0
  RoomInfoMode =4
  TransSection =0
  ConvertOperationType=1

[log]
  FileName   = ShelterConnect.log
  Level      =  100
  DebugLevel =  100

[GarbageCollector]
  Enabled  = 0
  LifeTime = 120

[SCRK6]
  AlcoholicOperation =999
  Messages =sc.msg
  UseScreenHeader0 =1
  UseScreenHeader1 =1
  UseScreenSequelCode =1
  ShowBalance = 1
  ShowBalanceFirst = 1
  ShowBalanceEverywhere = 1
  UseDetails = 1
  UseSuperDetails = 1
 


[TranslateOperation]
     1 = 888
     3 = 888

[TranslatePayment]
  1 = 1005,910
  1000632 = 1005,901
  8 = 1005,901
  3 = 1005,901
  
  
;[Abonement]
;AbonementIdentCheckResource =ID_RESOURCE



[params]
 Balance_ExtraParamStr = &USE_ABON_FREEBALANCE=1

  

Секция [DataBase] - параметры подключения к БД Абонемент

[ExternalClient]
ClientID = 1
IdentPhysType = 2 - тип физической карты в Абонементе 
ConvertOperationNeed = 1 - использовать секцию [TranslateOperation]
ToOEM = 0 - настройка кодировки 
NeverRestrictTransaction = 1 - ( разрешить закрывать на фолио выше кредитного лимита клиента) (баланс в RK будет отображаться, как 99999999999)  
FolioMask = 1 - разрешить поиск по фолио ( в рк при оплате на фолио вместо карты можем ввести F####  ( #### - номер фолио)) 
ShowBalance = 0 - отобразить баланс гостя 
ShowBalanceFirst = 0 - отобразить баланс гостя в начале 
RoomInfoMode =4 - 
TransSection =0
ConvertOperationType=1

Секция [SCRK6] не работает при данной схеме связки. Некоторые аналогичные параметры можно использовать в [ExternalClient]

[TranslateOperation]
;Таблица соответствия Кода групп станций r_k и создаваемой в Абонемент услуги.

Код можно посмотреть в RK7 

image-1636644913686.png

Код услуги в Абонементе. 

image-1636644989178.png