Skip to content
/ ofd Public

Реализация протокола взаимодействия ККТ-ОФД

License

Notifications You must be signed in to change notification settings

yandex/ofd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ОФД

Библиотека для работы с бинарным протоколом, используемым кассовыми аппаратами для обмена данными с оператором фискальных данных (ОФД). Подробнее об ОФД и новом порядке применения кассовой технике можно прочитать здесь: 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)

Упаковка json документа в бинарный формат

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

About

Реализация протокола взаимодействия ККТ-ОФД

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages