API система OpenCart
И так, что это?
API сиcтема в OpenCart появилась со второй версии OpenCart. Она дает возможность обмениваться с сайтом на OpenCart данными на программном уровне.
В теории, это дает возможность обменяться какие-ми то данными между двумя магазинами на OpenCart или между вашим магазином на OpenCart и сторонним сайтом, который работает на другой CMS или мобильным приложением или какой-то десктопной программой, напр. 1C, складской программой итд.
Как это работает?
В админ панели (Меню->Настройки->Пользователи->API) есть возможность создавать новые API ключи с помощь которых мы можем обращаться к OpenCart.
Для каждого ключа мы можем указать:
- название ключа
- сгенерировать сам ключ
- включить или выключить его
- указать IP адреса, с которых можно обращаться с этим ключем
- посмотреть сессии этого ключа
Имея ключ можно из своего приложения обратиться к OpenCart.
Сналача автризация
Для того чтобы начать пользоваться API сначала нужно авторизироваться в магазине:
$apiKey = 'dzL3oaoqLHXCT3ZEyS4u3in3urBrUAD1kLagTFihrKN8D1XUQewGsxSOSWzibnWs4F414PPxmMuDD'; $curl = curl_init( 'http : // localhost/opencart/2101/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 { // обработка ошибки // var_dump($response) }
Теперь, получив от сервера токен, мы можем, используя этот токен, обращаться дальше к этому серверу, слать другие запросы. Например, этот запрос добавляет новый товар в корзину:
$curl = curl_init( 'http :// localhost/opencart/2101/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);
Что можно сделать в OpenCart c помощью API?
К сожалению, пока не густо. На данный момент это только операции с корзиной.
Мы можем:
- положить товар(ы) в корзину
- посмотреть содержимое
- изменить валюту
- добавить купоны
- добавить методы доставки и оплаты
- добавить заказ
Если этих возможностей вам мало, то вы всегда можете расширить их, создав свои собственные API классы, с помощью которых получить или записать свои данные.
Немного критики:
- очень мало API методов, с помощью API пока можно разве что программно "купить" какой-то товар, больше ничего API "из коробки" сделать не позволяет
- слабые возможности API - нету возможности назначить API ключ для какого-то конкретного метода, который будет по этому API доступен, нету нормального лога запросов, который бы показывал кто с какого IP по какому API что запрашивал и что получал в ответ итд.
- для API ключа обязательно указывать IP, а что если IP динамический? возможности создать API ключ для всех IP нету.
- неудобные ошибки, которые возвращает сервер, иногда это строка иногда объект 'error' из свойством 'key', иногда 'warning', иногда другими, это значительно усложняет обработку ошибок
Но конечно же, все это не очень большие недостатки, очень хорошо, что функционал API появился в OpenCart, все остальное несложно дописать, например те же методы, при необходимости можно написать любой за 15 минут. И хочеться надеяться, что этот функционал и дальше будет развиваться в OpenCart.