rest api REST API OpenCart - подробности.
Здесь описание работы стандартного API OpenCart. Благодаря этому описанию каждый поймёт возможности и варианты применения.
Чтобы связать любой сайт с OpenCart, нужно в админ панели OpenCart/Система/Пользователи/API/Нажать кнопку добавить, дать название создаваемому API, например, название сайта которому даёте доступ, сгенерировать ключ доступа, установить статус включено, а во вкладке IP адрес добавить ip сайта.
Далее сайт может подключиться к вашему сайту с помощью отправки сгенерированного ключа пост запросом и сохранения куков. Так как не у многих получается получить сессионную куку, то Daniel Kerr сделал напрямую вывод названия сессионной куки на страницу начиная с OpenCart 3
https://github.com/opencart/opencart/blob/3.0.0.0/upload/catalog/controller/api/login.php
$json['api_token'] = $session->getId();
Пример авторизации и использование index.php?route=api/cart для OpenCart 2.X-3.X
<?php /* НАСТРОЙКИ */ // ссылка на авторизацию в API OpenCart $server = 'http://opencart.com/'; $user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"; // отправляем ключ в запросе для авторизации $post = array(); $post['username'] = ''; $post['key'] = 'hhhhhhh'; $post['api_token'] = ''; // для 3.0 $post['password'] = $post['key']; // отправляем заголовок $header = array(); $header[] = 'Content-Type: application/json; charset=UTF-8'; header('Content-Type: application/json; charset=UTF-8', true); $api = array( 'status' => false, 'products' => array(), 'vouchers' => array(), 'totals' => array(), 'log' => array(), 'errors' => array(), ); /* АВТОРИЗАЦИЯ */ if (!is_file(__dir__ . '/cookie.txt')) { $ch = curl_init($server . 'index.php?route=api/login'); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); if (!empty($post)) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } //curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // максимальное время работы curl в секундах //curl_setopt($ch, CURLOPT_TIMEOUT, 2); // максимальное время ожидания ответа от сервера //curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 500); // не прирывать сессию //curl_setopt($ch, CURLOPT_COOKIESESSION, false); // сохраняем куки curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt'); // загружаем куки curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt'); // следования любому заголовку "Location: " curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); //curl_setopt($ch, CURLOPT_HEADER, false); // принудительное использование HTTPS порт //curl_setopt($ch, CURLOPT_PORT, 443); // если сертификат на вашем сервере старый и не способен работать для проверки сертификатов или хостер мудак //curl_setopt($ch, CURLOPT_CAINFO, 'H:/OSPanel/domains/mysite.by/cacert-2021-09-30.pem'); // https://curl.se/docs/caextract.html // принудительно запрашивать сервер общаться по протоколу TLS максимально новой версии //curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_MAX_TLSv1_1); // пробные сообщения поддержки активности TCP //curl_setopt($ch, CURLOPT_TCP_KEEPALIVE, true); // принудительное использование HTTP/2.0 //curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0); // принудительная проверка хоста указанного в сертификате //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // принудительная проверка сертификата узла сети //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); $result = json_decode(curl_exec($ch), true); curl_close($ch); //echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); if (!empty($result['success'])) { $api['status'] = true; } else { $api['status'] = false; } if (!empty($result['success'])) { $api['log'][] = $result['success']; } if (!empty($result['error'])) { $api['errors'][] = $result['error']; } } /* ИСПОЛЬЗОВАНИЕ API */ if (is_file(__dir__ . '/cookie.txt')) { // добавляем товар в корзину $post = array(); $post['product_id'] = 48; $ch = curl_init($server . 'index.php?route=api/cart/add'); if (!empty($post)) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $result = json_decode(curl_exec($ch), true); curl_close($ch); //echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); if (!empty($result['success'])) { $api['log'][] = $result['success']; } if (!empty($result['error'])) { $api['errors'][] = $result['error']; } // получаем товар из корзины $post = array(); $ch = curl_init($server . 'index.php?route=api/cart/products'); if (!empty($post)) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $result = json_decode(curl_exec($ch), true); curl_close($ch); //echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); if (!empty($result['products'])) { $api['products'] = $result['products']; } if (!empty($result['vouchers'])) { $api['vouchers'] = $result['vouchers']; } if (!empty($result['totals'])) { $api['totals'] = $result['totals']; } if (!empty($result['products'])) { $api['log'][] = 'Вывели список товаров'; } if (!empty($result['error'])) { $api['errors'][] = $result['error']; } // удаляем товар из корзины if ($api['products'] && $api['products'][0]['quantity'] > 20) { $post = array(); $post['key'] = $api['products'][0]['cart_id']; $ch = curl_init($server . 'index.php?route=api/cart/remove'); if (!empty($post)) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $result = json_decode(curl_exec($ch), true); curl_close($ch); //echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); if (!empty($result['success'])) { $api['log'][] = $api['products'][0]['product_id'] . ' ' . $result['success']; } if (!empty($result['error'])) { $api['errors'][] = $result['error']; } // удаляем куки так как достигли своих целей if (is_file(__dir__ . '/cookie.txt')) { unlink(__dir__ . '/cookie.txt'); } } } // авторизация не удалась, возможно кука устарела, пробуем снова if (!$api['log'] || !empty($api['errors'][0]['error']['key'])) { if (is_file(__dir__ . '/cookie.txt')) { unlink(__dir__ . '/cookie.txt'); } } exit(json_encode($api, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
- 3
4 комментария
Рекомендованные комментарии
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас