Импорт каталога 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.
- Полный импорт — полный цикл.
- Статус операции показывается рядом с кнопками (на своей вкладке).
- Cron / CLI
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.
Полезные ссылки
Нужна помощь с настройкой под ваш сайт? Пишите на почту scc.lac@mail.ru или в Telegram @web_stu.