PHP API для проверки и получения фискальных чеков через официальное API ФНС России.
Для работы с официальным API ФНС России необходимо получить мастер-токен. Инструкция по получению мастер-токена расположена на официальном сайте ФНС России. Документ вы найдете по этой ссылке.
Для установки библиотеки через Composer используйте эту команду:
composer require codus/fns-api
Приведенный ниже код проверяет чек на существование и получает информацию по чеку.
ВАЖНО! Перед получением информации по чеку обязательно проверяйте чек на существование.
ВАЖНО! Методы для проверки существования чека (checkTicket
) и получения информации о чеке (getTicket
) возвращают ответ который выполняется асинхронно, учтите это при написании кода. У ответов на запрос существует метод getProcessingStatus
, который возвращает статус запроса. Существуют два статуса: PROCESSING
и COMPLETED
. Если статус у ответа на запрос возвращается COMPLETED
, вы можете получить результат запроса в ответе с помощью метода getResult
.
// Создание класса для взаимодействия с API.
// Имя пользователя может быть любое.
$api = new FNSApi(<АДРЕС_СЕРВЕРА>, <ИМЯ_ПОЛЬЗОВАТЕЛЯ>, <МАСТЕР-ТОКЕН>);
// Создание модели, содержащую информацию о чеке.
// Тип операции
// Тип данных: int
// Возможные значения:
// 1 - Приход
// 2 - Возврат прихода
// 3 - Расход
// 4 - Возврат расхода
// Дата и время осуществления расчета
// Тип данных: Carbon
// Сумма, в копейках
// Тип данных: int
// Возможные значения:
// От 0 до 281474976710655
// Заводской номер фискального накопителя (ФН)
// Тип данных: int
// Возможные значения:
// 16 символов (только цифры)
// Порядковый номер фискального документа (ФД)
// Тип данных: int
// Возможные значения:
// От 1 до 4294967295
// Фискальный признак документа (ФП или ФПД)
// Тип данных: int
// Возможные значения:
// От 1 до 4294967295
$ticket = new Ticket(
<ТИП_ОПЕРАЦИИ>,
<ДАТА_И_ВРЕМЯ>,
<СУММА>,
<НОМЕР_ФН>,
<ПОРЯДКОВЫЙ_НОМЕР_ФД>,
<ФИСКАЛЬНЫЙ_ПРИЗНАК_ДОКУМЕНТА>
);
// Получение идентификатора сообщения для проверки чека на существование.
$messageId = $api->getCheckTicketMessageId($ticket);
// Получение ответа на запрос о проверке чека на существование.
$checkTicketResponse = $api->checkTicket($messageId);
// Получение результата выполнения запроса о проверке чека на существование.
$checkTicketResult = $checkTicketResponse->getResult();
// Получение идентификатора сообщения для получения информации по чеку.
$messageId = $api->getGetTicketMessageId($ticket);
// Получение ответа на запрос о получении информации по чеку.
$getTicketResponse = $api->getTicket($messageId);
// Получение результата выполнения запроса о получении информации по чеку.
$getTicketResult = $getTicketResponse->getResult();