external:smspds:01_установка_и_настройка

Поставляется в виде архивированной сборки всех необходимых для работы файлов:

  • cardimp.exe - Модуль для активации карты в системе ПДС
  • cardimp.ini - Файл конфигурации модуля CardImp
  • CscLink.dll - Библиотека для соединения с CARDSERV
  • CscLink.ini - Файл конфигурации CscLink
  • RTCP.dll - Библиотека сетевого протокола для связи с CARDSERV
  • *sms.dll* - Библиотека, в которой реализовано API СМС провайдера
  • *sms.ini* - Файл конфигурации sms.dll
  • PDSSMS.exe - Исполняемый файл главного модуля
  • config.ini - Файл конфигурации главного модуля
  • LicSystem.dll - Библиотека системы лицензирования
  • Server.bin - Служебный файл.

* sms.dll - На данный момент в поставку включена библиотека sms_smsc.dll, реализующая API SMS провайдера smsc.ru

Интеграция с другими SMS провайдерами возможна, но обсуждается отдельно.

CscLink.ini и cardimp.ini

В двух этих файлах необходимо задать значения одних и тех же параметров: IP адрес CARDSERV и порт протокола RTcp. Файлы имеют практически идентичную структуру за небольшими исключениями.

Пример структуры файла с комментариями:

[Settings]
CSLinkDLL = RTcp ;библиотека соединения с CARDSERV(поставляется в комплекте)(не требует редактирования)
CSLinkGate=1 ;служебный параметр(не требует редактирования)

[RTcp]
Server1=127.0.0.1 ;IP адрес компьютера, на котором работает CARDSERV
Client1=CscLink ;имя клиента. Любое уникальное для клиентского компьютера (не требует редактирования)
Port1=3456 ; порт протокола RTcp у CARDSERV (должен быть включен в CARDSERV)

После настройки CscLink.dll и cardimp.exe можно перейти к конфигурации PDSSMS

config.ini

Содержит в себе конфигурационные параметры для модуля PDSSMS.exe

[SERVER]
;Локальный порт модуля (Listen)
LocalPort=11000
;Имя файла библиотеки для отправки смс (может отличаться в зависимости от провайдера)
SmsDll=sms_smsc.dll

[PDS]
;имя пользователя для подключения к CARDSERV. Должен иметь доступ к редактированию счетов в Pcards!
;Рекомендуется создать отдельного пользователя, т.к. учетка ucs по умолчанию не редактирует счета.
User=ucs
;пароль пользователя для подключения к CARDSERV
Pass=ucs
;время жизни невостребованного ПИН кода в минутах
PinLifeTime=10
;Шаблон СМС сообщения для гостя
;Строка "[PIN]" будет заменена на сгенерированный пин-код авторизации.
;Текст может быть как до "[PIN]", так и после
;Сочетание символов "/n" будет заменено на перенос строки

Message=Ваш код авторизации: [PIN]

[LOG]
;Уровень логирования (-1 - не писать, 0 - ошибки, 1 - ошибки и критические,>1 - режим отладки )
LogLevel=1
;Срок хранения .log файлов в днях
OldLogs=7

Пример значения параметра Message

**Значение параметра**

Message=Ресторан "Рога и Копыта"/nВаш код авторизации: [PIN]/nХорошего дня!

**Сообщение для гостя**

Ресторан "Рога и Копыта"
Ваш код авторизации: 3214
Хорошего дня!

Помните, что большинство СМС операторов ограничивают длину сообщения. Превышение лимита приведет к отправке двух и более сообщений, каждое из которых оплачивается согласно текущему тарифу.

Помимо конфигурации выше описанных модулей, потребуется так же настроить библиотеку для отправки СМС для конкретного выбранного провайдера. Подробнее читайте на странице sms_dll


Модуль SMSPDS распространяется на условиях LifeTime лицензии с использованием системы лицензирования ГК «Карбис».
Для того что бы первично пролицензировать модуль у клиента необходимо выполнить запуск

PDSSMS.exe /desktop

ВАЖНО!
Дальнейшее продление лицензии на модуль «СМС-ПДС» делается ТОЛЬКО через сайт лицензирования (Описание системы лицензирования lic.carbis.ru)


Установка модуля SMSPDS подразумевает, что связь между RK7 и CARDSERV уже настроена и готова к работе.

Исходя из этого настройка RK7 для работы с SMSPDS сводится к добавлению двух скриптов и одного MCR алгоритма.

Скрипт PDS_Activate

  1. В менеджерской станции перейти в меню «Сервис > Скрипты»
  2. В группе скриптов «Операции» добавить скрипт PDS_Activate
  3. Добавить содержимое скрипта:
var
card_num: String;
fio, fio2 : String;
date : String;
tel: String;
flag, i: Integer;
res: String;
addr:string;
begin
  flag:=0;
  addr := '192.168.1.7:11000';
  card_num := gui.InputBox('Номер Карты', 'Введите номер карты, выдаваемой Гостю', '', true);
  fio := gui.InputBox('ФИО Гостя', 'Введите ФИО Гостя', '', false);
  date := gui.InputBox('Дата рождения (дд.мм.гггг)', '', '', true);

  while flag = 0 do
  begin
    tel := gui.InputBox('Номер Телефона (7-ХХХ-ХХХ-ХХ-ХХ)', 'Введите номер Телефона ', '', true);
    if Length(tel) <> 11 then
      gui.ShowMessage('Не верный номер телефона!!!');
    flag:=1;
  end;

  flag := gui.MessageDlgEx('Карта: '+card_num+#10+'ФИО: '+fio+#10+'Дата рождения: '+date+#10+
                         'Телефон: '+tel, mtConfirmation, mbYes+mbNo, 'Добавить; Отмена');
  if flag = 6 then   // это "Ок"
    begin
      fio2 := '';
      for i := 1 to Length(fio) do
      begin
        fio2 := fio2 + IntToStr(Ord(fio[i]))+'_';
      end;
      if HttpGet('http://'+addr+'/setcard?card_num='+card_num+'&fio='+fio2+'&date='+date+'&tel='+tel, res) = 0 then
      begin
           if pos('<?ERROR?>', res)> 0 then
              gui.showmessage(res)
           else if pos('OK',res)> 0 then
              gui.showmessage('Карта успешно добавлена!')
           else
              GUI.ShowMessage('Ответ сервера: '+res);
      end;
    end;
end;

После создания скрипта нужно отредактировать значение переменной addr, заданное в начале скрипта.
Необходимо ввести IP адрес и listen порт модуля PDSSMS.exe через двоеточие.

Скрипт PDS_Authorize

Повторить действия 1-3 из PDS_Activate, но задать имя скрипта «PDS_Authorize»

Содержимое скрипта:

var
card: String;
tel : String;
pin0: String;
pin1: String;
flag: Integer;
addr: string;
begin
  addr:='192.168.1.7:11000';
  flag:=0;
  while flag = 0 do
  begin
    tel := gui.InputBox('Номер Телефона (7-ХХХ-ХХХ-ХХ-ХХ)', 'Введите номер Телефона ', '', true);
    if tel = '' then
      flag := 2;
    if Length(tel) <> 11 then
      gui.ShowMessage('Не верный номер телефона. Ожидается 11 цифр.')
    else
      flag:=1;
  end;

  if Flag = 2 then
     Exit;

  if HttpGet('http://'+addr+'/authorize?phone='+tel, pin0) = 0 then
  begin
       if pos('<?ERROR?>',pin0)> 0 then
            GUI.ShowMessage(pin0)
       else if pos('OK',pin0)> 0 then
         gui.ShowMessage('Гостю отправлен код авторизации.')
       else
         gui.ShowMessage('Ответ сервера: '+pin0);
  end
  else
      GUI.ShowMessage('Сервер авторизации не отвечает. Повторите попытку позднее.');

  if Parameter = 1 then
  begin
       pin1 := gui.InputBox('Введите ПИН-КОД', 'Введите ПИН-Код, отправленный на номер телефона', '', true);
       RK7.PerformMCRAlgorith(pin1, 0);
  end;
end;

ВНИМАНИЕ! Для работы скрипта в быстром чеке (с отображением окна) необходимо у функциональной клавиши задать свойства «параметр» и «параметр.пуст» равным единице (1)

Не в быстром чеке - тоже проверьте эти параметры, тоже должны быть равны единице.

MCR Алгоритм

  1. Перейти в справочник «Сервис > Обработка сигналов устройств > MCR Алгоритмы»
  2. Создать копию MCR Алгоритма, использующегося для классической авторизации карт ПДС
  3. Переименовать его содержательно (например «ПИН код SMSPDS»)
  4. Выставить тип алгоритма «Скрипт вер. 7.0»
  5. Поставить галки типов устройств «Клавиатура» и «Скрипт». Все остальные должны быть сняты.

Содержимое скрипта:

var
   res:string;
   url:string;
begin
     if Length(Parameter) <> 4 then
     begin
          Result:=false;
     end
     else
     begin
          url:='http://192.168.1.7:11000/pincode?pin='+Parameter;
          res:='';
          httpget(url,res);
          if pos('<?ERROR?>',res)> 0 then
          begin
               GUI.ShowMessage('Ошибка авторизации пин-кода: '+res);
               Result:=false;
          end
          else if Length(res)> 0 then
          begin
               Parameter:=res;
               Result:=true;
          end;
     end;
end;

В строке, где задается значение переменной url исправить «192.168.1.7:11000» на IP адрес и listen порт PDSSMS.exe

Настройка СМС сообщений

В стандартной поставке программного обеспечения используется интеграция с СМС провайдером smsc.

Для работы системы необходимо зарегистрировать у провайдера личный кабинет. После подтверждения номера телефона, Вам будет начислено 15 рублей на счет, которых должно быть достаточно для тестирования ПО.

После того, как Вы зарегистрировали личный кабинет у провайдера, необходимо указать данные для авторизации в конфигурационном файле sms_smsc.ini
Для этого используется утилита inicrypt, включенная в дистрибутив.

1. Запустите исполняемый файл IniCrypt_Project.exe, нажмите кнопку открыть и укажите файл sms_smsc.ini

inicrypt1.jpg

2. В поле «Секция» выберите пункт «smsc.ru»

inicrypt1_1.jpg

3. Вставьте логин и пароль Вашего личного кабинета в соответствующие поля, затем нажмите кнопку «Сохранить»

inicrypt1_2.jpg

4. Закройте программу IniCrypt_Project.exe

С версии PDSSMS.exe v1.0.2.99 появилась возможность авторизации карты по номеру телефона БЕЗ использования СМС кода

Для использования такого функционала необходимо:

  1. Перейти в справочник «Сервис > Обработка сигналов устройств > MCR Алгоритмы»
  2. Создать копию MCR Алгоритма, использующегося для классической авторизации карт ПДС
  3. Переименовать его содержательно (например «ПИН код SMSPDS»)
  4. Выставить тип алгоритма «Скрипт вер. 7.0»
  5. Поставить галки типов устройств «Клавиатура» и «Скрипт». Все остальные должны быть сняты
  6. Вставить в скрипт алгоритма следующий код:
var
   res:string;
   url:string;
begin
     if Length(Parameter) <> 11 then //количество символов номера телефона
     begin
          Result:=false;
     end
     else
     begin
          url:='http://192.168.1.7:11000/fastauthorize?phone='+Parameter;
          res:='';
          httpget(url,res);
          if pos('<?ERROR?>',res)> 0 then
          begin
               GUI.ShowMessage('Ошибка авторизации карты: '+res);
               Result:=false;
          end
          else if Length(res)> 0 then
          begin
               Parameter:=res;
               Result:=true;
          end;
     end;
end;

Аналогично с предыдущим MCR алгоритмом, в строке, где задается значение переменной url исправить «192.168.1.7:11000» на IP адрес и listen порт PDSSMS.exe

ЗЫ При использовании такого механизма, скрипт PDS_Authorize может быть отключен, для авторизации карты использовать стандартную функциональную клавишу «Код с клавиатуры».

Использование скриптов

Для активации скриптов необходимо назначить их на функциональные клавиши и добавить на экранные формы кассы.

В справочнике «Сервис > Операции» выбрать две пользовательских операции для PDS_Authorize и PDS_Activate, назначить им соответствующие скрипты

В справочнике «Настройки > Графический интерфейс > Функциональные клавиши» добавить функциональную клавишу «Авторизация карты» в группу «Операции с заказом > Селектор операций», а так же клавишу «Активация карты» в группу «Главное меню»

Перейти в справочник «Настройки > Графический интерфейс > Селекторы»

Сделать копию селектора главное меню, добавить в него клавишу «Активация карты» с параметром по умолчанию

Сделать копию селектора операций для быстрого чека, добавить в него клавишу «Авторизация карты» с параметром 1 !!!

Сделать копию селектора операций для чека ресторана, добавить в него клавишу «Авторизация карты» с параметром по умолчанию

Добавить графическое отображение созданных клавиш в макеты скопированных селекторов, затем назначить использование этих селекторов по умолчанию.


PDSSMS.exe является desktop приложением и не требует специальных ключей для запуска. В случае возникновения ошибок во время запуска необходимо в файле config.ini установить значение LogLevel=5 и добиться повторения ошибки. В этом случае в папке Log директории приложения можно будет найти файл с подробным описанием возникшей ошибки.

  • external/smspds/01_установка_и_настройка.txt
  • Последнее изменение: 2021/09/26 14:41
  • Александр Ильин