/fnsapi

Коннектор к апи ФНС для проверки чеков от ОФД в ФНС

Primary LanguagePythonMIT LicenseMIT

Коннектор к апи ФНС для проверки чеков от ОФД в ФНС

Проверяет данные чеков, полученных от оператора фискальных данных в Федерельной налоговой службе.

Установка и настройка

Получите master token в Федеральной налоговой службе.

Установите пакет

pip install fnsapi

Добавьте переменную окружения в своё виртуально окружение

FNS_API_MASTER_TOKEN=master_token_from_fns

Если базовый адрес апи ФНС отличается от https://openapi.nalog.ru:8090/, то укажите его через перменную окружения

FNS_API_BASE_URL=https://openapi.nalog.ru:8090/

Принцип работы

Чтобы запросить информацию о чеке в ФНС, нужно

  1. Получить токен сессии
  2. Сгенерерировать имя пользователя в вашей системе, от имени которого осуществляется запрос
  3. Вызвать функцию проверки чека или получения информации о чеке

Пример использования


Например, данные получены из qr-кода:

t=20201225T1016&s=1113.99&fn=9282440300829880&i=10556&fp=189504453&n=1

t — timestamp, нужно переформатировать в %Y-%m-%dT%H:%M:%S — 2020-12-25T10:16:00
s — sum, нужно умножить на 100 — 1111399
fn - fiscal_number — 9282440300829880
i - fiscal_document_id — 10556
fp - fiscal_sign — 189504453
n - operation_type — 1

from fnsapi.api import FNSApi

fns_api = FNSApi()

# получение сессионного токена
session_token = fns_api.get_session_token()
user_id = 'ofd_user' # любое текстовое значение на ваш вкус

# проверка существования чека
result = fns_api.check_ticket(
    session_token, 
    user_id, 
    sum, # сумма чека в формате РРРКК, 12 рублей 23 копейки передавайте как 1223
    timestamp, # дата и время в формате %Y-%m-%dT%H:%M:%S
    fiscal_number, # код ККТ
    operation_type, # тип операции
    fiscal_document_id, # номер фискального документа
    fiscal_sign # фискальный признак
)

# в результате придёт структура
status = result['status'] # success, если апи фНС отработало запрос, еrror, если нет.
code = result['code'] # код ошибки от апи ФНС.
message= result['message'] # сообщение от ФНС.


# получение информации о чеке
result = fns_api.get_ticket(
    session_token, 
    user_id, 
    sum, # сумма чека в формате РРРКК, 12 рублей 23 копейки передавайте как 1223
    timestamp, # дата и время в формате %Y-%m-%dT%H:%M:%S
    fiscal_number, # код ККТ
    operation_type, # тип операции
    fiscal_document_id, # номер фискального документа
    fiscal_sign # фискальный признак
)

# в результате придёт структура
status = result['status'] # success, если апи фНС отработало запрос, еrror, если нет.
code = result['code'] # код ошибки от апи ФНС.
message= result['message'] # сообщение от ФНС в случае ошибки или JSON-строка с информацией о чеке.