GithubHelp home page GithubHelp logo

isabella232 / ofd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yandex/ofd

0.0 0.0 0.0 106 KB

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

License: Apache License 2.0

Python 100.00%

ofd's Introduction

ОФД

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

ofd's People

Contributors

3hren avatar yurifedoseev avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.