Есть ли единое API для доступа к данным чека онлайн касс?

С 01.07.2017 г. на вех чеках есть QR-код, по которому в специальном приложении ФНС можно проверить чек и скачать его. Если легальное API для доступа к данным чека для использования в своих приложениях/сервисах?
  • Вопрос задан
  • 13240 просмотров
Пригласить эксперта
Ответы на вопрос 9
@BorisKorobkov
Web developer
QR-код на чеке дублирует ту же самую информацию, что и человек может прочитать на чеке.

Куда именно приложение ФНС отправляет данные для проверки, вы можете проверить самостоятельно, если установите их программу https://kkt-online.nalog.ru/ и воспользуетесь любым сниффером.

Также можно проверить чек на
https://kpkcheck.ru/System/ExpressCheck.aspx
https://ofd.ru/checkinfo
https://ofd-ya.ru/check
https://consumer.1-ofd.ru/#/landing
и пр.
Ответ написан
@IvanG
официальное приложение выполняет следующие запросы.
для проверки чека на валидность:
отправляет запрос
адрес:
https://proverkacheka.nalog.ru:9999/v1/ofds/*/inns/*/fss/8710000210547638/operations/1/tickets/29430?fiscalSign=1390549&date=2017-11-21T16:23:00&sum=102331

заголовки:
Device-Id: noneOrRealId
Device-OS: Adnroid 5.1
Version: 2
ClientVersion: 1.4.4.1
Host: proverkacheka.nalog.ru:9999
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.0.1

тело пустое.
Если чек валиден - ответ пустой, код 204, иначе 406 и возможно другие.

для получения тела чека уже нужна авторизация, зарегистрироваться ранее можно было через сайт, но теперь похоже только через приложение (или прямые HTTP запросы, их не изучал).
Запрос на получение тела чека:
адрес:
https://proverkacheka.nalog.ru:9999/v1/inns/*/kkts/*/fss/8710000210547638/tickets/29430?fiscalSign=1390549&sendToEmail=no

заголовки:
Authorization: Basic bG9naW46cGFzc3dvcmQ=
Device-Id: noneOrRealId
Device-OS: Adnroid 5.1
Version: 2
ClientVersion: 1.4.4.1
Host: proverkacheka.nalog.ru:9999
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.0.1

в ответ JSON
Ответ написан
@mikecoon
Решение на PHP

В строчке
curl_setopt($ch, CURLOPT_USERPWD, "8(800)555-35-35" . ":" . "554400");

свои данные подставляй.

$base = "https://proverkacheka.nalog.ru:9999";

$derviceId = uniqid();
$deviceOS = "Android 4.4.4";
$protocol = "2";
$clientVersion = "1.4.1.3";
$userAgent = "okhttp/3.0.1";

$fn = $_GET["fn"];
$fd = $_GET["fd"];
$fs = $_GET["fs"];

$query = http_build_query([
    'fiscalSign' => $fs,
    'sendToEmail' => "no"
]);

$ch = curl_init("$base/v1/inns/*/kkts/*/fss/$fn/tickets/$fd?".$query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Device-Id: $derviceId",
    "Device-OS: $deviceOS",
    "Version: $protocol",
    "ClientVersion: $clientVersion",
    "ClientVersion: $clientVersion",
]);

curl_setopt($ch, CURLOPT_USERPWD, "8(800)555-35-35" . ":" . "554400");

$result = curl_exec($ch);
$json = json_decode($result);

var_dump($json);
Ответ написан
@Apollon_Diamed
Ответ скорее всего неактуален, но вдруг в будущем кому понадобится - пост на хабре
Ответ написан
@sb_user
Каждый ОФД имеет свой API. Т.е. если вы пишите софт под определенную кассу, то необходимую ссылку вы собрать сможете
Например ссылка на чек такскома будет выглядить так:
https://receipt.taxcom.ru/v01/show?fp=[fpd]&s=[sum...
где fpd - фискальная подпись документа
summ - итоговая сумма чека

Для ofd.ru будет выглядить вот так:
https://ofd.ru/rec/[inn]/[rn]/[fn]/[docNumb]/[fpd]
inn - инн юр лица пробившего чек
rn - рег. номер кассового аппарата
fn - номер фискального накопителя
docNumb - номер чека
fpd - фискальная подпись

Но согласен, ответ на вопрос интересен =) Если будет универсальный API единый для всех, то это конешно удобнее.
Ответ написан
Есть ли легальное API для доступа к данным чека для использования в своих приложениях/сервисах?

ФНС не предоставляет такого API.
Наши госорганы вообще не стремятся подобное делать (аналогично, например, с сервисом проверки акцизных марок - только через их приложуху (в том случае еще и только с зарегистрированного у них девайса :-) ) или их сайт).
Ответ написан
kellas
@kellas
веб-разработчик
@enzoshnik
full stack web-developer
А тут можно получить Json из ОФД по строке из qr-кода
https://get-ofz-json-from-qr.enzolab.ru
Ответ написан
rhrn
@rhrn
В shell окружении c curl

Получаем пароль
EMAIL=email@example.ru
NAME=Name
PHONE=+79xxxxxxxxxx
curl -X POST -H "Content-Type: application/json; charset=UTF-8" https://proverkacheka.nalog.ru:9999/v1/mobile/users/signup -d "{\"email\":\"$EMAIL\", \"name\": \"$NAME\", \"phone\": \"$PHONE\"}" -i

Запрос на детали
PHONE=+79xxxxxxxxxx
PASS=555xxx
FN=87100001017610xx
FDP=41709130xx
FD=128xx

DERVICEID=curl
DEVICEOS=linux

curl -H "Device-Id: $DERVICEID" -H "Device-OS: $DEVICEOS" "https://$PHONE:$PASS@proverkacheka.nalog.ru:9999/v1/inns/*/kkts/*/fss/$FN/tickets/$FD?fiscalSign=$FDP&sendToEmail=no" -i
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы