JSON API
JSON API позволяет работать напрямую с базой данных PHPShop через внешние JSON запросы. Поддерживаются команды выборки, редактирования, удаления и создания данных.
Авторизация
Для авторизации запроса используются Token
, его можно получить в разделе управления пользователем в закладке Права
секция Доступ по API
. Можно задать ограничение на принятие запросов только на Обзор, Редактирование и Создание.

Запросы
Все запросы отправляются на адрес https://shopname.ru/base-xml-manager/json/
. В заголовке запроса должен быть обязателен указан Токен авторизации {TOKEN}
и передан массив данных $properties
определенного содержания с указанием откуда производится выборка и по каким критериям на основе языка запросов SQL
.
Примеры
Выборка всех полей последнего заказа базы.
// Массив передаваемых данных
$properties = [
'from' => 'orders',
'method' => 'select',
'vars' => '*',
'where' => '',
'order' => 'id desc',
'limit' => '1'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shopname.ru/base-xml-manager/json/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($properties));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'TOKEN: {TOKEN}',
'Content-Type: application/json',
));
header("Content-Type: application/json");
echo curl_exec($ch);
// Отладка
//print_r(json_decode(curl_exec($ch),true));
В полях vars
и where
можно указывать условия выборки обычным для SQL
способом. Пример:
$properties = [
'from' => 'products',
'method' => 'select',
'vars' => 'id,name,price',
'where' => 'id=100',
'order' => '',
'limit' => '1'
];
В ответ на запрос будет получен массив данных в формате JSON
. В массиве data будет хранится информация из БД, в значении status будет статус ответа success
, false
или error
. При наличии ошибки будет показан SQL код ошибки в поле error
. Положительный результат выборки всегда дополняется статусом success
.
В качестве имени from
используются короткие имена таблиц в PHPShop, основные из них:
products - таблица товаров
categories - таблица каталогов
orders - таблица заказов
shopusers - таблица покупателей
Полный список таблиц с описанием доступен в панели управления База
- SQL запрос к базе
- Описание таблиц
.
Массив $properties
может содержать как один, так и сразу несколько запросов. Все они будут выполнены друг за другом в очередности нахождения в массиве.
Передача нескольких запросов
$properties[] = [
'from' => 'products',
'method' => 'update',
'vars' => ['price'=>1000,'name'=>'New name 1')],
'where' => 'id=147',
'order' => '',
'limit' => '1'
];
$properties[] = [
'from' => 'products',
'method' => 'update',
'vars' => ['price'=>1000,'name'=>'New name 2'],
'where' => 'id=148',
'order' => '',
'limit' => '1'
];
Выборка данных метод select
$properties = [
'from' => 'orders',
'method' => 'select',
'vars' => '*',
'where' => '',
'order' => 'id desc',
'limit' => '1'
];
Обновление данных метод update
$properties = [
'from' => 'products',
'method' => 'update',
'vars' => ['price'=>1000,'name'=>'New name'],
'where' => 'id=147',
'order' => '',
'limit' => '1'
];
Удаление данных метод delete
$properties = [
'from' => 'products',
'method' => 'delete',
'vars' => '',
'where' => 'id=142',
'order' => '',
'limit' => '1'
];
Вставка данных метод insert
$properties = [
'from' => 'products',
'method' => 'insert',
'vars' => ['price'=>1000,'name'=>'New name'],
'where' => '',
'order' => '',
'limit' => ''
];
Создание нового заказа
Для упрощения создания нового заказа создан готовый веб-хук (используется группа JSON запросов) по адресу https://shopname.ru/base-xml-manager/json/add-order.php
Для создания заказа передается массив, состоящих из артикулов и количества товара в заказе. Для авторизации используется почта и пароль покупателя магазина. После запроса в базе магазина будет создан новый заказа со всеми персональными данными покупателя и отправлены оповещения на почту покупателя и администратору как при ручном заказе через сайт.
Включение веб-хука
Для включения возможности принятия заказов следует 10 строкой в этом файле веб-хука заменить значение $enabled=false;
на $enabled=true;
и указать токен авторизации, под чьими правами будут создаваться заказы.
// Включение
$enabled= true;
// Токен
$TOKEN = '{TOKEN}';
// ID Способ оплаты Счет в банк
$payment = 3;
$properties = [
'art100'=>1, // Товар с артикулом art100 1 шт.
'art200'=>2, // Товар с артикулом art200 2 шт.
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://shopname.ru/base-xml-manager/json/add-order.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($properties));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'LOGIN: {MAIL}',
'PASSWORD: {PASSWORD}',
'Content-Type: application/json',
));
header("Content-Type: application/json");
echo curl_exec($ch);
Коды ошибок
Status: 503 Service Temporarily Unavailable - веб-хук не включен
User login error - неверно указан логин и пароль покупателя
No items - товар не найден
Token not found - указан неверный API токен
Отправка почтового сообщения
$properties = [
'from' => '',
'method' => 'mail',
'vars' => ['mail'=>'[email protected]','title'=>'Status','content'=>'Test'],
'where' => '',
'order' => '',
'limit' => ''
];
JSON API доступно для версии PHPShop 6.0.9 и выше.
Last updated
Was this helpful?