Шаблон API для работы с товарами

Изменено Wed, 15 Jun 2022 на 09:21 AM

Все примеры запросов в этой инструкции в формате Php для использования методом cURL в PHP


Запросы к сервису можно отправлять и методом HTTP (например Postman), в этом случае запросы должны быть в формате JSON.  


Используем метод POST

1. Сначала проходим Авторизацию, где: 

  curl_setopt => Устанавливает параметр для сеанса CURL

  ch => Дескриптор cURL, полученный из curl_init()

  option => Устанавливаемый параметр CURLOPT_XXX

  value => Значение параметра option

  URL: https://cdek.orderadmin.ru/api/products/offer

  Content type: application/json

При этом заголовок Accept необходимо сохранить

Информацию о ваших API ключах можете найти здесь.

$username = 'public key';   // ваш открытый ключ
$password = 'secret key';   // ваш закрытый ключ
$url = 'https://cdek.orderadmin.ru/api/раздел/подраздел?';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(   
    'Accept: application/json',
    'Content-Type: application/json')                                                           
);
PHP



2. Пример запроса с данными товара в виде массива:

$post_data = [
  'state' => 'normal',             // Состояние предложения
  'type' => 'simple',              // Тип предложения - simple(обычный), обязательный параметр
  'group-type' => '',              //
  'shop' => '34330',             // Магазин, обязательный параметр
  'name' => 'TEST2',           // Название, обязательный параметр
  'article' => '001663',          // Артикул предложения
  'extId' => '2-3',                  // Внешний ID предложения, обязательный параметр
  'image' => '',                   //  Изображение должно быть в http:// формате
  'sku' => '',                        // Идентификатор товарной позиции, учетная единица, складской номер
  'purchasingPrice' => '',                  // Закупочная цена
  'price' => '100',                       // Цена
  'weight' => '',                         //  Вес в граммах
  'dimensions' =>               // Габариты
  [
    'x' => '0',                      //  Ширина в мм
    'y' => '0',                      //  Длина в мм
    'z' => '0',                      //  Глубина в мм
  ],
]
PHP



3. С параметром CURLOPT_POSTFIELDS загружаем данные нашего товара $post_data:

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);
curl_close($ch);  
echo($result);
PHP



4. В ответ получаем:

- или ошибку

  'type' => 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html',
  'title' => 'Internal Server Error',
  'status' => 500,
  'detail' => 'Input errors: array (
  \'extId\' => 
  array (
    \'isEmpty\' => \'Value is required and can\\\'t be empty\',
PHP


- или данные созданного товара

[
  'id' => '146134',
  'article' => '001663',
  'name' => 'TEST2',
  'type' => 'simple',
  'image' => NULL,
  'barcodes' => 
  [
  ],
  'sku' => NULL,
  'dimensions' => 
  [
    'x' => '0',
    'y' => '0',
    'z' => '0',
  ],
  'weight' => NULL,
  'purchasingPrice' => 0,
  'price' => 100,
  'state' => 'normal',
  'created' => 
  [
    'date' => '2019-06-20 13:39:34.046106',
    'timezone_type' => 3,
    'timezone' => 'UTC',
  ],
  'updated' => 
  [
    'date' => '2019-06-20 13:39:34.046109',
    'timezone_type' => 3,
    'timezone' => 'UTC',
  ],
  'extId' => '2-3',
  'eav' => 
  [
  ],
  'parent' => NULL,
  'supplier' => NULL,
  'currency' => NULL,
  '_embedded' => 
  [
    'shop' => 
    [
      'name' => 'тестМагазинПресташоп',
      'expirationDate' => NULL,
      'id' => 34330,
      'state' => 'active',
      'created' => 
      [
        'date' => '2019-02-13 17:48:10.000000',
        'timezone_type' => 1,
        'timezone' => '+03:00',
      ],
      'updated' => 
      [
        'date' => '2019-06-20 16:27:34.000000',
        'timezone_type' => 1,
        'timezone' => '+03:00',
      ],
      'eav' => 
      [
        'shops-default-country' => '25',
        'shops-default-warehouse' => '31',
      ],
      '_embedded' => 
      [
        'owner' => 
        [
          'domain' => NULL,
          'username' => NULL,
          'email' => 'testPrestashop@test.com',
          'name' => 'testPrestashop',
          'allowedAdapters' => 
          [
            0 => '5',
          ],
          'created' => 
          [
            'date' => '2019-02-13 16:35:35.000000',
            'timezone_type' => 1,
            'timezone' => '+03:00',
          ],
          'expirationDate' => NULL,
          'id' => 3620,
          'state' => 'active',
          'updated' => 
          [
            'date' => '2019-06-12 09:46:14.000000',
            'timezone_type' => 1,
            'timezone' => '+03:00',
          ],
          'eav' => 
          [
          ],
          'client' => NULL,
          'accessToken' => NULL,
          'authorizationCode' => NULL,
          'refreshToken' => NULL,
          'parent' => NULL,
          'roles' => 
          [
          ],
          '_links' => 
          [
            'self' => 
            [
              'href' => 'http://panel.orderadmin.ru/api/users/users/3620',
            ],
          ],
        ],
      ],
      '_links' => 
      [
        'self' => 
        [
          'href' => 'http://panel.orderadmin.ru/api/products/shops/34330',
        ],
      ],
    ],
  ],
  '_links' => 
  [
    'self' => 
    [
      'href' => 'http://panel.orderadmin.ru/api/products/offer/146134',
    ],
  ],
]
PHP




Выше описано как добавлять простые товары для Вашего магазина. Еще Orderadmin предлагает и более сложные товары, это:


- configurable - конфигурируемые товары, 

- grouped - сгруппированные товары - это группы товаров, в котором клиент получает право выбрать атрибут(ы) товара, такие как цвет, размер или материал. Процесс создания сгруппированного товара такой же, как и для простого товара.

- virtual - виртуальные товары

- bundle - 


Поддержка     |     VK     |     Telegram     |     Сайт     |     Оцените нашу работу


Статья помогла?

Отлично!

Спасибо за ваш отзыв

Извините, что не удалось помочь!

Спасибо за ваш отзыв

Расскажите, как мы можем улучшить эту статью!

Выберите хотя бы одну причину
Требуется проверка CAPTCHA.

Комментарий отправлен

Мы ценим вашу помощь и постараемся исправить статью