external:smspds:main

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
external:smspds:main [2020/02/11 08:21] Данила Матюшевexternal:smspds:main [2021/09/26 14:41] (текущий) – удалено Александр Ильин
Строка 1: Строка 1:
-====== SMS PDS - двухфакторная СМС авторизация карт персональной дисконтной системы ====== 
- 
----- 
- 
-**Описание:** Плагин для r-keeper v7 и ПДС, позволяющий использовать двухфакторную авторизацию с СМС кодом, для карт Персональной Дисконтной Системы.\\ 
-С версии PDSSMS.exe v1.0.2.99 появилась возможность авторизации карты по номеру телефона БЕЗ использования СМС кода. 
- 
- 
-**Стоимость:** 12 000 рублей (единовременно).\\ 
-Лицензируется подключение к базе CardServ.\\  
-При использовании технологии SynCard лицензируется подключение либо к Head (требуется 1 лицензия), либо к каждому Local (количество лицензий по количеству Local серверов).\\ 
- 
-*Отправка СМС тарифицируется дополнительно [[https://smsc.ru/tariffs/|по тарифам смс-провайдера]] (в среднем от 1,85 до 2,2 руб за 1 СМС)  
- 
-**Скидки** для дилеров UCS и сетевых объектов.\\ 
- 
-**Скачать:**\\ 
-[[http://soft.carbis.ru/download/Carbis%20SMS_PDS%20(HoReCa).pdf|Презентация решения]]\\ 
-[[https://www.youtube.com/watch?v=j_6HrQ6C4oA|Видео с демонстрацией работы модуля]]\\ 
-[[https://yadi.sk/d/4gWjimYAVqW9Mg|Актуальный дистрибутив]]\\ 
- 
----- 
- 
-//**Возможности** // 
- 
-  * //Полный отказ от пластиковых карт в заведении.// 
-  * //Авторизация отдельных пользователей через СМС код.// 
-  * //Выпуск новой карты "не отходя от кассы", без необходимости заполнения анкеты гостя через PCARDS.// 
-  * //Авторизая только по номеру телефона (без отправки СМС)// 
-//**Поставка**  // 
- 
-  * PDSSMS.exe - Модуль, для работы с СМС провайдером и CARDSERV 
-  * Скрипт PDS_Activate - Скрипт на встроенном языке r-keeper для активации карты 
-  * Скрипт PDS_Authorize - Скрипт для запуска авторизации карты в заказе 
-  * MCR Алгоритм - Для распознавания кода авторизации и добавления карты в заказ 
- 
----- 
- 
-**Описание механизма работы** 
- 
-**Активация НОВОЙ карты на кассе** 
- 
-**Внимание!** Если на объекте планируется выдавать (активировать) карты на кассе, то предварительно нужно выполнить ряд действий в pcards. А именно:\\ 
-  * Через групповые операции создать диапазон новых карт с конкретными номерами, нужной скидкой и/или бонусом, а так же выставить настройки использования. Если пластик используется (гостю выдается физическая карта и она тут же активируется на касса), то в pcards заводим именно те номера что на картах. 
- 
-После нажатия на функциональную клавишу в главном меню RK7, запустится скрипт, по сценарию которого пользователю будет предложено ввести номер выдаваемой карты, ФИО гостя, день его рождения и номер телефона. После заполнения всех предложенных полей скрипт отправит запрос в модуль PDSSMS, который создаст/активирует карту в CARDSERV и заполнит все введенные анкетные данные. 
- 
-**Авторизация карты (применение карты в заказ)** 
- 
-После нажатия на функциональную клавишу в открытом заказе, пользователю будет предложено ввести номер телефона гостя, который будет отправлен в модуль SMSPDS. Модуль выполнит поиск карты гостя по номеру телефона в системе ПДС. В случае успеха будет сгенерирован одноразовый PIN код и отправлен на номер телефона гостя. После получения СМС сообщения с кодом авторизации, гость называет его пользователю. Пользователь вводит одноразовый ПИН код гостя в соответствующее поле ввода в заказе RK7. Этот код отправляется в модуль SMSPDS, который в обмен на верный ПИН код возвращает номер карты гостя, которая авторизуется в заказе. 
- 
-В зависимости от настроек ПДС в кипере гость получит скидку/бонус и сможет потратить бонусные баллы со своего счета. 
- 
----- 
- 
-===== Установка и конфигурация ===== 
- 
-==== PDSSMS ==== 
- 
-Поставляется в виде архивированной сборки всех необходимых для работы файлов: 
- 
-  * 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 провайдера [[www.smsc.ru|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 
- 
-<code> 
-[SERVER] 
-;Локальный порт модуля (Listen) 
-LocalPort=11000 
-;Имя файла библиотеки для отправки смс (может отличаться в зависимости от провайдера) 
-SmsDll=sms_smsc.dll 
- 
-[PDS] 
-;имя пользователя для подключения к CARDSERV 
-User=ucs 
-;пароль пользователя для подключения к CARDSERV 
-Pass=ucs 
-;время жизни невостребованного ПИН кода в минутах 
-PinLifeTime=10 
-;Шаблон СМС сообщения для гостя 
-;Строка "[PIN]" будет заменена на сгенерированный пин-код авторизации. 
-;Текст может быть как до "[PIN]", так и после 
-;Сочетание символов "/n" будет заменено на перенос строки 
- 
-Message=Ваш код авторизации: [PIN] 
- 
-[LOG] 
-;Уровень логирования (-1 - не писать, 0 - ошибки, 1 - ошибки и критические,>1 - режим отладки ) 
-LogLevel=1 
-;Срок хранения .log файлов в днях 
-OldLogs=7 
-</code> 
- 
-**Пример значения параметра Message** 
-<code> 
-**Значение параметра** 
- 
-Message=Ресторан "Рога и Копыта"/nВаш код авторизации: [PIN]/nХорошего дня! 
- 
-**Сообщение для гостя** 
- 
-Ресторан "Рога и Копыта" 
-Ваш код авторизации: 3214 
-Хорошего дня! 
-</code> 
- 
-**Помните, что большинство СМС операторов ограничивают длину сообщения. Превышение лимита приведет к отправке двух и более сообщений, каждое из которых оплачивается согласно текущему тарифу.** 
- 
-Помимо конфигурации выше описанных модулей, потребуется так же настроить библиотеку для отправки СМС для конкретного выбранного провайдера. Подробнее читайте на странице **sms_dll** 
- 
- 
----- 
- 
-==== Лицензирование ==== 
- 
-Модуль SMSPDS распространяется на условиях LifeTime лицензии с использованием системы лицензирования ГК "Карбис". 
- 
-Подробнее о лицензировании программных продуктов ГК "Карбис" можно узнать на странице **Лицензирование** 
- 
- 
----- 
- 
-==== Настройки RK7 ==== 
- 
-Установка модуля SMSPDS подразумевает, что связь между RK7 и CARDSERV уже настроена и готова к работе. 
- 
-Исходя из этого настройка RK7 для работы с SMSPDS сводится к добавлению двух скриптов и одного MCR алгоритма. 
- 
-=== Скрипт PDS_Activate === 
- 
-  - В менеджерской станции перейти в меню "Сервис > Скрипты" 
-  - В группе скриптов "Операции" добавить скрипт PDS_Activate 
-  - Добавить содержимое скрипта: 
- 
-<code> 
-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; 
-</code> 
- 
- 
-После создания скрипта нужно отредактировать значение переменной addr, заданное в начале скрипта. \\ Необходимо ввести IP адрес и listen порт модуля PDSSMS.exe через двоеточие. 
- 
-=== Скрипт PDS_Authorize === 
- 
-Повторить действия 1-3 из PDS_Activate, но задать имя скрипта "PDS_Authorize" 
- 
-Содержимое скрипта: 
- 
-<code> 
-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; 
-</code> 
- 
-**ВНИМАНИЕ!** 
-Для работы скрипта в быстром чеке (с отображением окна) необходимо у функциональной клавиши задать свойства "параметр" и "параметр.пуст" равным единице (1) 
-{{:external:smspds:подключить_смс_пдс_-_оазис_28.01.2020_07_59_06_46719.png|}} 
- 
-=== MCR Алгоритм === 
- 
-  - Перейти в справочник "Сервис > Обработка сигналов устройств > MCR Алгоритмы" 
-  - Создать копию MCR Алгоритма, использующегося для классической авторизации карт ПДС 
-  - Переименовать его содержательно (например "ПИН код SMSPDS") 
-  - Выставить тип алгоритма "Скрипт вер. 7.0" 
-  - Поставить галки типов устройств "Клавиатура" и "Скрипт". Все остальные должны быть сняты. 
- 
-Содержимое скрипта: 
- 
-<code> 
-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; 
-</code> 
- 
-В строке, где задается значение переменной url исправить "192.168.1.7:11000" на IP адрес и listen порт PDSSMS.exe 
- 
-=== Настройка СМС сообщений === 
- 
-В стандартной поставке программного обеспечения используется интеграция с СМС провайдером [[https://smsc.ru/?pp336049|smsc]]. \\ 
-Для работы системы необходимо зарегистрировать у провайдера личный кабинет. После подтверждения номера телефона, Вам будет начислено 15 рублей на счет, которых должно быть достаточно для тестирования ПО. 
- 
-После того, как Вы зарегистрировали личный кабинет у провайдера, необходимо указать данные для авторизации в конфигурационном файле sms_smsc.ini \\ Для этого используется утилита inicrypt, включенная в дистрибутив. 
- 
-1. Запустите исполняемый файл IniCrypt_Project.exe, нажмите кнопку открыть и укажите файл sms_smsc.ini 
- 
-{{:external:smspds:inicrypt1.jpg|}} 
- 
-2. В поле "Секция" выберите пункт "smsc.ru" 
- 
-{{:external:smspds:inicrypt1_1.jpg|}} 
- 
-3. Вставьте логин и пароль Вашего личного кабинета в соответствующие поля, затем нажмите кнопку "Сохранить" 
- 
-{{:external:smspds:inicrypt1_2.jpg|}} 
- 
-4. Закройте программу IniCrypt_Project.exe 
- 
-**С версии PDSSMS.exe v1.0.2.99 появилась возможность авторизации карты по номеру телефона БЕЗ использования СМС кода** 
- 
-Для использования такого функционала необходимо: 
- 
-  - Перейти в справочник "Сервис > Обработка сигналов устройств > MCR Алгоритмы" 
-  - Создать копию MCR Алгоритма, использующегося для классической авторизации карт ПДС 
-  - Переименовать его содержательно (например "ПИН код SMSPDS") 
-  - Выставить тип алгоритма "Скрипт вер. 7.0" 
-  - Поставить галки типов устройств "Клавиатура" и "Скрипт". Все остальные должны быть сняты 
-  - Вставить в скрипт алгоритма следующий код: 
- 
-<code> 
-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; 
-</code> 
- 
-Аналогично с предыдущим MCR алгоритмом, в строке, где задается значение переменной url исправить "192.168.1.7:11000" на IP адрес и listen порт PDSSMS.exe 
- 
-**ЗЫ При использовании такого механизма, скрипт PDS_Authorize может быть отключен.** 
- 
-=== Использование скриптов === 
- 
-Для активации скриптов необходимо назначить их на функциональные клавиши и добавить на экранные формы кассы. 
- 
-В справочнике "Сервис > Операции" выбрать две пользовательских операции для PDS_Authorize и PDS_Activate, назначить им соответствующие скрипты 
- 
-В справочнике "Настройки > Графический интерфейс > Функциональные клавиши" добавить функциональную клавишу "Авторизация карты" в группу "Операции с заказом > Селектор операций", а так же клавишу "Активация карты" в группу "Главное меню" 
- 
-Перейти в справочник "Настройки > Графический интерфейс > Селекторы" 
- 
-Сделать копию селектора главное меню, добавить в него клавишу "Активация карты" с параметром по умолчанию 
- 
-Сделать копию селектора операций для **быстрого чека**, добавить в него клавишу "Авторизация карты" с параметром 1 
-**!!!** 
-{{:external:smspds:подключить_смс_пдс_-_оазис_28.01.2020_07_59_06_46719.png|}} 
- 
-Сделать копию селектора операций для чека ресторана, добавить в него клавишу "Авторизация карты" с параметром по умолчанию 
- 
-Добавить графическое отображение созданных клавиш в макеты скопированных селекторов, затем назначить использование этих селекторов по умолчанию. 
- 
- 
----- 
- 
-===== Запуск ===== 
- 
-PDSSMS.exe является desktop приложением и не требует специальных ключей для запуска. В случае возникновения ошибок во время запуска необходимо в файле config.ini установить значение LogLevel=5 и добиться повторения ошибки. В этом случае в папке Log директории приложения можно будет найти файл с подробным описанием возникшей ошибки. 
- 
  
  • external/smspds/main.1581398474.txt.gz
  • Последнее изменение: 2020/02/11 08:21
  • Данила Матюшев