Как пользоваться API в Opencart 2.x
В OpenCart 2.x была представлена новая система API. Это позволяет удаленно управлять вашим магазином на OpenCart 2 для интеграции системы в другие среды, например мобильные приложения. В этой статье, мы объясним, как работает API и как его использовать. С выходом новой версии Opencart был сделан большой прогресс в ветке API и хотя это - ни в коем случае заключительная версия, мы полагаем, что это - хорошая идея, чтобы познакомиться с работой этой системы.
Для того, чтобы использовать любой из методов API, вам нужно будет сначала авторизоваться. Для авторизации вам нужно получить ключ API в админке сайта Меню->Настройки->Пользователи->API. После того, как вы получили ключ - вы готовы начать работать с API.
Пример авторизации в API
$apiKey = 'qwqL3oaoqLHXCT3ZEyS4u3in3urBrUAD1kLagTFihrKN8D1XUQewGsxSOSWzibnWs4F414PPxmMuRF'; $curl = curl_init( 'http://site.ru/index.php?route=api/login/' ); $post = array ( 'key' => $apiKey ); curl_setopt_array( $curl, array( CURLOPT_RETURNTRANSFER=> TRUE, CURLOPT_POSTFIELDS => $post ) ); $response = json_decode(curl_exec( $curl )); curl_close($curl); if (isset($response->token)) { $token = $response->token; } else { // print_r($response) }
В ответ вы получите токен, который потом будете отправлять в каждом запросе в GET параметре token.
Все контроллеры API находятся в api директории, так что ваш базовый URL, должен выглядеть подобным этому: site.ru/index.php?route=api/controller/method. Здесь site.ru нужно заменить с вашим фактическим доменным именем и методом контроллера или нужным контроллером и методом из API. Имейте в виду, что часть метода необязательна. Если вы хотите вызвать функцию по умолчанию index() , вы можете не писать этот метод в URL.
Добавление товара в корзину через API Opencart 2
После успешного логина, вы можете взаимодействовать с API. Одно из возможностей это добавление товара в корзину, используя метод cart/add. URL для этого действия есть: site.ru/index.php?route=api/cart/add. Основными POST параметрами которые передаються в форме есть product_id и quantity. Вы можете также передавать массив опций option, но необьязательно.
Пример
$curl = curl_init( 'http://site.ru/index.php?route=api/cart/add/&token=' . $token ); $post = array ( 'product_id' => 41 ); curl_setopt_array( $curl, array( CURLOPT_RETURNTRANSFER=> TRUE, CURLOPT_POSTFIELDS => $post ) ); $response = json_decode(curl_exec( $curl )); curl_close($curl);
Функции API Opencart 2.x
Мы не можем рассказать про все доступные функции API здесь, но вы можете сами посмотреть какие методы API можно использовать, для этого просмотрите файлы в папке catalog/controller/api/. Таким образом вы будете иметь понятие того, что вы можете сделать с помощью API.
SDK библиотека для работы с API Opencart 2
Существует библиотеки SDK, чтобы помогать нам работать с API без знаний о cookie, GET / POST параметрах и их именах . Вы можете скачать таку библиотеку тут https://github.com/iSenseLabs/OpenCartAPI. Главный класс под названием OpenCart находится в пространстве имен OpenCart.
Для того, чтобы залогиниться, вам нужно назвать порядковую функцию контроллера логина, так URL запрос будет: site.ru/index.php?route=api/login. Тип запроса должен быть POST и требуемые POST переменные -"username" и "password". Каждый метод API возвращает форматированные данные JSON. В случае метода логина, это будет или возвращение сообщения успеха, или сообщение об ошибке. Так, проверяя, имеет ли возвращенный объект в ответе значение успеха или ошибки будет говорить вам, был ли логин успешен или нет. Также вернется cookie, которое является значением ID вашей сессии. Для того, чтобы поддерживать сессию, вам нужно будет извлечь cookie из ответа HTTP и посылать их с каждым последовательным запросом.
Пример авторизации и добавления товара в корзину:
$oc = new OpenCart\OpenCart('site.ru'); if ($oc->login('your_username', 'your_password')) { $oc->cart->add(40, 3); $cart = $oc->cart->products(); foreach ($cart['products'] as $product) { echo $product['name']."\n"; } } else { echo $oc->getLastError(); }
Вы можете также сохранить свою сессию для более позднего использования,добавивт второй параметр к конструктору класса OpenCart. Это должно быть именем файла, где будет храниться cookie. Вы можете указать это где-нибудь в вашей файловой системе. Вот - пример самой простой формы :
$oc = new OpenCart\OpenCart('site.ru', 'cookiejar');
Примеры всех методов в этой библиотеке, в том числе оформление заказа через API Opencart 2.x:
OpenCart->cart->add($product, $quantity = 1, $option = array()); OpenCart->cart->edit($key, $quantity); OpenCart->cart->remove($key); OpenCart->cart->products(); OpenCart->order->add($shipping_method = '', $comment = '', $affiliate_id = '', $order_satus_id = '') OpenCart->order->edit($order_id, $shipping_method = '', $comment = '', $affiliate_id = '', $order_status_id = '') OpenCart->order->delete($order_id) OpenCart->order->history($order_id, $order_status_id = '', $notify = '', $append = '', $comment = '') OpenCart->payment->address($firstname = '', $lastname = '', $company = '', $address_1 = '', $address_2 = '', $postcode = '', $city = '', $zone_id = '', $country_id = '') OpenCart->payment->methods() OpenCart->payment->method($payment_method) OpenCart->shipping->address($firstname = '', $lastname = '', $company = '', $address_1 = '', $address_2 = '', $postcode = '', $city = '', $zone_id = '', $country_id = '') OpenCart->shipping->methods() OpenCart->shipping->method($shipping_method) OpenCart->reward->add($reward) OpenCart->reward->maximum() OpenCart->reward->available() OpenCart->voucher->apply($voucher) OpenCart->voucher->add($voucher_from_name = '', $from_email = '', $to_name = '', $to_email = '', $voucher_theme_id = '', $message = '', $amount = '') OpenCart($url, $sessionFile = '') OpenCart->getUrl($method) OpenCart->getCookie() OpenCart->getLastError() OpenCart->login($username, $password) OpenCart->coupon($coupon) OpenCart->customer($customer_id = 0, $customer_group_id = 0, $firstname = '', $lastname = '', $email = '', $telephone = '', $fax = '')
Популярные модули Opencart 2