Я пытаюсь использовать OpenCart 2 API, но я не совсем знаком с ним, и не Opencart вообще TBH.
Я создал ключ API в области администрирования, и я могу успешно связываться с API из внешнего источника, передавая имя пользователя, пароль и сам API-интерфейс, и получаю сообщение об успешном завершении.
Пример:
$url = "http://opencart.local:8888/index.php?route=api/login";
$postData = array(
"username" => $username,
"password" => $password,
"key" => $key
);
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_HEADER, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($postData));
$response = curl_exec($handle);
$header_size = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
$headers = substr($response, 0, $header_size);
$response = substr($response, $header_size);
curl_close($handle);
$return = json_decode($response, true);
Ответ возврата следующий:
array (2) {["success"] => string (42) "Успех: сеанс API успешно запущен!" ["token"] => string (32) "rfjOIzMWobWSvKvdy2LnWsekp9v1qoQQ"}
Затем после этого я вызываю функцию cart/add в API, чтобы добавить продукт (по идентификатору) в корзину:
$url = "http://opencart.local:8888/index.php?route=api/cart/add";
$cartData = array(
"product_id" => '47',
"quantity" => '1'
);
который я CURL так же, но ответ, который я получаю от OpenCart:
array (1) {["error"] => array (1) {["warning"] => string (54) "Предупреждение: у вас нет разрешения на доступ к API!" }}
Когда я проверяю проблему, кажется, что api_id, требуемый opencart для предоставления разрешения, отсутствует:
$this->session->data['api_id']
даже если это задано при входе в API. Это как-то потеряет данные сеанса, когда я делаю второй звонок, чтобы добавить товар в корзину. Помня о том, что когда это произойдет вживую, у меня не будет доступа к коду OpenCart, так как это внешний CRM, который сможет общаться только через API только с именем пользователя, паролем и ключом API.
Есть идеи? Я был бы признателен за любую помощь, поскольку я новичок в OpenCart!
спасибо
Вам нужно передать файл для файлов cookie в вариантах завитка. Почти все аутентификации нуждаются в написании и чтении: curl_setopt ($ handle, CURLOPT_COOKIEJAR, 'cookie_file.txt');
У меня был подобный опыт; Я случайно удалил ключ API и создал новый, но API просто прекратил работать.
Я узнал, что $this->config->get('config_api_id');
всегда возвращает "1". Так что изменилось мое новое имя API-ключа api_id
на 1 в базе данных, и оно сработало.
Я использую версию 2.1.0.1
Admin CP > System > Users > User Groups > Administrator [edit] > Select all Access and Permissions and click save.