JSON API позволяет работать напрямую с базой данных PHPShop через внешние JSON запросы. Поддерживаются команды выборки, редактирования, удаления и создания данных.
Авторизация
Для авторизации запроса используются Token
, его можно получить в разделе управления пользователем в закладке Права
секция Доступ по API
. Можно задать ограничение на принятие запросов только на Обзор, Редактирование и Создание.
Для смена или получения нового токена следует сменить пароль пользователя.
Запросы
Все запросы отправляются на адрес https://shopname.ru/base-xml-manager/json/
. В заголовке запроса должен быть обязателен указан Токен авторизации {TOKEN}
и передан массив данных $properties
определенного содержания с указанием откуда производится выборка и по каким критериям на основе языка запросов SQL
.
Примеры
Выборка всех полей последнего заказа базы.
PHP JavaScript 1C SQL Ответ
Copy // Массив передаваемых данных
$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));
Copy // Массив передаваемых данных
var data = {};
data[ 'from' ] = 'orders' ;
data[ 'method' ] = 'select' ;
data[ 'vars' ] = '*' ;
data[ 'where' ] = '' ;
data[ 'order' ] = 'id desc' ;
data[ 'limit' ] = '1' ;
$ .ajax ({
url : 'https://shopname.ru/base-xml-manager/json/' ,
type : 'post' ,
data : JSON .stringify (data) ,
dataType : 'json' ,
headers : { 'TOKEN' : '{TOKEN}' } ,
success : function (json) {
// Отладка
console .log (json);
}
});
Copy // Массив передаваемых данных
ЗаписьJSon = Новый ЗаписьJSon;
ЗаписьJSon.УстановитьСтроку();
ЗаписьJSon.УстановитьНачалоОбъекта();
ЗаписьJSon.ЗаписатьИмяСвойства("from");
ЗаписьJSon.ЗаписатьЗначение("orders");
ЗаписьJSon.ЗаписатьИмяСвойства("method");
ЗаписьJSon.ЗаписатьЗначение("select");
ЗаписьJSon.ЗаписатьИмяСвойства("vars");
ЗаписьJSon.ЗаписатьЗначение("*");
ЗаписьJSon.ЗаписатьИмяСвойства("where");
ЗаписьJSon.ЗаписатьЗначение("");
ЗаписьJSon.ЗаписатьИмяСвойства("order");
ЗаписьJSon.ЗаписатьЗначение("id desc");
ЗаписьJSon.ЗаписатьИмяСвойства("limit");
ЗаписьJSon.ЗаписатьЗначение("1");
ЗаписьJSon.ЗаписатьКонецОбъекта();
СрокаJSON = ЗаписьJSon.Закрыть();
Запрос = Новый HTTPЗапрос("http://shopname.ru/base-xml-manager/json/");
Запрос.Заголовки.Вставить("TOKEN","{TOKEN}");
Запрос.УстановитьТелоИзСтроки(СрокаJSON);
Результат = Соединение.ОтправитьДляОбработки(Запрос);
СтрокаРезультат = Результат.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаРезультат);
Ответ = ПрочитатьJSON(ЧтениеJSON, Истина);
Copy select * from phpshop_orders order by id desc limit 1
Copy 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 синоним
Copy $properties = array (
'from' => 'products' ,
'method' => 'select' ,
'vars' => 'id,name,price' ,
'where' => 'id=100' ,
'order' => '' ,
'limit' => '1'
);
Copy 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 - таблица каталогов
shopusers - таблица покупателей
Полный список таблиц с описанием доступен в панели управления База
- SQL запрос к базе
- Описание таблиц
.
Выборка данных метод select
Запрос SQL синоним Ответ
Copy $properties = array (
'from' => 'orders' ,
'method' => 'select' ,
'vars' => '*' ,
'where' => '' ,
'order' => 'id desc' ,
'limit' => '1'
);
Copy select * from phpshop_orders order by id desc limit 1
Copy 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 синоним Ответ
Copy $properties = array (
'from' => 'products' ,
'method' => 'update' ,
'vars' => array ( 'price' => 1000 , 'name' => 'New name' ) ,
'where' => 'id=147' ,
'order' => '' ,
'limit' => '1'
);
Copy update phpshop_products set name= "New Name" , price = "1000" where id = "147" limit 1
Copy Array
(
[status] => succes
)
Удаление данных метод delete
Запрос SQL синоним Ответ
Copy $properties = array (
'from' => 'products' ,
'method' => 'delete' ,
'vars' => '' ,
'where' => 'id=142' ,
'order' => '' ,
'limit' => '1'
);
Copy delete from phpshop_products where id = "142" limit 1
Copy Array
(
[status] => succes
)
Вставка данных метод insert
Запрос SQL синоним Ответ
Copy $properties = array (
'from' => 'products' ,
'method' => 'insert' ,
'vars' => array ( 'price' => 1000 , 'name' => 'New name' ) ,
'where' => '' ,
'order' => '' ,
'limit' => ''
);
Copy insert into phpshop_products set name= "New name" , price = "1000"
Copy Array
(
[status] => succes
)
Создание нового заказа
При создании нового заказа корзина заказа передается в сериализованном массиве orders .
Запрос Ответ
Copy $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' => ''
);
Copy Array
(
[status] => succes
)
Отправка почтового сообщения
Запрос Ответ
Copy $properties = array (
'from' => '' ,
'method' => 'mail' ,
'vars' => [ 'mail' => 'user@mail.ru' , 'title' => 'Status' , 'content' => 'Test' ] ,
'where' => '' ,
'order' => '' ,
'limit' => ''
);
Copy Array
(
[status] => succes
)
Использование
Описанный метод обмена информацией используется:
Интерактивный прайс-лист - автоматически заполняющийся, на основе каталога магазина, файл Excel, со встроенной виртуальной корзиной.
Монитор - приложение управления заказами для Windows.
JSON API доступно для версии PHPShop 6.0.9 и выше.