Делится опытом Татьяна Цикунова, системный аналитик сервиса МойСклад
МойСклад — авторизованный сервис для работы с WB API, который упрощает складской учёт, продажи и общение с клиентами на Wildberries.
Ручное управление товарами, запасами и заказами увеличивает вероятность ошибок и задержек в работе, что может повлиять на продажи и отразиться на ваших клиентах.
Автоматизировать обмен данными и решить ключевые задачи продавцов, рассчитать фактическую маржинальность продаж и сравнивать её с другими каналами.
Интеграция API помогает:
Интеграция разработана с учётом потребностей продавцов и охватывает товары, остатки, заказы, цены и склады
Это ключевая сущность на маркетплейсах, которую необходимо синхронизировать, чтобы передавать остатки, получать заказы и обновлять цены
Cценарии работы:
WB API позволяет как создавать, так и получать товары. Для создания товара используем методы, которые возвращают информацию, категории и ограничения, после чего можно загружать товары в систему, используя полученные данные.
Дополнительно, можно запросить информацию о товарах на стороне вашей системы. Важно получить только актуальные товары для работы — те, которые на проверке или в архиве, не подойдут. Алгоритм сопоставления товаров ищет соответствие между системой и Wildberries.
Система получает JSON с актуальным списком товаров с Wildberries и ищет соответствия по указанному пользователем идентификатору. Каждый товар может иметь несколько идентификаторов: артикул продавца, штрихкод, уникальный артикул маркетплейса и т.д.
Если совпадение найдено, то в базе данных создаётся запись в таблице связей товаров, модификаций и комплектов. Если совпадений нет, то в системе создаются товар и добавляется запись в таблицу связей. Сервис использует реляционную базу данных, которая оптимально подходит для этих целей.
Комплекты поступают из маркетплейса как единые товары, без информации об их составе. Поэтому система создаёт только связь между комплектом из маркетплейса и соответствующим товаром в системе. Создание самих комплектов пока не поддерживается.
Что касается модификаций, система точно идентифицирует их по размеру, так как они имеют один и тот же идентификатор товара, в отличии от товаров разного цвета. Также есть возможность создавать размеры как отдельные товары или как модификации основного товара.
Когда сопоставляем номенклатуру:
Одинаковый штрихкод | Данные WB | Данные МС | Сопоставляем |
---|---|---|---|
у товара в WB и товара в МС | Товар со штрихкодом = 1 | Товар со штрихкодом = 1 | Товар и маппинг |
у модификации в WB и товара в МС | Модификация со штрихкодом = 1 | Товар со штрихкодом = 1 | Товар и маппинг |
у товара в WB и модификации в МС | Товар со штрихкодом = 1 | Товар_1, Модификация со штрихкодом = 1 | Модификация и маппинг |
у модификации в WB и модификации в МС | Модификация со штрихкодом = 1 | Товар_1, Модификация со штрихкодом = 1 | Модификация и маппинг |
При включении автосинхронизации система каждые 15 минут запрашивает товары из маркетплейса и обновляет данные в МоёмСкладе.
Чтобы пользователь видел связь между товарами в МоёмСкладе и маркетплейсами, в карточке товара отображаются иконка «WB».
Диаграмма BPMN:
C Wildberries можно:
По этой модели продавец отгружает товары на склады Wildberries, отслеживает заказы и остатки, принимает решение о необходимости дозакупок и дополнительных поставок. Через WB API можно получить данные об остатках на складах, с разбивкой по каждому складу. В МоёмСкладе реализован отчёт, который:
В таком случае важно своевременно передавать данные об остатках, чтобы не продавать товары, которых нет в наличии. Для этого система синхронизирует остатки, чтобы точно показывать доступное количество количество товара.
Для комплектов система проводит специальный расчёт — остатки рассчитываются исходя из количества доступных комплектующих.
Если пользователь активирует автосинхронизацию остатков, то система начнёт отправлять обновлённую информацию об изменениях каждые 5 минут. Тогда маркетплейс будет знать актуальные данные о товарах, после чего можно переходить к обработке заказов.
Чтобы получить новые заказы, система запрашивает данные через API. Для работы с FBS-заказами можно использовать методы, указанные в документации API.
Чтобы не пропустить заказы, система периодически запрашивает данные у маркетплейса. Процесс работы с заказами аналогичен процессу работы с товарами: используется таблица связи, которая хранит информацию о том, что заказ, созданный в МоёмСкладе, пришёл из конкретного маркетплейса.
Если продавец изменит статус заказа между синхронизациями, то заказ не попадёт в список новых и не будет создан в системе. Чтобы поддерживать правильный учёт, добавлена обработка заказов в других статусах.
Поле | Тип | Ограничения | Описание |
---|---|---|---|
id | uuid | NOT NULL | |
ntype | int4 | NOT NULL | Тип сущности, задаваемый числовым значением |
entity_id | uuid | NOT NULL | Ссылка на операцию, которую необходимо связать с внешним уникальным идентификатором |
external_id | varchar(255) | NOT NULL | Внешний уникальный идентификатор |
account_id | uuid | NOT NULL | Аккаунт, владеющий данными |
connector_id | uuid | NOT NULL | Идентификатор коннектора |
Чтобы не превышать лимиты на вызовы WB API, сервис отслеживает частоту и количество отправляемых запросов и ограничивает их в зависимости от лимитов для каждого метода. Если он превышен, то запрос блокируется до момента, когда можно будет снова выполнить метод. Система повторяет попытку с заданной периодичностью. Алгоритм работы схож с Leaky Bucket. Подробнее смотрите в книге «System Design. Подготовка к сложному интервью» Алекса Сюй.
Кроме передачи заказов, происходит обмен статусами между Wildberries и системой МоегоСклада. Пользователи могут получать этикетки и собирать заказы через лист подбора.
Мы разобрали обмен тремя ключевыми сущностями: товарами, остатками и заказами. Следующая важная сущность — это цены.
Wildberries позволяет получать и обновлять цены товаров. При изменениях система обновляет только те цены, которые обновлялись с момента последней синхронизации.
В интеграции реализованы следующие возможности работы с ценами:
Пользователь может выбрать любую из этих опций. Сервис показывает разные состояния экрана настройки синхронизации цен в зависимости от того, чем пользуется продавец в данный момент. Для этого хранится настройка в базе с такими вариантами:
Также через API можно передавать разные цены для размеров на определённые категории товаров.
Как в МоёмСкладе, так и в маркетплейсе может быть несколько складов. Это важно учитывать при передаче остатков и обработке заказов, так как товары резервируются на конкретных складах.
Перед передачей остатков надо выбрать, с какого склада на какой будет осуществлена передача.
Для сопоставления складов в базе данных сервиса хранится выбор пользователя. Селектор складов маркетплейса работает стандартно: при открытии страницы система через API загружает список активных складов и отображает их в выпадающем меню. Пользователь может сопоставить несколько складов из маркетплейса с несколькими складами в МоёмСкладе.
Для завершения учёта продаж на маркетплейсе есть функция «Загрузки отчёта о реализации». В личном кабинете Wildberries в разделе «Финансовые отчёты → Отчёты реализации → Еженедельные» продавец может скачать этот отчёт. Его анализ позволяет лучше понять, какие товары приносят наибольшую прибыль.
API Wildberries поддерживает методы для загрузки этих отчётов, поэтому их можно загружать как вручную через систему, так и автоматически — каждую неделю.
В системе МойСклад после загрузки создаётся наш внутренний документ, который называется «Полученный отчёт комиссионера». В него вносится информация о продажах, возвратах и прочих расходах.
Поддержка и развитие интеграции требуют постоянного внимания к изменениям в API, таким как:
Сервис постоянно следит за новостями в телеграм-канале и журнале изменений WB API, чтобы избежать сбоев в интеграции.