JSON API

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

Авторизация

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

Для смена или получения нового токена следует сменить пароль пользователя.

Запросы

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

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

$properties = array(
    '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 запрос к базе - Описание таблиц.

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

$properties = array(
    'from' => 'orders',
    'method' => 'select',
    'vars' => '*',
    'where' => '',
    'order' => 'id desc',
    'limit' => '1'
);

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

$properties = array(
  'from' => 'products',
  'method' => 'update',
  'vars' => array('price'=>1000,'name'=>'New name'),
  'where' => 'id=147',
  'order' => '',
  'limit' => '1'
);

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

$properties = array(
  'from' => 'products',
  'method' => 'delete',
  'vars' => '',
  'where' => 'id=142',
  'order' => '',
  'limit' => '1'
);

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

$properties = array(
  'from' => 'products',
  'method' => 'insert',
  'vars' => array('price'=>1000,'name'=>'New name'),
  'where' => '',
  'order' => '',
  'limit' => ''
);

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

При создании нового заказа корзина заказа передается в сериализованном массиве 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' => ''
);

Отправка почтового сообщения

$properties = array(
    'from' => '',
    'method' => 'mail',
    'vars' => ['mail'=>'user@mail.ru','title'=>'Status','content'=>'Test'],
    'where' => '',
    'order' => '',
    'limit' => ''
);

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

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

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

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

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

Last updated