external:smspds_v2:02_configrk:01_mcr

Различия

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

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

external:smspds_v2:02_configrk:01_mcr [2022/11/23 16:38] – создано Евгений Агеевexternal:smspds_v2:02_configrk:01_mcr [2022/11/25 12:10] (текущий) Евгений Агеев
Строка 1: Строка 1:
 ====== MCR-алгоритмы ====== ====== MCR-алгоритмы ======
 +Работа с модулем **SMSPDS** на стороне кассы осуществляется через MCR алгоритмы и ввода с клавиатуры.
 +Пользователь на кассе нажимает функциональную клавишу "Код с клавиатуры" в выбранном заказе. В него он вводит номер телефона (в формате 7ХХХХХХХХХХ) и код.
 +Доступно два сценария работы модуля:
 +  * Авторизация пользователя по коду;
 +  * Авторизация только по номеру телефона (без кода).
  
 +
 +MCR алгоритмы создаются в окне **Сервис** -> **Обработка сигналов устройств** -> **MCR алгоритмы**. У всех алгоритмов одинаковые настройки: 
 +  * **Типы устройств**: Клавиатура;
 +  * **Тип алгоритма**: Скрипт вер. 7.0;
 +  * **Область**: Интерфейс.
 +
 +**ВНИМАНИЕ**: Если адрес сервера находится на отличном от http://127.0.0.1:11140/, то в скриптах необходимо вручную поменять адреса запросов.
 +===== Авторизация пользователя по коду =====
 +Для данного сценария необходимо создать 2 MCR алгоритма в менеджерской r_keeper.
 +Первый алгоритм используется для запроса на генерацию кода и его отправки. Название: "SMSPDS Telephone Generate code"
 +{{ :external:smspds_v2:02_configrk:pasted:20221125-120941.png? }}
 +В него вставить следующий скрипт:
 +<code>
 +var
 +  response: String;
 +  code_resp: Integer;
 +begin
 +  if (Length(Parameter) = 11) then
 +  begin
 +    code_resp := HTTPGet('http://127.0.0.1:11140/api/v1/accounts/generate-code?phone='+Parameter, response);
 +    if code_resp = -1 then
 +    begin
 +      GUI.ShowMessage('Отсутствует подключение к SMSPDS');    
 +    end
 +    else if code_resp = 500 then
 +    begin
 +      GUI.ShowMessage('Неизвестная ошибка сервера');
 +    end
 +    else if pos('[ERROR', response) > 0 then
 +    begin
 +      GUI.ShowMessage(copy(response, 9, Length(response) - 9 ));
 +    end
 +    else 
 +    begin
 +      GUI.ShowMessage(response);          
 +    end;
 +  end;
 +  Result := False;    
 +end;
 +</code>
 +
 +
 +Второй алгоритм используется непосредственно для ввода кода пользователю, состоящего из 4-х цифр. Название: "SMSPDS Check code". В свойствах алгоритма установить в поле "Объект" установить алгоритм авторизации карты по ее коду (алгоритм "Персональная дисконтная система(ПДС)"). 
 +{{ :external:smspds_v2:02_configrk:pasted:20221125-120957.png? }}
 +
 +В сам алгоритм вставить следующий скрипт:
 +<code>
 +var
 +  response: String;
 +  i, j, code_resp: Integer;
 +  is_numb, is_numb_one: Boolean;  
 +begin
 +  is_numb := True;
 +  for i := 1 to Length(Parameter) do
 +  begin
 +    is_numb_one := False;
 +    for j := 0 to 9 do
 +    begin
 +      if Parameter[i] = IntToStr(j) then
 +      begin
 +        is_numb_one := True;
 +        Break;
 +      end;     
 +    end;
 +    if is_numb_one = False then
 +    begin
 +      is_numb := False;
 +      Break;
 +    end;
 +  end;
 +  if (Length(Parameter) = 4) and (is_numb = True) then
 +  begin
 +    code_resp := HTTPGet('http://127.0.0.1:11140/api/v1/accounts/check-code?code='+Parameter, response); 
 +    if code_resp = -1 then
 +    begin
 +      GUI.ShowMessage('Отсутствует подключение к SMSPDS');
 +    end 
 +    else if code_resp = 500 then
 +    begin
 +      GUI.ShowMessage('Неизвестная ошибка сервера')
 +    end
 +    else
 +    begin
 +      if pos('[ERROR', response) > 0 then
 +      begin
 +        GUI.ShowMessage(copy(response, 9, Length(response) - 9 ));
 +        Result := False;
 +      end
 +      else
 +      begin
 +        for i := 1 to Length(response) do
 +        begin
 +          is_numb_one := False;
 +          for j := 0 to 9 do
 +          begin
 +            if response[i] = IntToStr(j) then
 +            begin
 +              is_numb_one := True;
 +              Break;
 +            end;     
 +          end;
 +          if is_numb_one = False then
 +          begin
 +            is_numb := False;
 +            Break;
 +          end;
 +        end;
 +        if is_numb = True then
 +        begin 
 +          Parameter := response;
 +          Result := True;
 +        end
 +        else begin
 +          GUI.ShowMessage(response)
 +          Result := False;    
 +        end; 
 +      end;
 +    end;    
 +  end
 +  else
 +  begin
 +    Result := False;
 +  end;
 +end;
 +</code>
 +
 +
 +===== Авторизация пользователя по номеру телефона (без кода) =====
 +Для данного сценария используется один MCR алгоритм. Его название "SMSPDS Telephone Get Card code". В свойствах алгоритма установить в поле "Объект" установить алгоритм авторизации карты по ее коду (алгоритм "Персональная дисконтная система(ПДС)"). 
 +{{ :external:smspds_v2:02_configrk:pasted:20221125-121014.png? }}
 +В сам алгоритм вставить следующий скрипт:
 +<code>
 +var
 +  response: String;
 +  code_resp: Integer;
 +begin
 +  if (Length(Parameter) = 11) then
 +  begin
 +    code_resp := HTTPGet('http://127.0.0.1:11140/api/v1/accounts/get-card-by-phone?phone='+Parameter, response);
 +    if code_resp = 500 then
 +    begin
 +      GUI.ShowMessage('Неизвестная ошибка сервера');
 +    end
 +    else if code_resp = -1 then
 +    begin
 +      GUI.ShowMessage('Отсутствует подключение к SMSPDS');
 +    end 
 +    else if pos('[ERROR', response) > 0 then
 +    begin
 +      GUI.ShowMessage(copy(response, 9, Length(response) - 9 ));
 +    end
 +    else
 +    begin
 +      Parameter := response;
 +      Result := True;    
 +    end;      
 +  end;
 +end;
 +</code>
  • external/smspds_v2/02_configrk/01_mcr.1669210726.txt.gz
  • Последнее изменение: 2022/11/23 16:38
  • Евгений Агеев