Содержание

MCR-алгоритмы

Работа с модулем SMSPDS на стороне кассы осуществляется через MCR алгоритмы и ввода с клавиатуры.
Пользователь на кассе нажимает функциональную клавишу «Код с клавиатуры» в выбранном заказе. В него он вводит номер телефона (в формате 7ХХХХХХХХХХ) и код.
Доступно два сценария работы модуля:

MCR алгоритмы создаются в окне СервисОбработка сигналов устройствMCR алгоритмы. У всех алгоритмов одинаковые настройки:

ВНИМАНИЕ: Если адрес сервера находится на отличном от http://127.0.0.1:11140/, то в скриптах необходимо вручную поменять адреса запросов.

Авторизация пользователя по коду

Для данного сценария необходимо создать 2 MCR алгоритма в менеджерской r_keeper.
Первый алгоритм используется для запроса на генерацию кода и его отправки. Название: «SMSPDS Telephone Generate 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;

Второй алгоритм используется непосредственно для ввода кода пользователю, состоящего из 4-х цифр. Название: «SMSPDS Check 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;

Авторизация пользователя по номеру телефона (без кода)

Для данного сценария используется один MCR алгоритм. Его название «SMSPDS Telephone Get Card 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;