MCR-алгоритмы
Работа с модулем SMSPDS на стороне кассы осуществляется через MCR алгоритмы и ввода с клавиатуры.
Пользователь на кассе нажимает функциональную клавишу «Код с клавиатуры» в выбранном заказе. В него он вводит номер телефона (в формате 7ХХХХХХХХХХ) и код.
Доступно два сценария работы модуля:
- Авторизация пользователя по коду;
- Авторизация только по номеру телефона (без кода).
MCR алгоритмы создаются в окне Сервис → Обработка сигналов устройств → MCR алгоритмы. У всех алгоритмов одинаковые настройки:
- Типы устройств: Клавиатура;
- Тип алгоритма: Скрипт вер. 7.0;
- Область: Интерфейс.
ВНИМАНИЕ: Если адрес сервера находится на отличном от 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;