Библиотека для работы с бинарным протоколом, используемым кассовыми аппаратами для обмена данными с оператором фискальных данных (ОФД). Подробнее об ОФД и новом порядке применения кассовой технике можно прочитать здесь: https://kkt-online.nalog.ru
ФФД (формат фискальных данных) - бинарный формат, используемый для обмена сообщениями между кассой и ОФД. Для передачи фискальных документов от ОФД в налоговую (ФНС) используется описание документов в JSON формате.
import ofd
message = b'\x5a\x01\x5d\xa8\xa5...' # Контейнер сообщения от кассы в бинарном виде.
fiscal_sign = b'\x23\14\12..' # Фискальный признак документа в бинарном формате - дописывается в конец поля rawData.
doc = ofd.unpack_container_message(message, fiscal_sign)
import ofd
doc = {'receipt': { .. }} # Фискальный документ в JSON формате.
message = ofd.pack_json(doc, ofd.DOCS_BY_NAME) # Получаем контейнер ФФД в бинарном формате.
python3.5 setup.py pytest
В директории ./example написан эмулятор ОФД, демонстрирующий использование протокола. Это TCP-сервер, которое слушает заданный порт. Если отправить на вход данные бинарного протокола, то приложение расшифрует сообщение в json-формат и выведет его в stdout. В ответ эмулятор отправит документ "подтверждение оператора" в бинарном формате. Эмулятор работает без использования шифровальной машины, поэтому сможет прочитать только незашифрованные входящие сообщения. Пример отправки документа можно посмотреть в tests/example_test.py Запустить пример можно следующей командой, указав желаемый номер порта:
python3.5 example/mock_ofd.py --port 12345
Для запуска под windows
py -3.5 example/mock_ofd.py --port 12345