Настройка FarCards для внешней системы лояльности
Введение
У некоторых компании, использующих r_keeper 7, есть собственная система лояльности. Для интеграции необходимо использовать FarCards. Система позволяет установить связь между r_keeper и внешними CRM-системами.
Связь осуществляется через DLL-библиотеку, которая содержит определенные функции и загружается с помощью FarCards.
При использовании дисконтной, бонусной или платежной карты в POS-терминале r_keeper, кассовый сервер подключается к FarCards, который запускает работу функций в ExtDLL — библиотеке, подключающейся к внешней CRM-системе.
ExtDLL эмулирует поведение сервера карт CARDSERV.
DLL, эмулирующая работу персональных карт, должна предоставить функции GetCardInfoEx и TransactionsEx.
Остальные функции не являются обязательными.
Описание ExtDLL.dll
Обязательные функции
Функция GetCardInfoEx
Эта функция возвращает информацию о карте из внешней системы в r_keeper.
До версии 5:
function GetCardInfo (
Card: DWORD;
Info: PCardInfo
): Integer; stdcall;
В случае, если касса присылает свой номер на запрос, номер будет отображен на входе функции в структуре Info в строке Byte со сдвигом 02 — сразу после размера структуры.
Изменения в версии 6:
function GetCardInfoEx (
Card: Int64;
Restaurant, UnitNo: DWORD;
Info: Pointer;
InpBuf: Pointer;
InpLen: DWORD;
InpKind: Word;
var OutBuf: Pointer;
var OutLen: DWORD;
var OutKind: Word
): Integer;
stdcall;
Функция TransactionEx
Эта функция проводит транзакции для кассового чека.
Старая версия функции:
function Transaction (
Card: DWORD;
Info: PTransInfo
): Integer; stdcall;
Новая версия функции:
function TransactionsEx(
Count: DWORD; List: Pointer;
InpBuf: Pointer; InpLen: DWORD; InpKind: Word;
var OutBuf: Pointer; var OutLen: DWORD; var OutKind: Word
): Integer; stdcall;
Дополнительные функции
Функция GetCardImage
function GetCardImage (
Card: DWORD;
Info: PImageInfo
): Integer; stdcall;
Возвращает файл с картинкой для карты, например фотографию владельца или его подпись.
Тип изображения - BMP, JPEG, GIF.
Размер — до 64000. Если больше, изображение будет масштабироваться.
Функция GetCardImageEx
function GetCardImageEx (
Card: Int64;
Info: Pointer
): Integer; stdcall;
Возвращает файл с картинкой для карты, например фотографию владельца
или его подпись.
Тип изображения - BMP, JPEG, GIF.
Функция GetCardMessage
function GetCardMessage (
Card: DWORD;
Info: PMsgInfo
): Integer; stdcall;
Если необходимо, возвращает сообщение, которое будет отображаться на кассовой станции для карты.
Функция GetDiscLevelInfoL
function GetDiscLevelInfoL (
Account: DWORD;
Info: Pointer
): Integer; stdcall;
Возвращает информацию о текущем дисконтном уровне карты
Функция CheckInfo (не используется в версии 6)
function CheckInfo (
Card: DWORD;
Info: Pointer;
Size: DWORD
): Integer; stdcall;
Процедура FindCardsL
procedure FindCardsL(
FindText: PAnsiChar;
CBFind: Pointer;
Back: Pointer
); stdcall;
Поиск счетов по подстроке.
Для каждого найденного счета DLL должна вызывать call-back функцию CBFind().
Первым параметром в ней DLL должна передать Back.
Card и Holder — информация из найденного счета.
Тип функции CBFind:
Процедура CBFind
procedure CBFind(
Back: Pointer;
Account: DWORD;
Card: Int64;
Holder: PAnsiChar
); stdcall;
Процедура AnyInfo
procedure AnyInfo(
InpBuf: Pointer;
InpLen: DWORD;
var OutBuf: Pointer;
var OutLen: DWORD
); stdcall;
Обмен произвольной информацией
Функция FindEmail
function FindEmail(
Email: PAnsiChar;
Info: Pointer
): Integer; stdcall;
Поиск счета по e-mail.
Процедура FindAccountsByKind(
procedure FindAccountsByKind(
Kind: Integer;
FindText: PAnsiChar;
CBFind: Pointer;
Back: Pointer
); stdcall;
Поиск счетов по разным признакам.
Дополнительные процедуры
procedure Init; stdcall; — вызовется после загрузки DLL
procedure Done; stdcall; — вызовется перед выгрузкой DLL
Установка
- Скопируйте файлы из установочной папки на локальный диск.
Укажите следующие настройки в Farcards.ini:
[FarServer]
Type = 1
DLL = XXXXXX
[ExtDLL]
Server = AServгде DLL — имя файла
- Сервер FarCards.exe
Настройка внешнего модуля
Настройка ExtDLL.ini
Обычно ExtDLL подключается ко внешней системе по сети.
Часто у библиотеки ExtDLL есть свой конфигурационный файл INI.
Пример настройки INI файла:
[Main] URL=192.168.0.191:90 CacheSecs=30 [Taxes] 1=1 2=2 3=3 [RK] Charges=16,18 TipCode=12 |
Настройка сервера
Настройте соответствующий интерфейс внешней системы для приема подключений ExtDLL (FarCards).
Затем настройте соответствующие справочники внешней системы для перевода данных r_keeper.
Настройка в r_keeper 7
Выполните настройку в rk7man.exe аналогично настройке любого из интерфейсов r_keeper CRM, PDS или Shelter.
Вызовите интерфейс с помощью кнопки Код с клавиатуры в doscash.exe, потому что другие способы (из меню выбора валюты) могут включать дополнительные символы или вызывать другие функции, поскольку существует множество различных интеграций.