PHPShop
  • 🟠PHPShoр: прибыльные магазины для малого бизнеса
  • С чего начать?
    • Быстрый старт
    • ✨Помощь AI
    • SEO возможности
    • Ведение склада
    • Pro модули
    • Виды скидок
    • Конфигурации
    • Цифровые товары
  • Установка, обновление
    • Установка на хостинг
    • Установка на компьютер
    • После покупки Лицензии
    • Техническая поддержка
    • Обновление PHPShop
    • 📦Коробочная версия
    • 🖥️Аренда на своем хостинге
    • ☁️Аренда в облаке
  • ⤵️Наполнение базы
    • Переезд и миграция
    • Импорт / Экспорт:
      • Excel
      • YML
      • RSS
      • CommerceML
      • Сторонние XML
      • Сторонние парсеры
        • Пример загрузки товаров с сайта Sima-land.ru
      • Парсер PriceLoader
    • Импорт по расписанию
    • Интерактивный .xls прайс с корзиной
    • Пакетная загрузка фото
    • Пакетное редактирование базы
    • Бекап и очистка базы
  • 🌟Синхронизация Pro
    • 🟠1С
      • Версии и конфигурации 1С
      • Встроенный типовой обмен CommerceML (для новых версий 1С)
      • Тестирование связи с 1С на демо-версии
      • Установка и активация внешнего обработчика 1С (для старых версий 1С)
      • Инструкции по внешнему обработчику 1С (для старых версий 1С)
      • Видео-уроки по внешнему обработчику 1С (для старых версий 1С)
      • Дополнительные обработчики (для старых версий 1С)
        • Редактор описаний в 1С
        • Импорт прайс-листов в 1С
        • Загрузка изображений в 1С
    • 🔵МойСклад
    • 🔵OZON
    • 🟣Wildberries
    • 🟢Мегамаркет
    • ⚫Яндекс.Маркет
    • 🟢Avito
    • 🔵Вконтакте
  • ⤴️Выгрузка товаров
    • Яндекс и Google
  • 📦Товары
    • Ручное добавление каталогов, товаров
    • Работа с изображениями
    • Характеристики, фильтры
    • Подтипы
    • Мультисклад
    • Витрины
    • Поиск
  • 📈Заказы
    • Работа с заказами
    • Способы оплаты
      • Наличная оплата
      • Счет в банк
      • Платежные системы
      • Скидки от вида оплаты
    • Настройка доставок
    • Telegram, VK, SMS, PUSH
    • Ценообразование
  • 🌟Бесплатные модули
    • 100+ бесплатных модулей:
    • ⭐Pro модули
    • Дизайн
      • Stiker - стикер
      • Кнопки
      • Count Cat
      • Filemanager
      • Пакетная обработка фото на сервере (Генератор превью картинок)
      • Mobile
      • Панорама 360°
      • Snow
    • SEO
      • SeoUrl
      • Seo Meta Новости
      • Карта сайта SiteMap
      • Карта сайта SiteMap Pro
    • Доставки
      • Почта России
      • Saferoute Widget
      • Boxberry Widget
      • Яндекс Доставка
      • CDEK Widget
      • Калькулятор доставки
      • Нова пошта
      • Бланки Почты России
      • Виджет доставок
    • Чаты и звонки
      • Cleversite
      • Мультиязычность Google Translate
      • Envybox
      • JivoSite
      • Pozvonim
      • Обратный звонок
      • Verbox
    • CRM
      • МойСклад
      • 📊Bitrix24
      • 📈retailCRM
      • 🔊Рекламные кампании
      • Unisender
    • Маркетплейсы
      • 🟣WB Partners
      • 🔵OZON Seller
      • ⚫Яндекс.Маркет
      • 🟢Мегамаркет
      • 🟢Авито
      • 🔵VK
      • Модуль Маркетплейсы: Яндекс.Маркет, СберМегаМаркет AliExpress, Google Merchant
    • Платежные системы
      • Банки
        • Альфа-банк
        • ВТБ
        • Банк Авангард
        • МодульБанк
        • Т-Банк
      • Кассы
        • Онлайн касса Атол
        • Печка54
        • CloudKassir
        • Robokassa
        • Модулькасса
      • Платежные системы агрегаторы
        • ЮKassa
        • ЮMoney
        • IntellectMoney
        • Mandarin
        • 2can&ibox
        • NovaPay
        • AcquiroPay
        • Idram
        • Assist
        • CloudPayments
        • Easypay
        • PayKeeper
        • Fondy
        • LiqPay
        • PayOnline
        • PayPal
        • Uniteller
      • Платежные шлюзы
        • PayAnyWay (Монета) платежный шлюз
        • PayMaster
        • Interkassa
        • Platron
        • Webmoney
        • Счет в банк
    • Кредитование
      • Купи в рассрочку Долями
      • Покупка в кредит от Alfabank Credit
      • Купить в кредит Почта Банк
      • Купи в кредит Т-Банк
    • Яндекс
      • Яндекс.Маркет
      • Яндекс.Карта
    • Продажи
      • Подарок - товар с 0₽ в корзине
      • Оптовые акции - скидки от количества товара в заказе
      • Хиты продаж
      • Свойства товаров
      • Комплектующие
      • Заказ в 1 клик
      • Sort Selection - сквозной фильтр на главной
      • Товар дня
      • Группы товаров - продажа комплектов
      • Промокоды
      • Услуги сборки, монтажа в карточке товара
      • Product Similar похожие товары по характеристикам
      • Product List похожие товары из каталога
      • Product Last View - просмотренные товары
      • Sort Brand - подборки по характеристикам
      • Sort Product - товары по характеристикам
      • Visual Cart - брошенные корзины
      • Партнерская программа
    • Разработчикам
      • Умный поиск
      • Adm Log
      • WebHooks
      • Form Generator
      • История заказов
      • GeoIP
      • Замок
      • Product Option
      • Debug
      • Задачи
      • Защитник файлов Guard
  • 👫Пользователи
    • Покупатели
    • Статусы и скидки
    • Бонусы
    • Авторизация и регистрация
  • 👤Администраторы
    • Администраторы
    • Восстановление пароля
    • Журнал авторизации
  • 🎯Маркетинг
    • Канбан доска
    • Промоакции
    • Почтовые рассылки
    • Баннеры и pop-up
  • 💻Веб-сайт
    • Страницы
    • Отзывы
    • Новости
    • Пиксель, счетчики
  • ⚒️Настройки
    • Основные настройки
    • Реквизиты
    • Обмен данными
    • SEO настройки
    • Валюты
    • Изображения
    • Витрины
    • Склады
    • Диалоги и чаты
    • Интеграция с сервисами
    • Быстродействие (кеширование)
    • Интеграция с Yandex Cloud
    • Локализация
    • Обслуживание
  • 🎨Дизайн
    • Настройка шаблона
    • HTML Верстальщику
    • 🔦Шпаргалка по шаблонам
  • 👨‍💻API
    • PHP API
    • JSON API
    • Создание модулей - правка API через файлы модулей
    • Создание хуков - правка API через функции
    • Создание дизайн-хуков - правка API через файлы дизайна
    • База дизайн-хуков
      • Характеристики и новости
      • Заказы и личный кабинет
      • Каталоги и прайс-лист
      • Поиск и товары
      • Корзина и элементы
    • Создание 1С-хуков
      • API синхронизации интернет-магазина с 1С
      • Изменение API синхронизации с 1С
  • EasyControl
    • Установка
    • PriceLoader
    • Monitor
    • Updater
Powered by GitBook
On this page
  • Авторизация
  • Запросы
  • Примеры
  • Передача нескольких запросов
  • Выборка данных метод select
  • Обновление данных метод update
  • Удаление данных метод delete
  • Вставка данных метод insert
  • Создание нового заказа
  • Отправка почтового сообщения
  • Использование

Was this helpful?

  1. API

JSON API

Last updated 6 months ago

Was this helpful?

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));
// Массив передаваемых данных
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);
        }
 });
// Массив передаваемых данных
Запись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, Истина);
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] => 
        )

)

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

$properties = [
    'from' => 'products',
    'method' => 'select',
    'vars' => 'id,name,price',
    'where' => 'id=100',
    'order' => '',
    'limit' => '1'
];
select id,name,price from phpshop_products where id="100" limit 1
{
    "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'
];
update phpshop_products set name="New Name 1", price="1000" where id="147" limit 1
update phpshop_products set name="New Name 2", price="1000" where id="148" limit 1
{
  "from":"products",
  "method":"update",
  "vars":{"price":"1000","name":"New name"},
  "where":"id=147",
  "order":"",
  "limit":"1"
},
{
  "from":"products",
  "method":"update",
  "vars":{"price":"1000","name":"New name"},
  "where":"id=148",
  "order":"",
  "limit":"1"
}
Array
(
    [0] => Array
    (
      [status] => succes
    )
    [1] => Array
    (
      [status] => succes
    )
)

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

$properties = [
    'from' => 'orders',
    'method' => 'select',
    'vars' => '*',
    'where' => '',
    'order' => 'id desc',
    'limit' => '1'
];
select * from phpshop_orders order by id desc limit 1
{
    "from":"orders",
    "method":"select",
    "vars":"*",
    "where":"",
    "order":"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

$properties = [
  'from' => 'products',
  'method' => 'update',
  'vars' => ['price'=>1000,'name'=>'New name'],
  'where' => 'id=147',
  'order' => '',
  'limit' => '1'
];
update phpshop_products set name="New Name", price="1000" where id="147" limit 1
{
  "from":"products",
  "method":"update",
  "vars":{"price":"1000","name":"New name"},
  "where":"id=147",
  "order":"",
  "limit":"1"
}
Array
(
    [status] => succes
)

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

$properties = [
  'from' => 'products',
  'method' => 'delete',
  'vars' => '',
  'where' => 'id=142',
  'order' => '',
  'limit' => '1'
];
delete from phpshop_products where id="142" limit 1
{
  "from":"products",
  "method":"delete",
  "vars":"",
  "where":"id=142",
  "order":"",
  "limit":"1"
}
Array
(
    [status] => succes
)

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

$properties = [
  'from' => 'products',
  'method' => 'insert',
  'vars' => ['price'=>1000,'name'=>'New name'],
  'where' => '',
  'order' => '',
  'limit' => ''
];
insert into phpshop_products set name="New name", price="1000"
{
  "from":"products",
  "method":"insert",
  "vars":{"price":"1000","name":"New name"},
  "where":"",
  "order":"",
  "limit":""
}
Array
(
    [status] => succes
)

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

Для упрощения создания нового заказа создан готовый веб-хук (используется группа JSON запросов) по адресу https://shopname.ru/base-xml-manager/json/add-order.php

Для создания заказа передается массив, состоящих из артикулов и количества товара в заказе. Для авторизации используется почта и пароль покупателя магазина. После запроса в базе магазина будет создан новый заказа со всеми персональными данными покупателя и отправлены оповещения на почту покупателя и администратору как при ручном заказе через сайт.

Включение веб-хука

// Включение
$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);
Array
(
    [status] => succes,
    [order] => 1245-10
)

Коды ошибок

  • Status: 503 Service Temporarily Unavailable - веб-хук не включен

  • User login error - неверно указан логин и пароль покупателя

  • No items - товар не найден

  • Token not found - указан неверный API токен

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

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

Array
(
    [status] => succes
)

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

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

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

Для включения возможности принятия заказов следует 10 строкой в этом файле веб-хука заменить значение $enabled=false; на $enabled=true; и указать , под чьими правами будут создаваться заказы.

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

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

.

👨‍💻
Интерактивный прайс-лист
Монитор
Синхронизация с 1С
токен авторизации