- класс `PayingAgent`, покрытый тестами - новые константы для тегов ФФД 1.05 `Ffd105Tags` - `Entity::jsonSerialize()` object -> array (again) - `TooManyException::$max` int -> float - тесты по psr-4, потому что почему бы и нет - некоторые провайдеры вынесены в `BasicTestCase` - улучшен тест покупателя
5.8 KiB
Мониторинг ККТ
Библиотека предоставляет возможность следить за состоянием ваших облачных ККТ через API.
Инициализация
Для этого следует использовать класс KktMonitor
:
// можно передать параметры подключения в конструктор
$monitor = new AtolOnline\Api\KktMonitor(
login: 'mylogin',
password: 'qwerty'
);
// можно - отдельными сеттерами
$monitor = new AtolOnline\Api\KktMonitor();
->setLogin($credentials['login'])
->setPassword($credentials['password']);
Логин и пароль для мониторинга те же, что для регистрации документов.
По умолчанию монитор работает в тестовом режиме. Перевести его в боевой режим можно:
// передачей в конструктор `false` первым параметром:
$monitor = new AtolOnline\Api\KktMonitor(false, /*...*/);
// или отдельным сеттером
$monitor->setTestMode(false);
Тестовый режим нужен для проверки работоспособности библиотеки и API АТОЛ.
В боевом режиме можно получать данные по своим ККТ.
Получение данных обо всех своих ККТ
Для получения данных обо всех своих ККТ следует вызвать метод AtolOnline\Api\KktMonitor::getAll()
:
$kkts = $monitor->getAll();
В ответе будет итерируемая коллекция объектов AtolOnline\Entities\Kkt
. Каждый из этих объектов содержит атрибуты:
// для примера получим первую ККТ из всех
$kkt = $kkts->first();
// посмотрим на её атрибуты:
$kkt->serialNumber; // Заводской номер ККТ
$kkt->registrationNumber; // Регистрационный номер машины (РНМ)
$kkt->deviceNumber; // Номер автоматического устройства (внутренний идентификатор устройства)
$kkt->fiscalizationDate; // Дата активации (фискализации) ФН с указанием таймзоны
$kkt->fiscalStorageExpiration; // Дата замены ФН (Срок действия ФН), с указанием таймзоны
$kkt->signedDocuments; // Количество подписанных документов в ФН
$kkt->fiscalStoragePercentageUse; // Наполненость ФН в %
$kkt->fiscalStorageINN; // ИНН компании (указанный в ФН)
$kkt->fiscalStorageSerialNumber; // Заводской (серийный) номер ФН
$kkt->fiscalStoragePaymentAddress; // Адрес расчёта, указанный в ФН
$kkt->groupCode; // Код группы кассы
$kkt->timestamp; // Время и дата формирования данных, UTC
$kkt->isShiftOpened; // Признак открыта смена (true) или закрыта (false)
$kkt->shiftNumber; // Номер смены (или "Номер закрытой смены", когда смена закрыта)
$kkt->shiftReceipt; // Номер документа за смену (или "Кол-во чеков закрытой смены", когда смена закрыта)
$kkt->unsentDocs; // Количество неотправленных документов. Указывается, если значение отлично от 0.
$kkt->firstUnsetDocTimestamp; // Дата первого неотправленного документа. Указывается, если есть неотправленные документы.
$kkt->networkErrorCode; // Код ошибки сети
Эти поля описаны в документации мониторинга на стр. 11
Сопоставления кодов ошибок и их описаний доступны в массиве AtolOnline\Entities\Kkt::ERROR_CODES
.
Объект класса приводится к JSON-строке автоматически или принудительно:
echo $kkt;
$json_string = (string)$kkt;
Чтобы получить те же данные в виде массива, нужно вызвать метод jsonSerialize()
:
$json_array = $kkt->jsonSerialize();
Получение данных об одной из своих ККТ
Для этого следует вызвать метод AtolOnline\Api\KktMonitor::getOne()
, передав на вход серийный номер (serialNumber
)
нужной ККТ:
$kkt = $monitor->getOne($kkts->first()->serialNumber);
Метод вернёт единственный объект AtolOnline\Entities\Kkt
с атрибутами, описанными выше.
Получение последнего ответа от сервера
Класс AtolOnline\Api\KktMonitor
расширяет абстрактный класс AtolOnline\Api\AtolClient
.
Это значит, что последний ответ от API АТОЛ всегда сохраняется объектом класса AtolOnline\Api\KktResponse
. К нему
можно обратиться через метод AtolOnline\Api\KktMonitor::getResponse()
, независимо от того, что возвращают другие
методы монитора.