Вопрос API в opencart

mcsweb

Пользователь
Сообщения
1
Реакции
0
Уважаемые. Есть ли опыт общения с APi Opencart 4 у кого-нибудь.
Интересует управление товарами по API (по БД не интересует).
Но три дня работы с интернетом и ИИ результат не дали.
Ключ создаю. IP прописываю - но получаю "Вы не авторизованы".
Не пойму в чем дело.
Да и в целом об API Opencart почему то очень мало инфы.
 

Шаг 1. Проверьте IP-адрес (самая частая причина)​

Это первое, что нужно проверить. OpenCart 4 имеет строгую привязку API-ключа к IP-адресу.
  1. Зайдите в админку: Система -> Пользователи -> API.
  2. Откройте ваш созданный API-ключ для редактирования.
  3. Перейдите на вкладку IP-адреса.
  4. Убедитесь, что там точно указан IP-адрес, с которого вы отправляете запрос. Система даже показывает ваш текущий IP для удобства.
  5. Если вы тестируете с локальной машины, а сайт на хостинге, ваш IP-адрес может быть динамическим. Проверьте его и добавьте в список.

Шаг 2. Используйте правильный путь (Endpoint) для авторизации​

В OpenCart 4 путь для получения токена изменился. Если вы используете старый route=api/login, он работать не будет.
  • Правильный путь: index.php?route=api/account/login
Bash:
Развернуть Свернуть Скопировать
POST https://ваш-сайт.com/index.php?route=api/account/login
Content-Type: application/x-www-form-urlencoded

username=ИМЯ_ПОЛЬЗОВАТЕЛЯ_API&key=ВАШ_API_КЛЮЧ

В ответ вы должны получить JSON с api_token. Если вы получаете HTML-страницу с ошибкой 404, значит, вы используете неверный путь.

Шаг 3. Правильно передавайте токен в последующих запросах​

Полученный api_token нужно передавать в заголовках каждого последующего запроса.
HTTP:
Развернуть Свернуть Скопировать
GET https://ваш-сайт.com/index.php?route=api/products
Authorization: Bearer ВАШ_API_TOKEN
Accept: application/json

Шаг 4. Проверьте разрешенные маршруты (если получаете 403 Forbidden)​

Это более глубокая проблема, характерная для версии 4.1.0.0 и выше. В файле catalog/controller/startup/api.php по умолчанию разрешены только маршруты api/order и api/subscription. Если вы пытаетесь обратиться, например, к api/products, а его нет в этом списке, вы получите ошибку 403.
PHP:
Развернуть Свернуть Скопировать
// В файле catalog/controller/startup/api.php
$allowed = [
    'api/order',
    'api/subscription',
    'api/products',        // <-- Добавьте эту строку
    'api/account/login'    // <-- И эту, если её нет
];

После изменения не забудьте очистить кэш модификаторов в админке (Расширения -> Модификаторы -> Обновить).

Шаг 5. Убедитесь, что API включен и есть права​

Проверьте самые базовые вещи:
  • Статус API-ключа в админке должен быть "Включен".
  • Пользователь, под которым вы работаете в админке, должен иметь права на доступ к API (Система -> Пользователи -> Группы пользователей).
 
Назад
Сверху