Импорт каталога B2B по api
webictusИмпорт каталога B2B — плагин для Shop-Script, который подключает ваш магазин к Partner API поставщика на Webasyst (плагин B2B / оптовые продажи ). Вы получаете категории, товары, цены и остатки напрямую в каталог Shop-Script — без ручной выгрузки Excel и без «своего» парсера под каждого поставщика.
Плагин ходит на API вида https://сайт-поставщика/b2b/api/v1 , сопоставляет категории, создаёт и обновляет товары, синхронизирует цены и остатки. Запуск — из настроек плагина или по cron / CLI. Журнал и «последний запуск» пишутся в файлы wa-log (без отдельной MySQL-таблицы журнала).
Важно про кабинет поставщика. Чтобы импорт работал, поставщик должен выдать вам доступ в своём плагине B2B: раздел /my/b2b/api/ — домен вашего магазина, API-токен и выбранные категории экспорта. Без токена и совпадающего домена API отвечает отказом в авторизации. Сам Partner API и кабинет настраиваются у поставщика; этот плагин — сторона получателя каталога.
Что даёт магазину-получателю :
Подключение к Partner API поставщика по URL, токену и домену клиента.
Ручное и автоматическое сопоставление категорий API ↔ категории вашего магазина (поиск в выпадающем списке).
Импорт / обновление товаров и цен, отдельная синхронизация остатков.
Полный цикл «категории → товары → остатки» одной кнопкой или одной CLI-командой.
Cron-готовые команды: товары/цены и остатки с разной периодичностью.
Журнал синхронизаций и таблица последних запусков в файлах wa-log/shop/plugins/ .
Что нужно от поставщика :
Установленный и настроенный плагин B2B / оптовые продажи .
Ваш аккаунт одобрен как оптовый клиент.
В /my/b2b/api/ : токен, ваш домен, категории для экспорта.
Рабочий URL API: https://домен-поставщика/b2b/api/v1 .
Где настраивать :
Плагины → Импорт каталога B2B — вкладки «Подключение», «Категории», «Синхронизация», «Cron / CLI», «Журнал».
Как это работает «простыми словами»
Поставщик выдаёт вам URL API, токен и разрешает домен вашего сайта в кабинете B2B API.
В плагине «Импорт каталога B2B» вы вставляете эти данные и сохраняете настройки.
На вкладке «Категории» загружаете дерево категорий API и сопоставляете их с категориями своего магазина.
На вкладке «Синхронизация» проверяете подключение и запускаете импорт товаров / остатков (или полный импорт).
Для регулярного обновления вешаете на cron команды товаров и остатков.
Основные сценарии использования
Подключить поставщика с нуля :
Получите у поставщика URL /b2b/api/v1 , токен и подтвердите, что ваш домен прописан в токене.
Откройте Плагины → Импорт каталога B2B → Подключение .
Заполните URL API, токен, домен клиента; выберите, какую цену писать (оптовая или розничная).
Сохраните настройки.
Перейдите на «Синхронизация» → «Проверить подключение» — должен вернуться успех и данные группы.
Настроить категории :
Вкладка «Категории» → «Загрузить категории API».
В каждой строке выберите локальную категорию магазина (есть поиск по названию).
Или нажмите «Автопо имени» — заполнятся точные совпадения названий.
«Сохранить сопоставление».
Рекомендуется держать включённым «Новый товар только при сопоставленной категории», чтобы «чужие» ветки API не плодили мусор в каталоге.
Запустить импорт :
«Товары / цены» — создать недостающие позиции и обновить существующие (название, SKU, цены, привязка к категориям по карте).
«Остатки» — только остатки и доступность SKU (быстрее, удобно для частого cron).
«Категории (создать недостающие)» — если в настройках разрешено создавать категории без ручного сопоставления.
«Полный импорт» — категории → товары/цены → остатки.
Поставить на cron :
Товары/цены реже (например, раз в 15 минут).
Остатки чаще (например, раз в 5 минут).
Команды и примеры crontab — на вкладке «Cron / CLI».
Разделы настроек плагина (по вкладкам)
Подключение
URL API — базовый адрес Partner API, например https://supplier.example/b2b/api/v1 .
Токен доступа — из кабинета поставщика /my/b2b/api/ (показывается один раз при генерации).
Домен клиента — ваш домен магазина; должен совпадать с X-B2B-Client-Domain / доменом в токене (обычно без www и без схемы).
Какую цену писать в товар — оптовая ( wholesale / b2b ) или розничная ( retail ) из ответа API.
Создавать новые товары — если артикул не найден локально, создать позицию.
Создавать категории, если нет сопоставления — автосоздание веток; если выключено — только ручная карта категорий.
Новый товар только при сопоставленной категории — не создавать товар, пока ни одна его категория API не сопоставлена (обновление уже существующих без категории разрешено).
Обновлять цены / Обновлять остатки — включать соответствующие поля при синхронизации.
Синхронизировать характеристики — переносить features из API в товар.
Снимать с публикации при нулевом остатке — скрывать товар/SKU без наличия.
Тип товара для новых позиций — ID типа Shop-Script (0 = по умолчанию).
Размер страницы API — сколько товаров запрашивать за один page (пагинация).
Загрузить категории API — дерево категорий поставщика.
Автопо имени — сопоставить пустые строки по точному совпадению названий.
Сохранить сопоставление — записать карту remote_id → local_id.
Выбор категории магазина — dropdown с поиском (как в карточке товара Shop-Script).
Синхронизация
Проверить подключение — ping API (группа, настройки экспорта).
Категории — создать недостающие (если разрешено в настройках).
Товары / цены — upsert по артикулу.
Остатки — только stocks.
Полный импорт — полный цикл.
Статус операции показывается рядом с кнопками (на своей вкладке).
php cli.php shop b2bimportProducts — товары и цены.
php cli.php shop b2bimportStocks — только остатки.
php cli.php shop b2bimportSync categories|products|stocks|full — выбранный режим.
Примеры crontab для товаров (реже) и остатков (чаще).
Последний запуск — файл wa-log/shop/plugins/b2bimport.last.json .
Журнал — читаемый лог wa-log/shop/plugins/b2bimport.journal.log (последние записи в интерфейсе).
При размере журнала больше 500 МБ старые строки обрезаются автоматически.
Авторизация к API поставщика (что уходит в запросах)
Заголовок X-B2B-Api-Token — ваш токен.
Заголовок X-B2B-Client-Domain — домен из настроек плагина.
Методы, которые использует импорт: GET /ping , GET /categories , GET /products , GET /stocks (и связанные режимы sync).
Рекомендуемый порядок первой настройки
Получить у поставщика URL API, токен и убедиться, что домен вашего магазина разрешён.
Вкладка «Подключение» — заполнить поля, сохранить.
«Синхронизация» → «Проверить подключение».
«Категории» — загрузить, сопоставить (или «Автопо имени»), сохранить карту.
Сначала «Товары / цены», затем «Остатки» (или «Полный импорт»).
Проверить несколько товаров в каталоге Shop-Script (цена, категория, остаток).
Настроить cron по примерам на вкладке «Cron / CLI».
Частые вопросы
Чем этот плагин отличается от B2B у поставщика? Плагин B2B — кабинет опта, прайс и Partner API на стороне поставщика . «Импорт каталога B2B» — клиент API на стороне вашего магазина.
Почему ошибка авторизации? Неверный токен, домен не совпадает с разрешённым, клиент не одобрен у поставщика или API выключен/недоступен.
Товары не создаются? Проверьте «Создавать новые товары», сопоставление категорий и опцию «Новый товар только при сопоставленной категории».
Цены не те? Смотрите «Какую цену писать в товар» (опт / розница) и что реально отдаёт API в полях wholesale/retail.
Остатки обновляются, а названия нет? Для частого cron используйте b2bimportStocks ; полный апдейт карточек — b2bimportProducts .
Где смотреть лог? Вкладка «Журнал» или файлы в wa-log/shop/plugins/ .
Нужно ли менять тему дизайна? Нет. Плагин работает в бэкенде и по CLI; витрина использует обычный каталог Shop-Script.
Полезные ссылки
https://www.webasyst.ru/store/plugin/shop/b2bimport/ — этот плагин в магазине Webasyst
https://www.webasyst.ru/store/plugin/shop/b2b/ — плагин поставщика «B2B / оптовые продажи» (кабинет, прайс, Partner API)
Нужна помощь с настройкой под ваш сайт? Пишите на почту scc.lac@mail.ru или в Telegram @web_stu .





