Работа с модулем 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;