Команды протокола

Ответить


В целях предотвращения автоматической отправки форм спам-ботами, введите отображённый текст в поле ниже.
Смайлики
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ОТКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Команды протокола

Re: Команды протокола

Сообщение RndIT » 07 апр 2017, 09:29

Logger писал(а):А остальное не поменялось? Печать чека в частности?
И когда это же самое будет реализовано в самом сервере (по идее уже должно быть реализовано, т.к. супервизор работает через сервер?), а то как-то не хочется переходить с сокетов на супервизор.

Открытие смены и открытие смены в фискальном накопителе это две обязательные процедуры? Т.е. нужно делать обе или только одну?
У конкурентов отбивается только одна бумажка "Открытие смены". Отбивается вместе с первым чеком


Наша основная задача - обеспечение обратной совместимости с уже имеющимися разработками и интеграциями. Поэтому протокол только расширяется.

В самом кассовом сервере так же добавлены команды. Описание есть на основном сайте в разделе "Протокол" (в конце страницы).

Однозначного ответа (офциального) не имеем, т.к. не можем его получить от уважаемой кампании. Рекомендуем использовать одну команду "ОткрытьСмену".

Re: Команды протокола

Сообщение Logger » 04 апр 2017, 08:11

А остальное не поменялось? Печать чека в частности?
И когда это же самое будет реализовано в самом сервере (по идее уже должно быть реализовано, т.к. супервизор работает через сервер?), а то как-то не хочется переходить с сокетов на супервизор.

Открытие смены и открытие смены в фискальном накопителе это две обязательные процедуры? Т.е. нужно делать обе или только одну?
У конкурентов отбивается только одна бумажка "Открытие смены". Отбивается вместе с первым чеком

Re: Команды протокола

Сообщение RndIT » 28 мар 2017, 13:29

В рамках доработки программного обеспечения для требований 54-ФЗ (онлайн-кассы) в протокол добавлены следующие команды:

Открыть смену

Код: Выделить всё

open_session;

Обязательная команда для обеспечения синхронизации с ОФД (оператором фискальных данных)

Открыть смену в фискальном накопителе (ФН)

Код: Выделить всё

open_session_fn;

открывает смену в фискальном накопителе

Передать произвольную TLV-структуру

Код: Выделить всё

set_tlv;ТЕГ;ДЛИНА;ДАННЫЕ;

Для передачи на сервер ОФД дополнительных параметров используются TLV-структуры, подробно описанные в "Описание протокола уровня представления данных. Форматы фискальных документов" авторства ФНС (во вложении).

Для примера, для отправки телефона +7928ХХХХХХХ необходимо использовать тег 1008, длина сообщения 12 байт

Код: Выделить всё

set_tlv;1008;12;+7928ХХХХХХХ;



Важное изменение:
Теперь после каждого ответа по WebAPI добавляется дополнительный параметр кодированный ответ XML-протокола, как в ответе ЗапросСтатуса. Кодирование осуществляется согласно base64url-алгоритма. Это позволяет осуществлять трансляцию ответов кассового сервера в полном объеме для анализа на стороне сервера-заказчика.

Список команд будет расширяться. Приглашаю к проведению тестирования минимально необходимого функционала для работа с онлайн-кассами Штрих-М по протоколу
Вложения
Форматы ФД в1_0.pdf
Описание протокола уровня представления данных. Форматы фискальных документов
(1019.72 КБ) 1354 скачивания

Команды протокола

Сообщение RndIT » 19 мар 2016, 00:26

Открытие чека

Код: Выделить всё

b;<ТИП_ЧЕКА>;<ИМЯ_КАССИРА>;

Параметры:
  • <ТИП_ЧЕКА> -- тип открываемого чека. Чек продажи ТИП_ЧЕКА=0. Чек возврата ТИП_ЧЕКА=1.
  • <ИМЯ_КАССИРА> -- UTF-8 строка, не более 36 символов;
Статус ФР после исполнения команды: не меняется.
Примечание: По-умолчанию тип чека -- чек продажи. В этом случае не рекомендуется, но допускается не использовать команду "Открытие чека", т.к. автоматически будет открыт чек продажи.


Фискальные команды
Фискальные команды - те команды, в результате исполнения которых происходит изменение внутренних регистров: денежных и количественных.


Внесение наличных денежных средств в кассу

Код: Выделить всё

imde;<СУММА>;

Параметры:
СУММА - положительное целое число (копейки).
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа. Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: регистрируется в памяти ФР факт внесения наличных денежных средств в кассовый ящик. Печатается квитанция о внесении.
Примечание: данная команда рекомендуется к использованию.

Внесение изъятие наличных денежных средств из кассы (инкассация)

Код: Выделить всё

imde;<СУММА>;

Параметры:
СУММА - отрицательное - положительное целое число (копейки).
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа. Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: регистрируется в памяти ФР факт изъятия наличных денежных средств из кассового ящика. Печатается квитанция об изъятии (инкассации).
Примечание: данная команда рекомендуется к использованию.



Продажа - добавление товарной позиции в чек

Код: Выделить всё

smde;<НАЗВАНИЕ_ТОВАРА>;<ЦЕНА>;<КОЛИЧЕСТВО>;<НАЛОГОВАЯ_ГРУППА>;<СЕКЦИЯ>;

Код: Выделить всё

salemde;<НАЗВАНИЕ_ТОВАРА>;<ЦЕНА>;<КОЛИЧЕСТВО>;<СЕКЦИЯ>;

Параметры:
  • <НАЗВАНИЕ_ТОВАРА> -- строка в кодировке UTF-8. 36 символов;
  • <ЦЕНА> -- целое число (копейки);
  • <КОЛИЧЕСТВО> -- целое число (граммы);
  • <НАЛОГОВАЯ_ГРУППА> -- номер налога из настроек ФР. Если налога нет, то поставить 0. Применяется к конкретной товарной позиции.
  • <СЕКЦИЯ> -- целое число от 0 до 15. Номер товарной секции (отдела).
Режим доступности команды: команда доступна во всех режимах, кроме режима "Смена открыта. 24 часа закончились".
Статус ФР после исполнения команды: Если команда первая в смене, то открывается новая смена.
Результат исполнения команды: в кассовые ленты добавляется товарная строка.
Примечание: данная команда рекомендуется к использованию.

Оплата (закрытие) чека

Код: Выделить всё

tmde;<СУММА>;<ФОРМА ОПЛАТЫ>;

Параметры:
  • <СУММА> -- целое число (копейки);
  • <ФОРМА ОПЛАТЫ> --номер формы оплаты из настроек ФР. Обычно 0 - наличными, 1 - кредитом, 2 - тарой, 3 - банковской картой. Если параметр <ФОРМА ОПЛАТЫ> отсутствует, то считает, что форма оплаты выбрана НАЛИЧНЫМИ.
Режим доступности команды: команда доступна в режиме "Открытый документ".
Статус ФР после исполнения команды: данные сформированного чека проводятся по регистрам ФР. ФР переходит в статус "Готов".
Результат исполнения команды: в кассовые ленты добавляется информация об оплате.
Примечание: для форм оплаты, отличных от 0 = НАЛИЧНЫМИ требуется передать точную, до копейки, сумму. В противном случае возникнет ошибка и чек закрыт не будет!





Аннулирование фискального чека

Дополнительные параметры отсутствуют.
Режим доступности команды: команда доступна только в режиме "Открытый документ".
Статус ФР после исполнения команды: ФР переходит из режима "Открытый документ" в один из режимов: "Открытая смена. 24 часа не кончились", "Открытая смена. 24 часа кончились" или "Смена закрыта" (если аннулировался первый чек в смене).
Результат исполнения команды: чек, с одной или более товарными строками может быть отменен до применения команды закрыть чек. В этом случае состояние фискальной информации не меняется (номер документа, данные по суммовым и количественным регистрам не меняются). ФР возвращается в то состояние, в котором она находилась до момента начала формирования чека. На кассовой ленте печатается надпись "Аннулировано".


Фискальные отчеты
Промежуточный отчет без гашения (X-отчет)

Дополнительные параметры отсутствуют.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа.
Статус ФР после исполнения команды: не меняется.

Отчет по секциям (отделам) ФР

Код: Выделить всё

rep_sections;

Дополнительные параметры отсутствуют.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа.
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: фискальный регистратор распечатает стандартный отчет с разбиением оплат по секциям (отделам) ФР.


Промежуточный отчет с гашением (Z-отчет)

Дополнительные параметры отсутствуют.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа. Отчет с гашением не печатается при нулевой сумме накоплений по регистрам (т.е. когда не печатались фискальные документы).
Статус ФР после исполнения команды: ФР переходит в режим "Смена закрыта".

Получить денежный регистр

Код: Выделить всё

m;<НОМЕР_РЕГИСТРА>;

Параметры:
  • <НОМЕР_РЕГИСТРА> -- целое число;
Режим доступности команды: команда доступна во всех режимах.
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: в файл-статус будет записана обновлённая информация по указанному регистру.

Получить необнуляемую сумму

Параметры: отсутствуют
Режим доступности команды: команда доступна только в режиме "Закрытая смена".
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: в файл-статус будет записана обновлённая информация в поле not_cleared_summa. Если ФР находится в режиме отличном от "Закрытая смена", то поле not_cleared_summa=-1.

Получить статус ФР

Параметры: отсутствуют
Режим доступности команды: команда доступна в любом режиме.
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: в файл-статус будет записана обновлённая информация о статусе фискального регистратора.

Продолжить печать

Код: Выделить всё

continue_print;

Параметры: отсутствуют
Режим доступности команды: команда доступна в аварийном режиме "ФР ожидает команду продолжения печати".
Статус ФР после исполнения команды: будет продолжена печать документа.
Результат исполнения команды: будет продолжена печать документа.
Примечание: команда сервисного уровня. Применяется в том случае, когда произошел обрыв ленты в момент печати. В этом случае ФР переходит в режим "ФР ожидает команду продолжения печати" и на другие команды не реагирует.



Нефискальные операции
Печать одной строки текста

Код: Выделить всё

p;<ТЕКСТ>;

Параметры:
  • <ТЕКСТ> -- UTF-8 строка. Длина не лимитируется.
Результат исполнения команды: будет напечатана одна текстовая строка на чековой ленте стандартным шрифтом. Если в строке будет больше символов, чем позволяет разместить на ленте печатающий механизм фискального регистратора, то ФР вернёт ошибку "Неправильная длина" и строка распечатана не будет. ФР при печати строки с ошибочными параметрами издает короткий писк.
Перед печатью кассовый сервер проверяется состояние ФР, поэтому при наличии большого количества строк рекомендуется использовать команду "Мультистрока".

Мультистрока

Код: Выделить всё

pm;<ПОДСТРОКА_1>#kkm_br#<ПОДСТРОКА_2>....#kkm_br#<ПОДСТРОКА_N>;

Параметры:
  • <ПОДСТРОКА> -- UTF-8 строка. Длина не лимитируется. Ограничена шириной ленты.
Результат исполнения команды: будет напечатано N строк на чековой ленте стандартным шрифтом. Если в подстроке будет больше символов, чем позволяет разместить на ленте печатающий механизм фискального регистратора, то ФР вернёт ошибку "Неправильная длина" и подстрока распечатана не будет. ФР при печати подстроки с ошибочными параметрами издает короткий писк.
Кассовый сервер проверяется состояние ФР только в начале, поэтому обеспечивается высокая скорость печати, но если возникнет ошибка в процессе печати, то невозможно будет определить по коду ошибки в какой подстроке произошел сбой.
Настоятельно рекомендуется в прикладном ПО контролировать ширину подстрок!

Печать одной строки текста заданным шрифтом

Код: Выделить всё

print_font;<НОМЕР_ШРИФТА>;<ТЕКСТ>;

Параметры:
  • <НОМЕР_ШРИФТА> -- целое число.
  • <ТЕКСТ> -- UTF-8 строка. Длина не лимитируется.
Результат исполнения команды: будет напечатана одна текстовая строка на чековой ленте заданным по номеру шрифтом. Если в строке будет больше символов, чем позволяет разместить на ленте печатающий механизм фискального регистратора, то ФР вернёт ошибку "Неправильная длина" и строка распечатана не будет. ФР при печати строки с ошибочными параметрами издает короткий писк.
Перед печатью кассовый сервер проверяется состояние ФР.

Печать одной строки текста жирным шрифтом

Код: Выделить всё

print_bold;<ТЕКСТ>;

Параметры:
  • <ТЕКСТ> -- UTF-8 строка. Длина не лимитируется.
Результат исполнения команды: будет напечатана одна текстовая строка на чековой ленте увеличенным шрифтом. Если в строке будет больше символов, чем позволяет разместить на ленте печатающий механизм фискального регистратора, то ФР вернёт ошибку "Неправильная длина" и строка распечатана не будет. ФР при печати строки с ошибочными параметрами издает короткий писк.
Перед печатью кассовый сервер проверяется состояние ФР.

Загрузка графики

Код: Выделить всё

load_image;<ДАННЫЕ>

Параметры:
  • <ДАННЫЕ> -- двоичные данные графического файла, закодированные алгоритмом BASE64.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа.
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: в память ФР будет загружено изображение.

Печать графики

Код: Выделить всё

print_image;<КОЛВО_СТРОК>

Параметры:
  • <КОЛВО_СТРОК> -- целое положительное число, задающее количество строк (линий) графического изображения, которое надо распечатать из памяти ФР.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа.
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: на чековую ленту распечатается изображение длиной <КОЛВО_СТРОК> линий.

Открыть денежный ящик

Код: Выделить всё

open_cash_box;

Параметры: отсутствуют
Режим доступности команды: команда доступна в любом режиме.
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: на управляющий контакт ФР будет подан уровень, в результате которого подключенный к ФР денежный ящик должен открыться.

Обрезать чек

Код: Выделить всё

cut_check;

Параметры: отсутствуют
Результат исполнения команды: будет обрезан чек.

Продвинуть ленту

Код: Выделить всё

feed;<КОЛВО_СТРОК>

Параметры:
  • <КОЛВО_СТРОК> -- целое положительное число, задающее количество строк (линий) на которые надо продвинуть ленту.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа.
Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: на чековую ленту распечатается изображение длиной <КОЛВО_СТРОК> линий.




Устаревшие (не рекомендуемые) команды
Данные команды оставлены для совместимости с уже имеющимися схемами внедрения кассового сервера и его Супервизора.


Внесение наличных денежных средств в кассу

Код: Выделить всё

i;<СУММА>;

СУММА - положительное десятичное число. Количество десятичных разрядов =2.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа. Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: регистрируется в памяти ФР факт внесения наличных денежных средств в кассовый ящик. Печатается квитанция о внесении.
Примечание: данная команда не рекомендуется к использованию, т.к. на некоторых программно-аппаратных конфигурациях имеют место проблемы с округлением чисел с плавающей запятой. В результате наблюдается отклонение между записанным в текстовый файл параметром СУММА и переданной в фискальный регистратор в размере 1 копейки. Для использования рекомендуется аналогичная команда с целочисленной записью параметра СУММА.

Внесение изъятие наличных денежных средств из кассы (инкассация)

Код: Выделить всё

i;<СУММА>;

СУММА - отрицательное десятичное число. Количество десятичных разрядов =2.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа. Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: регистрируется в памяти ФР факт изъятия наличных денежных средств из кассового ящика. Печатается квитанция об изъятии (инкассации).
Примечание: данная команда не рекомендуется к использованию, т.к. на некоторых программно-аппаратных конфигурациях имеют место проблемы с округлением чисел с плавающей запятой. В результате наблюдается отклонение между записанным в текстовый файл параметром СУММА и переданной в фискальный регистратор в размере 1 копейки. Для использования рекомендуется аналогичная команда с целочисленной записью параметра СУММА.


Внесение изъятие наличных денежных средств из кассы (инкассация)

Код: Выделить всё

i;<СУММА>;

СУММА - отрицательное десятичное число. Количество десятичных разрядов =2.
Режим доступности команды: команда доступна во всех режимах, кроме режима открытого фискального документа. Статус ФР после исполнения команды: не меняется.
Результат исполнения команды: регистрируется в памяти ФР факт изъятия наличных денежных средств из кассового ящика. Печатается квитанция об изъятии (инкассации).
Примечание: данная команда не рекомендуется к использованию, т.к. на некоторых программно-аппаратных конфигурациях имеют место проблемы с округлением чисел с плавающей запятой. В результате наблюдается отклонение между записанным в текстовый файл параметром СУММА и переданной в фискальный регистратор в размере 1 копейки. Для использования рекомендуется аналогичная команда с целочисленной записью параметра СУММА.

Продажа - добавление товарной позиции в чек

Код: Выделить всё

s;<НАЗВАНИЕ_ТОВАРА>;<ЦЕНА>;<КОЛИЧЕСТВО>;<НАЛОГОВАЯ_ГРУППА>;<СЕКЦИЯ>;

Код: Выделить всё

sale;<НАЗВАНИЕ_ТОВАРА>;<ЦЕНА>;<КОЛИЧЕСТВО>;<СЕКЦИЯ>;

Параметры:
  • <НАЗВАНИЕ_ТОВАРА> -- строка в кодировке UTF-8. 36 символов;
  • <ЦЕНА> -- десятичное число. 2 знака в дробной части (рубли.копеки);
  • <КОЛИЧЕСТВО> -- десятичное число. 2 знака в дробной части (килограммы.граммы);
  • <НАЛОГОВАЯ_ГРУППА> -- номер налога из настроек ФР. Если налога нет, то поставить 0. Применяется к конкретной товарной позиции.
  • <СЕКЦИЯ> -- целое число от 0 до 15. Номер товарной секции (отдела).
Режим доступности команды: команда доступна во всех режимах, кроме режима "Смена открыта. 24 часа закончились".
Статус ФР после исполнения команды: Если команда первая в смене, то открывается новая смена.
Результат исполнения команды: в кассовые ленты добавляется товарная строка.
Примечание: данная команда не рекомендуется к использованию, т.к. на некоторых программно-аппаратных конфигурациях имеют место проблемы с округлением чисел с плавающей запятой. В результате наблюдается отклонение между записанным в текстовый файл параметром СУММА и переданной в фискальный регистратор в размере 1 копейки. Для использования рекомендуется аналогичная команда с целочисленной записью параметра СУММА.

Оплата (закрытие) чека

Код: Выделить всё

t;<СУММА>;<ФОРМА ОПЛАТЫ>;

Параметры:
  • <СУММА> -- десятичное число. 2 знака в дробной части (рубли.копеки);
  • <ФОРМА ОПЛАТЫ> --номер формы оплаты из настроек ФР. Обычно 0 - наличными, 1 - кредитом, 2 - тарой, 3 - банковской картой. Если параметр <ФОРМА ОПЛАТЫ> отсутствует, то считает, что форма оплаты выбрана НАЛИЧНЫМИ.
Режим доступности команды: команда доступна в режиме "Открытый документ".
Статус ФР после исполнения команды: данные сформированного чека проводятся по регистрам ФР. ФР переходит в статус "Готов".
Результат исполнения команды: в кассовые ленты добавляется информация об оплате.
Примечание 1: данная команда не рекомендуется к использованию, т.к. на некоторых программно-аппаратных конфигурациях имеют место проблемы с округлением чисел с плавающей запятой. В результате наблюдается отклонение между записанным в текстовый файл параметром СУММА и переданной в фискальный регистратор в размере 1 копейки. Для использования рекомендуется аналогичная команда с целочисленной записью параметра СУММА.
Примечание 1: для форм оплаты, отличных от 0 = НАЛИЧНЫМИ требуется передать точную, до копейки, сумму. В противном случае возникнет ошибка и чек закрыт не будет!

Вернуться к началу