Статьи

Изучите API REST в OpenCart 2.0: часть первая

В последней основной версии OpenCart вы увидите множество интересных функций, начиная от полностью адаптивного дизайна в интерфейсе и бэк-энде и заканчивая системой уведомления о событиях и многим другим. Одним из наиболее мощных среди них является внедрение REST API.

В этой серии из двух частей мы рассмотрим большинство доступных API-интерфейсов и с их помощью пройдемся по процессу создания заказа. В этой первой части мы увидим, как создать учетные данные пользователя API и некоторые основные сведения об использовании API.

API REST позволяют сторонним системам беспрепятственно взаимодействовать с хранилищем OpenCart. Как насчет размещения заказов в вашем магазине с помощью приложения iOS / Android? Фактически, вы можете думать о любой системе независимо от технологии, на которой она построена! Теперь интеграция возможна с набором API, предоставляемых OpenCart 2.0.

В этой части я продемонстрирую использование API с использованием библиотеки PHP cURL. Итак, для запуска примеров вам понадобится библиотека PHP cURL. Очевидно, вам понадобится и последняя версия OpenCart, а именно 2.0!

Перед тем, как мы начнем использовать API, нам нужно настроить для этого «пользователя API». Без этого вы не сможете получить к нему доступ, и вы получите сообщение об отказе в разрешении. Итак, давайте настроим это. Перейдите в Система> Пользователи> API, и в нем будут перечислены все доступные пользователи API.

Список пользователей API

Нажмите кнопку + в правом верхнем углу, чтобы добавить нового пользователя API.

Добавить нового пользователя API

Как видите, вам нужно ввести имя пользователя , пароль и статус . Вы также можете использовать кнопку « Создать» , чтобы создать сложную строку пароля, как я сделал! Кроме того, убедитесь, что Статус установлен на Включено . Сохраните изменения, и вы готовы!

Теперь, когда мы настроили пользователя API, мы можем начать исследовать API!

Как мы увидим основные примеры PHP на протяжении всей этой серии, давайте удостоверимся, что мы настроили файл, который содержит общий код, чтобы избежать дублирования!

common.php создайте файл common.php и вставьте в него следующее содержимое.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
function do_curl_request($url, $params=array()) {
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_COOKIEJAR, ‘/tmp/apicookie.txt’);
  curl_setopt($ch, CURLOPT_COOKIEFILE, ‘/tmp/apicookie.txt’);
 
  $params_string = »;
  if (is_array($params) && count($params)) {
    foreach($params as $key=>$value) {
      $params_string .= $key.’=’.$value.’&’;
    }
    rtrim($params_string, ‘&’);
 
    curl_setopt($ch,CURLOPT_POST, count($params));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
  }
 
  //execute post
  $result = curl_exec($ch);
 
  //close connection
  curl_close($ch);
 
  return $result;
}

Как видите, он содержит только одну функцию do_curl_request , которая будет вызывать CURL для URL-адреса, переданного аргументом $url . Второй аргумент — это массив параметров на случай, если вам нужно POST-данные.

Другие важные вещи, на которые следует обратить внимание, это настройки CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE . Они устанавливают файл, в котором файлы cookie будут храниться и считываться. Поскольку нам нужно совершать аутентифицированные звонки, это обязательно! Конечно, вы хотите изменить путь /tmp/apicookie.txt соответствии с настройками вашей системы. Убедитесь, что он также доступен для записи на веб-сервере!

Наконец, функция возвращает ответ на запрос CURL!

Очевидно, что первое, что нужно сделать, это начать сеанс, и вам нужно будет использовать метод login в login . Давайте посмотрим на пример. login.php файл login.php со следующим содержимым.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
require «common.php»;
 
// set up params
$url = ‘http://your-opencart-store-url/index.php?route=api/login’;
 
$fields = array(
  ‘username’ => ‘demo_api_user’,
  ‘password’ => ‘5fbYF8oDteYSJhMQnXuxGB7jx7Ujk7zjJxuCwDSmZx3NJ47ARxW8Je70bYQrfpsfVamVXaMJ4GtHPxnu1ZX41JQN5Vy6V2XwaS6u5dMO6QDArRBc7P7RnriYyancCowlKVTNVUelIKGKmsTBZiPdcYAHX8n6pnSPvNa1wqfQaieKWux6fFZxIYlCstATe02UtFxvhzF82St2Cw0EhfC2rcFwDjQVAowMG1tGDAsIhz8EZa6ngSreD2qZQnqxg8Lm’,
);
 
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);

Во-первых, мы включили файл common.php созданный в предыдущем разделе. Затем переменная $url определяет URL-адрес входа API магазина OpenCart. Далее, массив $fields содержит учетные данные пользователя API, созданные ранее. Наконец, мы вызываем метод do_curl_request для входа в систему.

Если все настроено правильно, вы должны увидеть «Успешно: сеанс API успешно запущен!» сообщение в ответе.

Поздравляем! Вы только что использовали REST API входа в OpenCart!

Итак, теперь, когда мы вошли в систему, давайте начнем добавлять товары в нашу корзину! Создайте файл add_product.php со следующим содержимым.

01
02
03
04
05
06
07
08
09
10
11
12
13
<?php
require «common.php»;
 
// set up params
$url = ‘http://your-opencart-store-url/index.php?route=api/cart/add’;
$fields = array(
  ‘product_id’ => ’51’,
  ‘quantity’ => ‘1’
);
 
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);

Опять же, довольно простые вещи здесь! Вам необходимо передать product_id и параметры quantity чтобы добавить товар в корзину. Вы должны увидеть «Успех: Вы изменили свою корзину!» сообщение в случае успеха!

Прежде чем двигаться дальше, давайте попробуем понять, как OpenCart хранит информацию о продукте в объекте корзины. Вот как выглядит объект корзины.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
stdClass Object
(
    …
    [products] => Array
        (
            [0] => stdClass Object
                (
                    [key] => YToxOntzOjEwOiJwcm9kdWN0X2lkIjtpOjUwO30=
                    [product_id] => 51
                    [name] => Demo Product
                    [model] => demoproduct
                    [option] => Array
                        (
                        )
                    [quantity] => 1
                    [stock] => 1
                    [shipping] => 1
                    [price] => $10.00
                    [total] => $20.00
                    [reward] => 0
                )
        )
    …
)

Как видите, он хранится в виде массива, на который ссылается ключ products . key также зашифрован, поэтому, чтобы отредактировать любую запись о продукте в объекте, вам сначала нужно получить связанный key используя product_id !

Теперь посмотрим, как отредактировать количество товара в корзине. Создайте файл edit_product.php и вставьте в него следующее содержимое.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
require «common.php»;
 
// get list of products from the «Cart»
$url = ‘http://your-opencart-store-url/index.php?route=api/cart/products’;
$json = do_curl_request($url);
$products_data = json_decode($json);
 
// fetch «key» of the product we want to edit
$product_key = $products_data->products[0]->key;
 
// edit the product in the «Cart» using «key»
$url = ‘http://your-opencart-store-url/index.php?route=api/cart/edit’;
$fields = array(
  ‘key’ => $product_key,
  ‘quantity’ => ‘2’
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);

Мы сделали два вызова CURL в приведенном выше примере. Первый — получить все товары в корзине, а второй — обновить количество товара в корзине!

Чтобы отредактировать любой продукт, вам потребуется $key для продукта, и вы можете найти его, выбрав полный массив продуктов из сеанса корзины.

Для простоты я извлек ключ, используя индекс 0 напрямую. Но, конечно, вам нужно найти его, используя product_id .

1
$product_key = $products_data->products[0]->key;

Все остальное просто: мы просто передаем key и quantity мы хотели бы обновить для продукта! Опять же, вы должны увидеть «Успех: вы изменили свою корзину!» в ответ, чтобы убедиться, что количество обновляется правильно.

Вот и все на сегодня. В следующей части этого урока мы увидим остальные примеры создания заказа!

Сегодня мы рассмотрели важную функцию «REST API» в OpenCart. Мы прошли процесс создания пользователя API, а затем изучили несколько практических примеров, чтобы понять, как использовать API. Я хотел бы услышать ваши мысли об этой захватывающей функции!