Селлер на маркетплейсе · схема FBS
Кабинет печати этикеток для маркетплейса
Сделать кабинет, в котором сборщик заказов видит отправления к отгрузке и печатает по ним этикетки пачкой — вместо выгрузок в Excel и печати по одной из личного кабинета.
PHP 8.4 · Ozon Seller API · ghostscript · шаред-хостинг
Что мешало
- Этикетки печатали поштучно, сверяясь с выгрузкой в Excel
- Никто не помнил, по каким заказам уже печатали, а по каким нет
- Маркетплейс отдаёт максимум 20 отправлений за один запрос печати
- Часть методов API отключена и отвечает «устаревший метод», а документация закрыта антиботом
- Хостинг — шаред: ни собственного сервера, ни привычных утилит
Что сделали
- Собрали закрытый раздел на сайте: два рубежа доступа — пароль на весь раздел и ключи продавца, которые вводит сам пользователь
- Ключи маркетплейса на сервере не хранятся: живут во вкладке браузера и уходят в теле каждого запроса
- Таблица отправлений с фильтрами прямо в заголовках колонок: сортировка, поиск, выбор значений галочками
- Печать пачками по 20 — ограничение API — и склейка в один PDF на сервере
- Свой журнал печати: маркетплейс такого признака не отдаёт, проверено сверкой всех полей у печатанного и непечатанного заказа
- Файлы печатей хранятся вне корня сайта, с описью и сроком хранения
- Выгрузка в CSV в том же формате, к которому привыкли в Excel
Что стало
Сборщик открывает страницу, фильтрует по складу и статусу, отмечает нужные заказы и получает один PDF со всеми этикетками. Рядом видно, по каким заказам печать уже была и когда — включая повторные. Файл можно скачать заново из журнала.
Чему это научило
Самое дорогое открытие было отрицательным: маркетплейс не отдаёт признак того, что этикетка напечатана. Мы доказали это, сравнив у двух заказов — печатанного и непечатанного — все 51 поле ответа, включая список доступных действий. Отрицательный результат тоже результат: он избавил от поиска несуществующего поля и обосновал собственный журнал. Второй урок дешевле, но чаще: проверять надо не «запись прошла», а «файл читается» — первое вложение в отчёт записалось успешно и при этом не открывалось.
Похожая задача
Если узнали свою ситуацию — расскажите, что происходит у вас. Вернёмся с оценкой в часах и планом работ.