Подключение магазинов
Каталог объединяет российские и мировые маркетплейсы в папках клиентов. Для каждой интеграции отдельно сохраняются ключи, товары и история синхронизации. На форме входа можно зарегистрировать отдельный клиентский кабинет или открыть демо с готовыми товарами и заказами.
1. Создайте клиента
Клиент может нажать «Создать аккаунт» на форме входа и зарегистрироваться самостоятельно. Для регистрации нужны имя и фамилия, логин, email, телефон и пароль с повторным вводом. Администратор также может нажать «Добавить аккаунт», указать название и реквизиты входа клиента. Пустая папка сохраняется сразу. Внутри нажмите «Подключить магазин».
2. Выберите площадку и введите ключи
Площадки разделены на группы «Россия» и «Мировые».
| Площадка | Что указать |
|---|---|
| Wildberries | API-токен с доступом «Контент». Для цен добавьте «Цены и скидки». |
| Ozon | Client ID и API Key кабинета Seller API с правами чтения товаров. |
| Яндекс Маркет | API-Key кабинета; Campaign ID можно указать позднее. |
| М.Видео | Идентификатор партнёра и ключ, выданные кабинетом или менеджером площадки. |
| Wildberries Global | API-токен и регион кабинета: обычный/международный (.ru) или Китай (.cn). |
| Ozon Global | Client ID и API Key международного кабинета Seller API. |
Client ID Ozon — номер кабинета продавца, он не связан с папкой клиента в этом каталоге. Для китайского WB используйте токен из китайского кабинета и регион «Китай». Все остальные международные кабинеты с обычным WB API используют регион .ru.
Инструкции площадок: Wildberries, WB для Китая, Ozon Seller API, Ozon Global, Яндекс Маркет.
Для Яндекс Маркета и М.Видео сейчас сохраняются настройки магазина. Каталог и обмен с API будут подключены следующими этапами; приложение не отправляет эти ключи в обработчики WB или Ozon.
Первое подключение запускает загрузку автоматически. Для следующих магазинов сохраните настройки и нажмите «Синхронизировать». Ключи хранятся на сервере и не возвращаются в браузер. Доступ защищён паролем: администратор видит все аккаунты, а клиент — только свою папку, магазины и интеграции.
3. Работайте с магазинами
- Кнопки «Российские маркетплейсы» и «Мировые» переключают регион списка. Поиск и фильтр площадки работают внутри выбранного раздела.
- Регион, валюта и тип товаров показаны цветными значками в одну строку. Нажмите на значок, чтобы открыть его расшифровку.
- Кнопка «Открыть» сначала показывает обзор магазина. Далее доступны разделы: API, Товары и цены, Заказы FBS, Заказы FBO, Заказы DBS и Честный знак.
- В разделе «API» можно обновить ключ, увидеть дату его добавления, дату завершения шестимесячного периода, обратный отсчёт и краткую таблицу открытых прав. Здесь же выбираются аккаунт МойСклад, юридическое лицо, контрагент, договор и валюта. Для российских магазинов используется RUB, для международных — CNY.
- В настройках заказов FBS и DBS выбираются канал продаж и проект из МойСклад. Значения сохраняются отдельно для каждого магазина и схемы и передаются в создаваемые заказы покупателей.
- В «Товарах и ценах» два основных экрана: «Каталог товаров» и «Настройки». Внутри настроек находятся таблица связей, сопоставление товаров и импорт. Для сопоставления выбираются артикул продавца, штрихкод или SKU маркетплейса и код, артикул или штрихкод МойСклад. Отдельно настраиваются комплекты, упаковки, архивные товары, поля карточки и цены.
- Поля длины, ширины, высоты и бренда можно создать в выбранном аккаунте МойСклад прямо из настроек. В импорте выбирается один режим: добавление новых, обновление существующих или работа только с конкретными товарами. Там же задаются изображения, единицы длины и автоматическое создание из заказа.
- Таблица связей фильтруется по состояниям «Все», «Связанные», «Без связи», «Ошибки связи» и «Ошибки создания». До подключения чтения номенклатуры МойСклад товары отображаются без связи.
- Настройки на карточке магазина позволяют переименовать его, сменить ключи или перенести к другому клиенту. Пустое поле ключа сохраняет прежнее значение.
- При смене Client ID Ozon укажите соответствующий API Key. Для другой площадки добавьте отдельный магазин.
- Фотографии, характеристики и цены Ozon загружаются через Seller API. Валюта сохраняется как в ответе площадки. Цена покупателя может отличаться.
- Если загрузка прервётся, прежние товары останутся доступными. Повторное нажатие продолжит незавершённую синхронизацию.
Если Wildberries отклоняет токен
Во вкладке «Для интеграции вручную» в кабинете WB создайте токен с доступом «Контент» и «Цены и скидки». Для собственной системы на инфраструктуре продавца подходит персональный токен; для других поддерживаемых сценариев — базовый. Сервисный токен, созданный для другого сервиса из каталога WB, здесь не работает: он требует секрет этого сервиса.
Отозванный или просроченный токен нужно заменить. При неверном формате скопируйте токен целиком. Внесите новый токен в настройки нужного магазина и повторите синхронизацию. Инструкция Wildberries.
Размещение на обычном хостинге
Нужен PHP 8.1+ с cURL, JSON и session. База данных и Node.js не нужны. Загрузите приложение и укажите public корнем сайта. Конфигурация и данные должны быть выше корня:
market/ ├── config.php — ключи и настройки ├── server/ — серверная часть ├── scripts/ — команды настройки и синхронизации ├── storage/ — клиенты, магазины, товары └── public/ — корень сайта
Для фиксированного public_html скопируйте туда содержимое public, а остальные папки разместите непосредственно уровнем выше. Разрешите PHP запись в папку приложения и storage. Откройте сайт, создайте клиента и подключите магазин — конфигурация создастся автоматически.
Обновление прежней версии
Сохраните свои config.php и всю папку storage, замените остальные файлы приложения. Старые магазины остаются Wildberries в прежних папках клиентов. Повторно вводить токены не нужно. Аккаунты ещё более ранней версии без клиентов появятся в папке «Основной клиент».
Обновление по расписанию
Добавьте в Cron хостинга команду, например раз в час, подставив свои пути:
0 * * * * /usr/bin/php /home/USER/market/scripts/sync.php >> /home/USER/market/storage/cron.log 2>&1
Команда обновляет все магазины всех клиентов с настроенными ключами. Для одного магазина добавьте --account=ID. Сбой одного подключения не останавливает остальные.