JSON API

JSON API позволяет работать напрямую с базой данных PHPShop через внешние JSON запросы. Поддерживаются команды выборки, редактирования, удаления и создания данных.

Авторизация

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

Запросы

Все запросы отправляются на адрес https://shopname.ru/base-xml-manager/json/. В заголовке запроса должен быть обязателен указан Токен авторизации {TOKEN} и передан массив данных $properties определенного содержания с указанием откуда производится выборка и по каким критериям на основе языка запросов SQL.

Пример на языке PHP

Выборка всех полей последнего заказа базы.

Запрос
SQL синоним
Ответ
Запрос
// Массив передаваемых данных
$properties = array(
'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));
SQL синоним
select * from phpshop_orders order by id desc limit 1
Ответ
Array
(
[status] => succes
[data] => Array
(
[id] => 29
[datas] => 1601458072
[uid] => 27-1
[orders] => Array
(
[Cart] => Array
(
[cart] => Array
(
[52] => Array
(
[id] => 52
[name] => Test product
[price] => 5000
[uid] => 123456
[num] => 1
[pic_small] => /UserFiles/Image/Trial/img52_37358s.jpg
[total] => 5000
)
)
[dostavka] => 0
[sum] => 5000
)
[Person] => Array
(
[mail] => den@phpshop.ru
[dostavka_metod] => 3
[discount] => 0
[order_metod] => 3
)
[num] => 1
[sum] => 5000
[weight] => 1000
[dostavka] => 0
)
[status] => Array
(
[maneger] =>
[time] => 30-09-2020 12:35
)
[user] => 0
[seller] => 0
[statusi] => 0
[country] =>
[state] =>
[city] =>
[index] =>
[fio] => User
[tel] => (926) 969-6636
[street] =>
[house] =>
[porch] =>
[door_phone] =>
[flat] =>
[delivtime] =>
[org_name] =>
[org_inn] =>
[org_kpp] =>
[org_yur_adres] =>
[org_fakt_adres] =>
[org_ras] =>
[org_bank] =>
[org_kor] =>
[org_bik] =>
[org_city] =>
[dop_info] =>
[sum] => 5000
[files] =>
[tracking] =>
[admin] => 0
[servers] => 0
[paid] =>
[bonus_minus] => 0
[bonus_plus] => 0
[moysklad_deal_id] =>
)
)
1

В полях vars и where можно указывать условия выборки обычным для SQL способом. Пример:

Запрос
SQL синоним
Запрос
$properties = array(
'from' => 'products',
'method' => 'select',
'vars' => 'id,name,price',
'where' => 'id=100',
'order' => '',
'limit' => '1'
);
SQL синоним
select id,name,price from phpshop_products where id="100" limit 1

В ответ на запрос будет получен массив данных в формате JSON. В массиве data будет хранится информация из БД, в значении status будет статус ответа success, false или error. При наличии ошибки будет показан SQL код ошибки в поле error. Положительный результат выборки всегда дополняется статусом success.

В качестве имени from используются короткие имена таблиц в PHPShop, основные из них:

  • products - таблица товаров

  • categories - таблица каталогов

  • orders - таблица заказов

  • shopusers - таблица покупателей

Полный список таблиц с описанием доступен в панели управления База - SQL запрос к базе - Описание таблиц.

Выборка данных метод select

Запрос
SQL синоним
Ответ
Запрос
$properties = array(
'from' => 'orders',
'method' => 'select',
'vars' => '*',
'where' => '',
'order' => 'id desc',
'limit' => '1'
);
SQL синоним
select * from phpshop_orders order by id desc limit 1
Ответ
Array
(
[status] => succes
[data] => Array
(
[id] => 29
[datas] => 1601458072
[uid] => 27-1
[orders] => Array
(
[Cart] => Array
(
[cart] => Array
(
[52] => Array
(
[id] => 52
[name] => Test product
[price] => 5000
[uid] => 123456
[num] => 1
[pic_small] => /UserFiles/Image/Trial/img52_37358s.jpg
[total] => 5000
)
)
[dostavka] => 0
[sum] => 5000
)
[Person] => Array
(
[mail] => den@phpshop.ru
[dostavka_metod] => 3
[discount] => 0
[order_metod] => 3
)
[num] => 1
[sum] => 5000
[weight] => 1000
[dostavka] => 0
)
[status] => Array
(
[maneger] =>
[time] => 30-09-2020 12:35
)
[user] => 0
[seller] => 0
[statusi] => 0
[country] =>
[state] =>
[city] =>
[index] =>
[fio] => User
[tel] => (926) 969-6636
[street] =>
[house] =>
[porch] =>
[door_phone] =>
[flat] =>
[delivtime] =>
[org_name] =>
[org_inn] =>
[org_kpp] =>
[org_yur_adres] =>
[org_fakt_adres] =>
[org_ras] =>
[org_bank] =>
[org_kor] =>
[org_bik] =>
[org_city] =>
[dop_info] =>
[sum] => 5000
[files] =>
[tracking] =>
[admin] => 0
[servers] => 0
[paid] =>
[bonus_minus] => 0
[bonus_plus] => 0
[moysklad_deal_id] =>
)
)
1

Обновление данных метод update

Запрос
SQL синоним
Ответ
Запрос
$properties = array(
'from' => 'products',
'method' => 'update',
'vars' => array('price'=>1000,'name'=>'New name'),
'where' => 'id=147',
'order' => '',
'limit' => '1'
);
SQL синоним
update phpshop_products set name="New Name", price="1000" where id="147" limit 1
Ответ
Array
(
[status] => succes
)

Удаление данных метод delete

Запрос
SQL синоним
Ответ
Запрос
$properties = array(
'from' => 'products',
'method' => 'delete',
'vars' => '',
'where' => 'id=142',
'order' => '',
'limit' => '1'
);
SQL синоним
delete from phpshop_products where id="142" limit 1
Ответ
Array
(
[status] => succes
)

Вставка данных метод insert

Запрос
SQL синоним
Ответ
Запрос
$properties = array(
'from' => 'products',
'method' => 'insert',
'vars' => array('price'=>1000,'name'=>'New name'),
'where' => '',
'order' => '',
'limit' => ''
);
SQL синоним
insert into phpshop_products set name="New name", price="1000"
Ответ
Array
(
[status] => succes
)

Создание нового заказа

При создании нового заказа корзина заказа передается в сериализованном массиве orders.

Запрос
Ответ
Запрос
$properties = array(
'from' => 'orders',
'method' => 'insert',
'vars' => array(
'uid' => '27-1',
'datas' => time(),
'fio' => 'User',
'tel' =>'(926) 969-6636',
'sum' => 5000,
'orders' => serialize(array(
'Cart' => array(
'cart' => array(
52 => array(
'id' => 52,
'name' => 'Test product',
'price' => 5000,
'uid' => 123456,
'num' => 1,
'pic_small' => '/UserFiles/Image/Trial/img52_37358s.jpg',
'total' => 5000
),
),
),
'Person'=>array(
'mail'=>'den@phpshop.ru',
'dostavka_metod'=>3,
'discount'=>0,
'order_metod'=>3
),
'num' => 1,
'sum' => 5300,
'weight' => 1000,
'dostavka' => 300
)),
),
'where' => '',
'order' => '',
'limit' => ''
);
Ответ
Array
(
[status] => succes
)

Использование

Описанный метод обмена информацией используется:

  1. Интерактивный прайс-лист - автоматически заполняющийся, на основе каталога магазина, файл Excel, со встроенной виртуальной корзиной.

  2. Монитор - приложение управления заказами для Windows.

JSON API доступно для версии PHPShop 6.0.9 и выше.