Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Блог

  • записів
    12
  • коментаря
    72
  • переглядів
    7 505

REST API OpenCart - подробности.


buslikdrev

3 468 переглядів

Здесь описание работы стандартного 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));

 

 

 

  • +1 3

4 коментаря


Recommended Comments

OpenCart 2.X

Документация:

Скрытый текст

index.php?route=api/cart/add

Добавление товара в корзину

 

 Принимает POST данные:

// 1 товар
{
	'product_id':1,
	'quantity':1,
	'option':{
		100:[200,300]
	}
}

// product_id - id товара
// quantity - количество товара
// option - массив опций товара, где 100 - product_option_id может быть массивом данных product_option_value_id или строкой, 200 и 300 - product_option_value_id

// несколько товаров (начиная с OpenCart 2.0.1.0)
{
	'product':[{
		'product_id':1,
		'quantity':1,
		'option':{
			100:[200,300]
		}
	},{
		'product_id':2,
		'quantity':1,
		'option':{
			100:[200,300]
		}
	}]
}

// product - массив товаров, далее по принципу одного товара. Когда отправляете массив товаров, то корзина полностью очищается

 

  Присылает данные в формате JSON:

{
	'success':'Корзина обновлена',
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'option':{100:'Эта опция обязательна, чтобы добавить товар в корзину, когда добавляете 1 товар в корзину'},
		'store':'Нету такого товара, когда добавляете 1 товар в корзину',
	}
}


index.php?route=api/cart/edit

Обновление количества товара в корзине

 

Принимает POST данные:

{
	'key':'id товара в корзине - cart_id',
	'quantity':'Количество товара'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Корзина обновлена',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/cart/remove

Удаление товара из корзины

 

Принимает POST данные:

{
	'key':'id товара в корзине - cart_id'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Корзина обновлена',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/cart/products

Получение списка товаров в корзине

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	"products":[{
		"cart_id": "53",
		"product_id": "48",
		"name": "iPod Classic",
		"model": "product 20",
		"option": [{
			'product_option_id': "1",
			'product_option_value_id': "2",
			'name': "",
			'value': "",
			'type': ""
		}],
		"quantity": "1",
		"stock": true,
		"shipping": "1",
		"price": "$122.00",
		"total": "$122.00",
		"reward": 0
	}],
	"vouchers":[{
		'code': '',
		'description': '',
		'from_name': '',
		'from_email': '',
		'to_name': '',
		'to_email': '',
		'voucher_theme_id': 1,
		'message': '',
		'price': '',			
		'amount': ''
	}],
	"totals":[{
		"title": "Итого",
		"text": "$100.00"
	},{
		"title": "Eco Tax (-2.00)",
		"text": "$2.00"
	}],
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'stock':'Товары, отмеченные ***, недоступны в нужном количестве или отсутствуют на складе!',
		'minimum':'Минимальное количество для заказа товара %s составляет %s!'
	}
}

 

 

index.php?route=api/coupon

Применение купона к товару в корзине

 

Принимает POST данные:

{
	'coupon':'Код купона'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш купон на скидку успешно применен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Купон либо недействителен, либо истек срок его действия, либо достигнут предел его использования!',
}

 

 

index.php?route=api/currency

Смена валюты на время сессии

 

Принимает POST данные:

{
	'currency':'Код валюты ISO - USD, BYN'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваша валюта успешно изменена!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Код валюты является недействительным!',
}

 

 

index.php?route=api/customer

Авторизация под покупателем и установка данных в сессию

 

Принимает POST данные:

{
	'customer_id':'id покупателя',
	'customer_group_id':'id группы покупателей',
	'firstname':'Имя покупателя',
	'lastname':'Фамилия покупателя',
	'email':'Почта покупателя',
	'telephone':'Телефон покупателя',
	'custom_field':{
		11:'Кастомное поле custom_field_id = 11',
		12:'Кастомное поле custom_field_id = 12'
	}
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваши покупатели успешно изменены',
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'warning':'Такого клиента не существует!',
		'firstname':'Имя должно содержать от 1 до 32 символов!',
		'lastname':'Фамилия должна содержать от 1 до 32 символов!',
		'email':'E-Mail адрес введен неверно!',
		'telephone':'Номер телефона должен содержать от 3 до 32 символов!',
		'custom_field*':'Это кастомное поле обязательно!',
		'telephone':'Такого клиента не существует!',
	}
}

 

 

index.php?route=api/login

Авторизация в REST API OpenCart и получение сессионных куков

 

Принимает POST данные:

// OpenCart 2.0.0.0-2.0.3.1
{
	'username':'Название api',
	'password':'Ключ api',
}

// OpenCart 2.1.0.0-2.3.0.2
{
	'key':'Ключ api',
}

// OpenCart 3.0.0.0-3.1.0.0
{
	'username':'Название api',
	'key':'Ключ api',
}

 

 

Присылает данные в формате JSON:

{
	'success':'Вы авторизованы',
	'cookie':'Имя сессионной куки - для восстановления сессии, имя отправляется в заголовке OpenCart 2.0.0.0-2.0.3.1 PHPSESSID=sfdsfdsfsgfdgdg',
	'token':'Токен - для восстановления сессии, токен добавляется к ссылке при запросах в OpenCart 2.1.0.0-2.3.0.2 создаётся сессия с названием api=sfdsfdsfsgfdgdg',
	'api_token':'Токен - для восстановления сессии, токен добавляется к ссылке при запросах в OpenCart 3.0.0.0-3.X создаётся или возобновляется обычная сессия с названием OCSESSID=sfdsfdsfsgfdgdg',
	'error':'Неправильный ключ доступа OpenCart 2.0.0.0-2.0.3.1',
	'error':{
		'ip':'Доступ с вашего IP запрещён OpenCart 2.1.0.0-3.X',
		'key':'Неправильный ключ доступа OpenCart 2.1.0.0-3.X',
	}
}

 

 

index.php?route=api/order/add

Добавление заказа

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите данные Покупателя!',
	'error':'Укажите платежный адрес!',
	'error':'Необходимо указать способ оплаты!',
	'error':'Не доступно без вариантов оплаты!',
	'error':'Укажите адрес доставки!',
	'error':'Необходимо указать способ доставки!',
	'error':'Не доступно без вариантов доставки!',
	'error':'Товары, отмеченные ***, недоступны в нужном количестве или отсутствуют на складе!',
	'error':'Минимальное количество для заказа товара %s составляет %s!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/edit

Редактирование заказа

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите данные Покупателя!',
	'error':'Укажите платежный адрес!',
	'error':'Необходимо указать способ оплаты!',
	'error':'Не доступно без вариантов оплаты!',
	'error':'Укажите адрес доставки!',
	'error':'Необходимо указать способ доставки!',
	'error':'Не доступно без вариантов доставки!',
	'error':'Товары, отмеченные ***, недоступны в нужном количестве или отсутствуют на складе!',
	'error':'Минимальное количество для заказа товара %s составляет %s!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/delete

Удаление заказа

 

Принимает POST данные:

{
	'order_id':'id заказа'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/info

Информация о заказе

 

Принимает POST данные:

{
	'order_id':'id заказа'
}

 

 

Присылает данные в формате JSON:

{
	'order':{массив из модели},
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/order/history

Добавление истории по заказу

 

Принимает POST данные:

{
	'order_id':'id заказа',
	'order_status_id':'id статуса заказа',
	'notify':'Уведомить покупателя? true/false',
	'override':'хз',
	'comment':'Комментарий'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш заказ обновлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Запрошенный заказ не найден!'
}

 

 

index.php?route=api/payment/address

Установка адреса оплаты в сессию

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

 

 

 

index.php?route=api/payment/methods

Получение списка способов оплаты

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'payment_methods':{массив данных оплат},
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес оплаты!',
	'error':'Нет доступных вариантов оплаты!'
}

 

 

index.php?route=api/payment/method

Установка способа оплаты в сессию

 

Принимает POST данные:

{
	'payment_method':'вариант оплаты - строка'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Метод оплаты был успешно установлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес оплаты!',
	'error':'Необходимо указать способ оплаты!'
}

 

 

index.php?route=api/reward

Применение бонусных баллов для покупки того, что в корзине

 

Принимает POST данные:

{
	'reward':'Количество бонусных баллов - цифра'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Бонусные баллы успешно применены!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите количество бонусных баллов, которые хотите использовать!',
	'error':'У Вас нет %s бонусных баллов!',
	'Максимальное количество бонусных баллов, которые могут быть использованы, составляет %s!'
}

 

 

index.php?route=api/reward/maximum

Получение общей цены в бонусных баллах по товару в корзине

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'maximum':'Количество бонусных баллов',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/reward/available

Получение количества бонусных баллов у пользователя

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'points':'Количество бонусных баллов',
	'error':'Вы не имеете разрешения на доступ к API!'
}

 

 

index.php?route=api/shipping/address

Установка адреса доставки в сессию

 

Допишу позже...

 

Принимает POST данные:

 

 

Присылает данные в формате JSON:

 

 

 

index.php?route=api/shipping/methods

Получение списка способов доставки

 

Принимает POST данные:

// данных нет

 

 

Присылает данные в формате JSON:

{
	'shipping_methods':{массив данных доставок},
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес доставки!',
	'error':'Нет доступных методов доставки!'
}

 

 

index.php?route=api/shipping/method

Установка способа доставки в сессию

 

Принимает POST данные:

{
	'shipping_method':'вариант доставки - строка'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Метод доставки был успешно установлен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Укажите адрес доставки!',
	'error':'Необходимо указать способ доставки!'
}

 

 

index.php?route=api/voucher

Установка подарочного сертификата в сессию

 

Принимает POST данные:

{
	'voucher':'Код подарочного сертификата'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Ваш подарочный сертификат успешно применен!',
	'error':'Вы не имеете разрешения на доступ к API!',
	'error':'Подарочный сертификат недействителен или уже был использован!'
}

 

 

index.php?route=api/voucher/add

Создание подарочного сертификата

 

Принимает POST данные:

{
	'voucher':'Код подарочного сертификата',
	'from_name':'Имя отправителя',
	'from_email':'Почта отправителя',
	'to_name':'Имя получателя',
	'to_email':'Почта получателя',
	'voucher_theme_id':'id - темы',
	'message':'Сообщение для получателя',
	'amount':'сумма - цифра'
}

 

 

Присылает данные в формате JSON:

{
	'success':'Корзина покупок обновлена!',
	'error':{
		'warning':'Вы не имеете разрешения на доступ к API!',
		'from_name':'Ваше имя должно содержать от 1 до 64 символов!',
		'from_email':'E-Mail адрес введен неверно!',
		'to_name':'Ваше имя должно содержать от 1 до 64 символов!',
		'to_email':'E-Mail адрес введен неверно!',
		'amount':'Сумма должна быть от %s до %s!',
	}
}

 

 

 

 

 

 

Надіслати

Вывод:

Стандартный REST API OpenCart слаб по функционалу. Но вы можете в любой момент создать недостающий контроллер, зная как авторизовываться.

Пример получения всех товаров:

Скрытый текст

 

index.php?route=api/mymodule/products

catalog/controller/api/mymodule.php

<?php
class ControllerApiMyModule extends Controller {
	public function products() {
		$this->load->language('api/cart');

		$json = array();

		if (!isset($this->session->data['api_id'])) {
			$json['error']['warning'] = $this->language->get('error_permission');
		} else {
			$this->load->model('catalog/product');

			$json['success']['total'] = $this->model_catalog_product->getTotalProducts();
			$json['success']['products'] = $this->model_catalog_product->getProducts();
		}

		if (isset($this->request->server['HTTP_ORIGIN'])) {
			$this->response->addHeader('Access-Control-Allow-Origin: ' . $this->request->server['HTTP_ORIGIN']);
			$this->response->addHeader('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
			$this->response->addHeader('Access-Control-Max-Age: 1000');
			$this->response->addHeader('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}
}

 

 

Надіслати
21.04.2022 в 18:33, buslikdrev сказал:

Вывод:

Стандартный REST API OpenCart слаб по функционалу. Но вы можете в любой момент создать недостающий контроллер, зная как авторизовываться.

Пример получения всех товаров:

Плохая практика для rest отдавать ошибки с кодом ответа 200 

Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.