Привязка чека по QR коду

Avatar
  • обновлен
  • Завершен

В ближайшее время все чеки должны будут содержать QR коды. Многие уже содержат. Хотелось бы иметь возможность получить чек с сайта налоговой и привязать к транзакции.

Avatar
Вадик Мармеладик
Цитата от Евгений Ищенко

Для того чтобы получить чек (пример чека из макдональдса в формате JSON) необходимо сделать GET-запрос на адрес вида http://proverkacheka.nalog.ru:8888/v1/inns/*/kkts/*/fss/XXXXXXXXXXXXXXXX/tickets/YYYYY?fiscalSign=ZZZZZZZZZZ&sendToEmail=no

где

XXXXXXXXXXXXXXXX - номер фискального накопителя (ФН)

YYYYY - фискальные данные(ФД)

ZZZZZZZZZZ - фискальный признак документа(ФПД)

Запросе необходимо указать следующие заголовки:

- Authorization - указывается basic авторизация (номер телефона:пароль в base64). Номер телефона указывается при регистрации в приложении "Проверка чека", пароль приходит в смс

- Device-Id - на android это androidID (можно передать любой набор символов)

CURL:

curl -H 'Authorization: Basic ТУТ_НОМЕР_ТЕЛЕФОНА_И_ПАРОЛЬ_В_BASE64' -H 'Device-Id: ТУТ_ANDROID_ID' -H 'Device-OS: Adnroid 6.0.1' -H 'Version: 2' -H 'ClientVersion: 1.4.2' -H 'Host: proverkacheka.nalog.ru:8888' -H 'User-Agent: okhttp/3.0.1' --compressed 'http://proverkacheka.nalog.ru:8888/v1/inns/*/kkts/*/fss/XXXXXXXXXXXXXXXX/tickets/YYYYY?fiscalSign=ZZZZZZZZZZ&sendToEmail=no'

Обязательны только заголовки Authorization и Device-Id

Оригинальное приложение (проверка чека) делает запрос еще такой запрос:

http://proverkacheka.nalog.ru:8888/v1/ofds/*/inns/*/fss/XXXXXXXXXXXXXXXX/operations/1/tickets/YYYYY?fiscalSign=ZZZZZZZZZZ&date=2017-07-15T15:01:00&sum=167000"

Это запрос на проверку чека в налоговой. Как я понял он не обязательный и можно без него обойтись

Как уже писалось выше есть две проблемы:

1. Чек еще не переданный в налоговую

2. Чек никогда не попадет в налоговую

Первую проблему можно решить путем совершения запроса на получение чека с переодичностью 1-2 раза в сутки. Это можно сделать как на сервере (приоритетный вариант) так и на мобилке.

А вот вторая проблема на данный момент не решаемая. Некоторый организации попросту увиливают от таких чеков и вместо валидных данных в qr-коде суют заведомо ложные данные.

После получения JSON с позициями чека можно складывать их в отдельном месте где пользователь сможет раскидать по категориям. Если покупака совершалась с банковской карты и у пользователя в приложении есть доступ к списку операций по карте, то можно производить поиск этой покупки и по MCC коду расскидывать по категории (вот https://github.com/greggles/mcc-codes/blob/master/mcc_codes.json список mcc кодов).

Если покупка совершалась не с банковской карты, то можно сделать какой-то анализ транзакций других пользователей. Например, Иван что-то купил в магазине "ООО Рога и копыта" . Просканил чек и распределил все по категориям. Потом некий Коля тоже совершил покупку в магазине "ООО Рога и копыта" (можно искать по номеру фискального накопителя, либо по наименованию магазина) и ему уже будут предложены категории, которые поставил Иван.

Есть куча вариантов как это все организовать, но это очень много писать надо ( 

email для связи(вдруг кто-то захочет об этом поговорить :D ): nigol@protonmail.ch

Вот это качественный коммент по теме. Я два месяца назад не мог этой инфы нарыть. А есть API получить инфу по привязанным чекам?

Ты кстати написал, что проверку нужно делать на сервере, уверен в обратном, запросы нужно проводить напрямую с устройства т.к. запросы с одного IP адреса рано или поздно заблокируют.

Налоговое приложение, через 7 дней считает, что чек не получен https://prnt.sc/g0uu5d.

P.s. Basic Auth ещё можно так записать - http://login:pass@proverkacheka.nalog.ru:8888/

Avatar
Евгений Ищенко
Цитата от Вадик Мармеладик

Вот это качественный коммент по теме. Я два месяца назад не мог этой инфы нарыть. А есть API получить инфу по привязанным чекам?

Ты кстати написал, что проверку нужно делать на сервере, уверен в обратном, запросы нужно проводить напрямую с устройства т.к. запросы с одного IP адреса рано или поздно заблокируют.

Налоговое приложение, через 7 дней считает, что чек не получен https://prnt.sc/g0uu5d.

P.s. Basic Auth ещё можно так записать - http://login:pass@proverkacheka.nalog.ru:8888/

Запрос на получение всех просканеных чеков есть. Напишу чуть позже. 


Насчёт проверки чека.

Так как в дзен мани есть личный кабинет и есть куча клиентов для кабинета (мобильное приложение для андроид,  web версия), то стает вопрос насчёт синхронизации. 

Если делать в мобильном приложении, то единственным нормальным вариантом является проверка при открытии приложения, но пользователь может и не открывать приложение неделями (будет пользоваться web версией).


Конечно есть и другие варианты, например, в каждом клиенте реализовать проверку чека, но это не есть хорошо (необходимо поддерживать)

Avatar
Евгений Ищенко
Цитата от IOne

у coin keeper появился данный функционал https://play.google.com/store/apps/details?id=com.disrapp.ckshopping

Эта приложение использует сервисы http://www.receipt.taxcom.ru , https://lk.platformaofd.ru/  . Если эти сервисы не найдут чек, то приложение воспользуется nalog.ru

Avatar
Евгений Ищенко
Цитата от Вадик Мармеладик

Вот это качественный коммент по теме. Я два месяца назад не мог этой инфы нарыть. А есть API получить инфу по привязанным чекам?

Ты кстати написал, что проверку нужно делать на сервере, уверен в обратном, запросы нужно проводить напрямую с устройства т.к. запросы с одного IP адреса рано или поздно заблокируют.

Налоговое приложение, через 7 дней считает, что чек не получен https://prnt.sc/g0uu5d.

P.s. Basic Auth ещё можно так записать - http://login:pass@proverkacheka.nalog.ru:8888/

Запрос для получения всех чеков

http://proverkacheka.nalog.ru:8888/v1/extract?sendToEmail=0&fileType=json


Avatar
Кирилл Мосалев

Да, как заметили выше у CoinKeeper давно есть эта тема и она работает на самом деле норм (разные магазины, разные косяки) пока у них только выбор меток страдает, но как только они его допилят, будет очень годная вещь. 

Следующим шагом можно было бы мечтать об автоматизации, например учить определять одинаковые продукты из одного и тогоже магазина определять сразу и разносить, ведь большая часть покупок это все одно и тоже. 

Avatar
-2
Сергей Простов

Вот же бред... Трудозатрат будет много, а выхлоп нулевой. Там где дают чеки, плачу картой. Там где плачу наличными, чеки не дают. А потом все это выльется в такое: "Приложение не учло творожок за 15 рублей в продуктах!"
Вы же как-то сейчас не погибаете от того, что смс парсится не каждый раз верно?

Avatar
Сергей Гарбуз
Цитата от Сергей Простов

Вот же бред... Трудозатрат будет много, а выхлоп нулевой. Там где дают чеки, плачу картой. Там где плачу наличными, чеки не дают. А потом все это выльется в такое: "Приложение не учло творожок за 15 рублей в продуктах!"
Вы же как-то сейчас не погибаете от того, что смс парсится не каждый раз верно?

То что возможны какие то ошибки не повод не делать функционал

Avatar
Сергей Простов
Цитата от Сергей Гарбуз

То что возможны какие то ошибки не повод не делать функционал

Если и делать, то делать минимально - разобрали сумму из QR-кода и дальше типовым механизмом подобрали категорию. Незачем на эту ерунду время тратить, на нее и без нас попилили немало бюджетного бабла.

Avatar
Артемий
Цитата от Евгений Ищенко

Для того чтобы получить чек (пример чека из макдональдса в формате JSON) необходимо сделать GET-запрос на адрес вида http://proverkacheka.nalog.ru:8888/v1/inns/*/kkts/*/fss/XXXXXXXXXXXXXXXX/tickets/YYYYY?fiscalSign=ZZZZZZZZZZ&sendToEmail=no

где

XXXXXXXXXXXXXXXX - номер фискального накопителя (ФН)

YYYYY - фискальные данные(ФД)

ZZZZZZZZZZ - фискальный признак документа(ФПД)

Запросе необходимо указать следующие заголовки:

- Authorization - указывается basic авторизация (номер телефона:пароль в base64). Номер телефона указывается при регистрации в приложении "Проверка чека", пароль приходит в смс

- Device-Id - на android это androidID (можно передать любой набор символов)

CURL:

curl -H 'Authorization: Basic ТУТ_НОМЕР_ТЕЛЕФОНА_И_ПАРОЛЬ_В_BASE64' -H 'Device-Id: ТУТ_ANDROID_ID' -H 'Device-OS: Adnroid 6.0.1' -H 'Version: 2' -H 'ClientVersion: 1.4.2' -H 'Host: proverkacheka.nalog.ru:8888' -H 'User-Agent: okhttp/3.0.1' --compressed 'http://proverkacheka.nalog.ru:8888/v1/inns/*/kkts/*/fss/XXXXXXXXXXXXXXXX/tickets/YYYYY?fiscalSign=ZZZZZZZZZZ&sendToEmail=no'

Обязательны только заголовки Authorization и Device-Id

Оригинальное приложение (проверка чека) делает запрос еще такой запрос:

http://proverkacheka.nalog.ru:8888/v1/ofds/*/inns/*/fss/XXXXXXXXXXXXXXXX/operations/1/tickets/YYYYY?fiscalSign=ZZZZZZZZZZ&date=2017-07-15T15:01:00&sum=167000"

Это запрос на проверку чека в налоговой. Как я понял он не обязательный и можно без него обойтись

Как уже писалось выше есть две проблемы:

1. Чек еще не переданный в налоговую

2. Чек никогда не попадет в налоговую

Первую проблему можно решить путем совершения запроса на получение чека с переодичностью 1-2 раза в сутки. Это можно сделать как на сервере (приоритетный вариант) так и на мобилке.

А вот вторая проблема на данный момент не решаемая. Некоторый организации попросту увиливают от таких чеков и вместо валидных данных в qr-коде суют заведомо ложные данные.

После получения JSON с позициями чека можно складывать их в отдельном месте где пользователь сможет раскидать по категориям. Если покупака совершалась с банковской карты и у пользователя в приложении есть доступ к списку операций по карте, то можно производить поиск этой покупки и по MCC коду расскидывать по категории (вот https://github.com/greggles/mcc-codes/blob/master/mcc_codes.json список mcc кодов).

Если покупка совершалась не с банковской карты, то можно сделать какой-то анализ транзакций других пользователей. Например, Иван что-то купил в магазине "ООО Рога и копыта" . Просканил чек и распределил все по категориям. Потом некий Коля тоже совершил покупку в магазине "ООО Рога и копыта" (можно искать по номеру фискального накопителя, либо по наименованию магазина) и ему уже будут предложены категории, которые поставил Иван.

Есть куча вариантов как это все организовать, но это очень много писать надо ( 

email для связи(вдруг кто-то захочет об этом поговорить :D ): nigol@protonmail.ch

А сервис регистрации пользователей на проверке_чека была оказия послушать? 

Avatar
Андрей Глумов

Разбивка продуктов из чека это круто, но сначала сделайте заполнение полей транзакции по скану qr-кода.

"Добавить транзакцию" - "Скан кода" - автоматом заполнять дату, сумму, последний указанный счет (наличные, например), возможно, категорию по номеру ФР.

Уже сильно сэкономило бы время на ввод чеков.