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' => ''
];

Last updated

Was this helpful?