Metadata-Version: 2.1
Name: fnsapi
Version: 0.0.1
Summary: Russian Federal Tax Service API connector
Home-page: https://github.com/QortexDevs/fnsapi
Author: Qortex Devs
Author-email: it@qortex.ru
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown

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

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

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

[Получите](https://www.nalog.ru/files/kkt/pdf/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5%20%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8F%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.pdf) `master token` в Федеральной налоговой службе.
<br>
<br>
Установите пакет
```sh
pip install fnsapi
```

<br>

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

<br>

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

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

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

## Пример использования
<br>
Например, данные получены из qr-кода: `t=20201225T1016&s=1113.99&fn=9282440300829880&i=10556&fp=189504453&n=1`
```
t — timestamp, нужно переформатировать в %Y-%m-%dT%H:%M:%S
s — sum, нужно умножить на  100
fn - fiscal_number
i - fiscal_document_id
fp - fiscal_sign
n - operation_type
```

<br>

```python
from fnsapi import api as fnsapi

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

# проверка существования чека
result = fnsapi.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 = fnsapi.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-строка с информацией о чеке.
```

