Настроили интеграцию https://erp.openshop.ua/admin/shop/integrations/opencart-1/control/
Установлено действие https://prnt.sc/wg4qsc
Файлы на сервер поместили
Выгружаются только категории https://prnt.sc/wg4z5y
Товары не выгружаются, заказы не загружаются.
В чём проблема?
Разработчики Opencart 3+ допустили ошибку в API, из-за этого не работает корректно.
Чтоб исправить: 1) идем в файл /catalog/controller/startup/session.php и ищем строку $this->db->query("DELETE FROM `" . DB_PREFIX . "api_session` WHERE TIMESTAMPADD(HOUR, 1, date_modified) < NOW()");
и перед этой строкой надо добавить: if (!isset($this->request->get[‘api_token’])) { $this->request->get[‘api_token’] = ”; }
2. идем в файл catalog/model/account/api.php и ищем строку:
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "api` WHERE `username` = '" . $this->db->escape($username) . "' `key` = '" . $this->db->escape($key) . "' AND status = '1'"); в этой строке также допущена ошибка пропущен AND. Ниже я указал правильную строку, просто замените на нее: $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "api` WHERE `username` = '" . $this->db->escape($username) . "' AND `key` = '" . $this->db->escape($key) . "' AND status = '1'");
3. Последний шаг и можно приступать. Идем в файл /catalog/controller/api/login.php и ишем там строку :
$session = new Session($config->get('session_engine'), $registry);
И тут разработчики чуток на путали. правильный синтаксис такой :
$session = new Session($this->config->get('session_engine'), $this->registry);
Вот и все.
Разработчики Opencart 3+ допустили ошибку в API, из-за этого не работает корректно.
Чтоб исправить:
1) идем в файл /catalog/controller/startup/session.php и ищем строку
$this->db->query("DELETE FROM `" . DB_PREFIX . "api_session` WHERE TIMESTAMPADD(HOUR, 1, date_modified) < NOW()");
и перед этой строкой надо добавить:
if (!isset($this->request->get[‘api_token’])) { $this->request->get[‘api_token’] = ”; }
2. идем в файл catalog/model/account/api.php и ищем строку:
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "api` WHERE `username` = '" . $this->db->escape($username) . "' `key` = '" . $this->db->escape($key) . "' AND status = '1'");
в этой строке также допущена ошибка пропущен AND. Ниже я указал правильную строку, просто замените на нее:
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "api` WHERE `username` = '" . $this->db->escape($username) . "' AND `key` = '" . $this->db->escape($key) . "' AND status = '1'");
3. Последний шаг и можно приступать. Идем в файл /catalog/controller/api/login.php и ишем там строку :
$session = new Session($config->get('session_engine'), $registry);
И тут разработчики чуток на путали. правильный синтаксис такой :
$session = new Session($this->config->get('session_engine'), $this->registry);
Вот и все.
сделали по этой инструкции https://evilcoder.ru/oshibki-v-opencart-api-ili-skaz-o-tom-pochemu-nuzhno-testirovat/
Но товары так и не выгрузились
Была сначала такая ошибка в логге
[2021-01-05 19:48:04]
point: /var/www/erpopenshopua/web1/web/cron/cron-minute.php
data: Array
(
[url] => https://new.openshop.ua/index.php?route=api/oneboxsync/getOrderValue/&token=&api_token=
[responce] => <b>Notice</b>: Undefined index: username in <b>/var/www/openshop/data/www/new.openshop.ua/catalog/controller/api/oneboxsync.php</b> on line <b>15</b><b>Notice</b>: Undefined index: password in <b>/var/www/openshop/data/www/new.openshop.ua/catalog/controller/api/oneboxsync.php</b> on line <b>15</b><b>Notice</b>: Undefined index: api_id in <b>/var/www/openshop/data/www/new.openshop.ua/catalog/controller/api/oneboxsync.php</b> on line <b>18</b>{"error":"error_permission"}
)
Убрали здесь https://prnt.sc/wgx99h
Апи завелось, заказы импортируются https://erp.openshop.ua/admin/customorder/order/7006/edit/
Но товары не выгружаются, только категории
Пожалуйста, присоединяйтесь к диалогу. Если вам есть что сказать - пожалуйста, напишите комментарий. Для входа потребуется мобильный телефон и смс-код для идентификации.
Войти и написать комментарий