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 коментаря
Recommended Comments
Створіть аккаунт або увійдіть для коментування
Ви повинні бути користувачем, щоб залишити коментар
Створити обліковий запис
Зареєструйтеся для отримання облікового запису. Це просто!
Зареєструвати аккаунтВхід
Уже зареєстровані? Увійдіть тут.
Вхід зараз