Сервер печати чеков по 54-ФЗ. Печка54 сама опрашивает ваш сайт: забирает оплаченные заказы, печатает чеки на фискальном регистраторе и возвращает ссылку на чек ОФД. Описание пяти методов обмена и справочники.
Это API «наоборот». Печка54 сама обращается к вашему сайту — вы не вызываете её методы, а реализуете обработчики, которые она будет опрашивать. Все запросы идут методом POST с телом в формате JSON, адреса обработчиков вы задаёте в настройках программы (см. документ «Настройка Печка54»).
Минимальный рабочий сценарий — два обработчика: отдать заказ и принять результат печати. Остальные три подключаются по мере надобности.
Поднимите обработчик выдачи заказов. Печка54 периодически шлёт на него {"action":"order"}, а он отвечает JSON с составом чека — см. получение оплаченных заказов.
Выберите формат чека.Печка54 — полный контроль над каждой строкой чека. Атол.Онлайн — проще, если вы уже интегрированы с фермой Атол.
Поднимите обработчик результата печати. На него придёт код ошибки и ссылка на чек ОФД — см. подтверждение печати. Формально необязателен, но без него вы не узнаете о сбоях.
Пропишите адреса обработчиков в настройках Печки54 и убедитесь, что они отвечают 200 OK.
# 1. Печка54 спрашивает ваш сайт, есть ли заказ для этой кассы
POST https://yoursitename.ru/get-orders
{"action":"order","kkm":"0000000001234567"}
# 2. Ваш сайт отвечает составом чека (формат Печка54)
{"response":{"kkm":"0000000001234567","orderId":"14308", ...}}
# 3. Печка54 печатает чек и сообщает результат
POST https://yoursitename.ru/order-print-result.php
{"action":"<значение из настроек>","kkm":"0000000001234567","resultCode":0, ...}
# 4. Ваш сайт подтверждает приём
HTTP/1.1 200 OK
{"resultCode":0}
Печка54 — сервер печати, который регистрирует кассовые чеки в фискальном регистраторе по требованиям 54-ФЗ для оплат в интернет-магазинах, мобильных приложениях и прочих веб-сервисах.
Программа ставится на компьютер, к которому подключены один или несколько фискальных регистраторов (ФР). Взаимодействие с ФР идёт через драйверы производителя ККМ.
Что делает Печка54
Опрашивает сайты
С заданной периодичностью проверяет один или несколько сайтов на наличие новых оплаченных заказов.
Распределяет по кассам
Направляет заказ на нужный ФР по настройкам и управляет очередью, перекидывая задание на свободную кассу.
Следит за оборудованием
Постоянно проверяет работоспособность подключённых ККМ и сообщает на сайт, если касса отвалилась.
Возвращает чек
После успешной регистрации в ОФД может отправить на сайт ссылку на электронный чек.
Алгоритм взаимодействия
Печка54 опрашивает сайт. Периодичность обращения и адрес задаются в настройках программы.
Сайт передаёт данные об оплаченных заказах в формате JSON. Если данные переданы в неправильном формате, Печка54 отправит POST с информацией об ошибках на отдельный URL, указанный в настройках.
Печка54 формирует задание на регистрацию чека в ФР. Чек фиксируется в фискальном накопителе и передаётся в ОФД. При необходимости можно включить и печать бумажного чека.
Печка54 возвращает ссылку на чек — если отправка в ОФД прошла успешно.
Параллельно Печка54 постоянно обменивается с сайтом состоянием ФР (доступен или нет), может выгружать список подключённых касс и информацию о снятых Z-отчётах.
Совет
Длительность смены на одной кассе не может превышать 24 часа. Смена открывается первым пробитым заказом, время автоматического закрытия задаётся для каждого ФР отдельно в настройках.
После того как все кассы внесены в настройки Печки54, их список можно выгрузить на сайт — чтобы на стороне сайта знать доступные ФР, их налоговые ставки и типы оплаты.
Тело запроса
Поле
Тип
Описание
action
Идентификатор метода. Всегда "sync"
data
Список фискальных регистраторов
name
Название ФР из настроек программы
kkm
Регистрационный номер ФР
inn
ИНН из фискального накопителя
fn
Регистрационный номер фискального накопителя
taxes
Доступные налоговые ставки
id
Номер ставки в ККМ — его же передавайте в tax
title
Название ставки
typeClose
Доступные типы закрытия чека (способы оплаты)
id
Номер типа закрытия — его же передавайте в typeClose
Печка54 постоянно опрашивает ФР. Когда состояние связи меняется, она сообщает об этом на сайт — чтобы вы могли, например, приостановить приём оплат или предупредить оператора.
Совет
В настройках можно указать разные адреса для подключения и отключения кассы. Тогда обработчику не придётся разбирать action — событие определяется самим адресом.
Тело запроса
Поле
Тип
Описание
action
Событие: "KKMConnected" — связь установлена, "KKMDisconnected" — связь потеряна
Печка54 умеет вести учёт смен. Смена открывается первым пробитым заказом, закрывается автоматически по времени из настроек ФР. После успешного закрытия на сайт уходит отчёт о смене.
Печка54 периодически спрашивает ваш сайт, есть ли заказ для печати на конкретной кассе. Если заказ есть — сайт возвращает состав чека. Поведение при отсутствии заказа в исходной документации не описано; на практике отвечают 200 OK без данных.
Тело запроса
Поле
Тип
Описание
action
Идентификатор метода. Всегда "order"
kkm
Регистрационный номер ФР, для которого запрашивается заказ
Запрос от Печки54
{
"action": "order",
"kkm": "0000000001234567"
}
Два формата ответа
Сайт отвечает в одном из двух форматов — какой именно, задаётся в настройках Печки54.
После печати Печка54 сообщает результат и ссылку на электронный чек. Обработчик необязателен, но именно он позволяет вести на сайте историю чеков и ловить сбои.
Тело запроса
Поле
Тип
Описание
action
Идентификатор метода. Конкретное значение в исходной документации не указано — уточните в поддержке
kkm
Регистрационный номер ФР
inn
ИНН из фискального накопителя
fn
Регистрационный номер фискального накопителя
resultCode
Код результата печати, 0 — успешно. См. коды ошибок
resultInfo
Текстовое описание результата
shiftNumber
Номер смены, в рамках которой пробит чек
OFDLink
Ссылка на веб-версию чека на сайте ОФД. Формат задаётся в настройках ККМ, передаётся в кодировке base64