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

Авторизация

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

Запросы

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

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

Выборка всех полей последнего заказа базы.
Запрос
SQL синоним
Ответ
1
// Массив передаваемых данных
2
$properties = array(
3
'from' => 'orders',
4
'method' => 'select',
5
'vars' => '*',
6
'where' => '',
7
'order' => 'id desc',
8
'limit' => '1'
9
);
10
11
$ch = curl_init();
12
curl_setopt($ch, CURLOPT_URL, 'https://shopname.ru/base-xml-manager/json/');
13
curl_setopt($ch, CURLOPT_POST, true);
14
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($properties));
15
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
16
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
17
'TOKEN: {TOKEN}',
18
'Content-Type: application/json',
19
));
20
21
header("Content-Type: application/json");
22
echo curl_exec($ch);
23
24
// Отладка
25
//print_r(json_decode(curl_exec($ch),true));
Copied!
1
select * from phpshop_orders order by id desc limit 1
Copied!
1
Array
2
(
3
[status] => succes
4
[data] => Array
5
(
6
[id] => 29
7
[datas] => 1601458072
8
[uid] => 27-1
9
[orders] => Array
10
(
11
[Cart] => Array
12
(
13
[cart] => Array
14
(
15
[52] => Array
16
(
17
[id] => 52
18
[name] => Test product
19
[price] => 5000
20
[uid] => 123456
21
[num] => 1
22
[pic_small] => /UserFiles/Image/Trial/img52_37358s.jpg
23
[total] => 5000
24
)
25
26
)
27
28
[dostavka] => 0
29
[sum] => 5000
30
)
31
32
[Person] => Array
33
(
34
[mail] => den@phpshop.ru
35
[dostavka_metod] => 3
36
[discount] => 0
37
[order_metod] => 3
38
)
39
40
[num] => 1
41
[sum] => 5000
42
[weight] => 1000
43
[dostavka] => 0
44
)
45
46
[status] => Array
47
(
48
[maneger] =>
49
[time] => 30-09-2020 12:35
50
)
51
52
[user] => 0
53
[seller] => 0
54
[statusi] => 0
55
[country] =>
56
[state] =>
57
[city] =>
58
[index] =>
59
[fio] => User
60
[tel] => (926) 969-6636
61
[street] =>
62
[house] =>
63
[porch] =>
64
[door_phone] =>
65
[flat] =>
66
[delivtime] =>
67
[org_name] =>
68
[org_inn] =>
69
[org_kpp] =>
70
[org_yur_adres] =>
71
[org_fakt_adres] =>
72
[org_ras] =>
73
[org_bank] =>
74
[org_kor] =>
75
[org_bik] =>
76
[org_city] =>
77
[dop_info] =>
78
[sum] => 5000
79
[files] =>
80
[tracking] =>
81
[admin] => 0
82
[servers] => 0
83
[paid] =>
84
[bonus_minus] => 0
85
[bonus_plus] => 0
86
[moysklad_deal_id] =>
87
)
88
89
)
90
1
Copied!
В полях vars и where можно указывать условия выборки обычным для SQL способом. Пример:
Запрос
SQL синоним
1
$properties = array(
2
'from' => 'products',
3
'method' => 'select',
4
'vars' => 'id,name,price',
5
'where' => 'id=100',
6
'order' => '',
7
'limit' => '1'
8
);
Copied!
1
select id,name,price from phpshop_products where id="100" limit 1
Copied!
В ответ на запрос будет получен массив данных в формате JSON. В массиве data будет хранится информация из БД, в значении status будет статус ответа success, false или error. При наличии ошибки будет показан SQL код ошибки в поле error. Положительный результат выборки всегда дополняется статусом success.
В качестве имени from используются короткие имена таблиц в PHPShop, основные из них:
  • products - таблица товаров
  • categories - таблица каталогов
  • orders - таблица заказов
  • shopusers - таблица покупателей
Полный список таблиц с описанием доступен в панели управления База - SQL запрос к базе - Описание таблиц.

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

Запрос
SQL синоним
Ответ
1
$properties = array(
2
'from' => 'orders',
3
'method' => 'select',
4
'vars' => '*',
5
'where' => '',
6
'order' => 'id desc',
7
'limit' => '1'
8
);
Copied!
1
select * from phpshop_orders order by id desc limit 1
Copied!
1
Array
2
(
3
[status] => succes
4
[data] => Array
5
(
6
[id] => 29
7
[datas] => 1601458072
8
[uid] => 27-1
9
[orders] => Array
10
(
11
[Cart] => Array
12
(
13
[cart] => Array
14
(
15
[52] => Array
16
(
17
[id] => 52
18
[name] => Test product
19
[price] => 5000
20
[uid] => 123456
21
[num] => 1
22
[pic_small] => /UserFiles/Image/Trial/img52_37358s.jpg
23
[total] => 5000
24
)
25
26
)
27
28
[dostavka] => 0
29
[sum] => 5000
30
)
31
32
[Person] => Array
33
(
34
[mail] => [email protected].ru
35
[dostavka_metod] => 3
36
[discount] => 0
37
[order_metod] => 3
38
)
39
40
[num] => 1
41
[sum] => 5000
42
[weight] => 1000
43
[dostavka] => 0
44
)
45
46
[status] => Array
47
(
48
[maneger] =>
49
[time] => 30-09-2020 12:35
50
)
51
52
[user] => 0
53
[seller] => 0
54
[statusi] => 0
55
[country] =>
56
[state] =>
57
[city] =>
58
[index] =>
59
[fio] => User
60
[tel] => (926) 969-6636
61
[street] =>
62
[house] =>
63
[porch] =>
64
[door_phone] =>
65
[flat] =>
66
[delivtime] =>
67
[org_name] =>
68
[org_inn] =>
69
[org_kpp] =>
70
[org_yur_adres] =>
71
[org_fakt_adres] =>
72
[org_ras] =>
73
[org_bank] =>
74
[org_kor] =>
75
[org_bik] =>
76
[org_city] =>
77
[dop_info] =>
78
[sum] => 5000
79
[files] =>
80
[tracking] =>
81
[admin] => 0
82
[servers] => 0
83
[paid] =>
84
[bonus_minus] => 0
85
[bonus_plus] => 0
86
[moysklad_deal_id] =>
87
)
88
89
)
90
1
91
Copied!

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

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

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

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

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

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

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

При создании нового заказа корзина заказа передается в сериализованном массиве orders.
Запрос
Ответ
1
$properties = array(
2
'from' => 'orders',
3
'method' => 'insert',
4
'vars' => array(
5
'uid' => '27-1',
6
'datas' => time(),
7
'fio' => 'User',
8
'tel' =>'(926) 969-6636',
9
'sum' => 5000,
10
'orders' => serialize(array(
11
'Cart' => array(
12
'cart' => array(
13
52 => array(
14
'id' => 52,
15
'name' => 'Test product',
16
'price' => 5000,
17
'uid' => 123456,
18
'num' => 1,
19
'pic_small' => '/UserFiles/Image/Trial/img52_37358s.jpg',
20
'total' => 5000
21
),
22
),
23
),
24
'Person'=>array(
25
'mail'=>'[email protected]',
26
'dostavka_metod'=>3,
27
'discount'=>0,
28
'order_metod'=>3
29
),
30
'num' => 1,
31
'sum' => 5300,
32
'weight' => 1000,
33
'dostavka' => 300
34
)),
35
),
36
'where' => '',
37
'order' => '',
38
'limit' => ''
39
);
Copied!
1
Array
2
(
3
[status] => succes
4
)
Copied!

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

Описанный метод обмена информацией используется:
  1. 1.
    Интерактивный прайс-лист - автоматически заполняющийся, на основе каталога магазина, файл Excel, со встроенной виртуальной корзиной.
  2. 2.
    Монитор - приложение управления заказами для Windows.
JSON API доступно для версии PHPShop 6.0.9 и выше.
Last modified 9mo ago