КАТАЛОГ
Всего товаров16285
Товаров в наличии8336
Новинки за 30 дней103
Состояние на22.07.2019 10:53
ОПТОВЫЕ поставки продукции +7 (499) 348-22-85
В розницу купить у наших друзей +7 (930) 357-13-06

Работа с API

Идентификатор и ключ необходимые для работы с АПИ доступны на данной странице только для зарегистрированных пользователей

Назначение

Данный API предназначен для автоматизированного получения информации из каталога магазина непосредственно из Вашего программного обеспечения или Вашего сайта. Для реализации функционала на стороне Ваших ПО или сайта обратитесь к разработчикам и предоставьте им данную документацию.

Как выполнять запросы

Для обращения к API, неободимо выполнять запросы методом POST к https://optfm.ru/api/. Формат ответа JSON. Кодировка UTF-8, а в случае запроса изображений - запрашиваемый файл.

Request URL: https://optfm.ru/api/
Request Method: POST

Form Data
auth_id: Идентификатор
auth_key: Ключ
method: catalog.getSectionList
limit: 500
page: 0

Ответ приходит в формате JSON.
В случае ошибки результат будет примерно таким:

{
	"status":0, 
	"error":{ 
		"error_msg":"Текст ошибки", 
		"error_code":"Код ошибки", 
		"error_more":[] 
	} 
}

В случае успешного запроса результат будет примерно таким:
{
	"status":1,
	"response":{
		"count_all" : 2035, 
		"count" : 500, 
		"items" : [ 
			{ "name":"Название", ... }, 
			... 
		] 
	}
}

Доступные методы

Получение разделов

Пример работы с API приведен ниже

method : catalog.getSectionList

Используемые поля

auth_id
обязательно
Идентификатор доступа к API
auth_key
обязательно
Ключ доступа к API
page
не обязательно
Максимально 1000. Отсортировано в древовидном порядке, сначало раздел 1 уровня, далее если есть - вложенный раздел (2 уровень) и тп, иначе следующий раздел 1 уровня.
По умолчанию: 500
offset
не обязательно
Отступ в выборке, если значений больше чем ограничение на количество возвращаемых результатов
По умолчанию: 0
section_id
не обязательно
Используется если нужно получить значения одного конкретного раздела
include_subsection
не обязательно
Указывает возвращать товары из подкатегорий (1) или нет (0)
По умолчанию: 0

В ответе описание разедлов состоит из следующих полей

id Идентификатор раздела в базе Fashion Mobile
parent_id Идентификатор родительского раздела. 0 - корневой
name Наименование раздела
depth_level Уровень вложенности

Получение товаров

Метод возвращает товары, которые есть в наличии

Пример работы с API приведен ниже

method : catalog.getElementList

Используемые поля

auth_id
обязательно
Идентификатор доступа к API
auth_key
обязательно
Ключ доступа к API
limit
не обязательно
Максимально 1000.
По умолчанию: 500
page
не обязательно
Страница выборки, например лимит 500 элементов, при указании 1 вернутся с 1 по 500 элемент, при указании 2 вернутся с 501 по 1000 элемент
По умолчанию: 1
section_id
не обязательно
Используется если нужно получить товары конкретного раздела
include_subsection
не обязательно
Указывает возвращать товары из подкатегорий (1) или нет (0)
По умолчанию: 0
full_url
не обязательно
Указывает возврщать полные URL (1) или относительные (0)
По умолчанию: 0
no_image
не обязательно
Указывает, что не надо возвращать ссылку на изображение (1) или нет (0). Передача ссылки на изображение в ответ на данную команду это устаревший подход. Использование параметра позволяет ускорить получение данных, т.к. не происходит подготовка изображения
По умолчанию: 0

В ответе описание товаров состоит из следующих полей

id Идентификатор товара в базе Fashion Mobile
section_id Идентификатор раздела
name Наименование товара
picture Ссылка на изображение товра. Ссылка может изменяться в течении времени - рекомендуем для получения изображения использовать метод АПИ catalog.getImage
preview_text Короткое описание товара
detail_text Детальное описание товара
article Артикул
barcode Штрихкод
prices Массив цен. Каждый элемент имеет следующие поля:
id Идентификатор типа цены
name Наименование типа цены
currency Код валюты
price Цена

Получение изображений

Метод позволяетскачивать текущее изображение товара. Обратите внимаени, что ссылка на изображение возвращаемая в методе catalog.getElementList не является постоянной. Для надежного получения изображений рекомендуется использовать данный метод

В случае отсутствия изображения на запрос возвращается изображение, иначе информация об ошибке в формате json.

Пример получения изображения приведен ниже

method : catalog.getImage

Используемые поля

auth_id
обязательно
Идентификатор доступа к API
auth_key
обязательно
Ключ доступа к API
element_id
обязательно
id товара возвращаемое в методе catalog.getElementList

Пример скрипта получения информации

Приведенный ниже код является минимально необходимым для демонстрации работы с API. В рабочем варианте настоятельно рекомендуем обрабтывать ошибки и различные сценарии событий.

<?php
$curl = curl_init(); 
$arParams = array( 
	'auth_id' => '<ваш_идентификатор>',
	'auth_key' => '<ваш_ключ>', 
	'method' => 'catalog.getElementList', 
	'limit' => 10, 
	'page' => 1 
); 
curl_setopt($curl, CURLOPT_URL, 'https://optfm.ru/api/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $arParams);
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

$answer = curl_exec($curl); 
curl_close($curl); 
$arResult = json_decode($answer,true);
foreach($arResult['response']['items'] as $arItem){ 
	// обработка полученных данных по конкретному товару
}

Пример скрипта получения изображений

<?php
$arParams = array(
	'auth_id' => '<ваш_идентификатор>',
	'auth_key' => '<ваш_ключ>',
	'method' => 'catalog.getImage',
	'element_id' => 63005, // изображение для товара с id=63005
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://optfm.ru/api/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $arParams);
curl_setopt($curl,CURLOPT_HEADER,true);
$answer = curl_exec($curl);
curl_close($curl);

$arAnswer = parseAnswer($answer);
if ($arAnswer['TYPE'] == 'error') {
	echo 'Ошибка формата';
} elseif ($arAnswer['TYPE'] == 'application/json; charset=utf-8') {
 	print_r(json_decode($arAnswer['CONTENT'], true));
} else {
	file_put_contents($arAnswer['FILENAME'], $arAnswer['CONTENT']);
	echo 'Файл сохранен с именем ' . $arAnswer['FILENAME'];
}

function parseAnswer($data) {
	$arResult = ['TYPE' => 'error', 'FILENAME' => '', 'CONTENT' => ''];
	$data = preg_replace("#^.*HTTP/1.1 200 OK[\r\n]+#is",'',$data);
	$arMatches = [];
	preg_match("/Content-Type: ([^\r\n]+)/", $data,$arMatches);
	if (count($arMatches) == 2){
		$arResult['TYPE'] = $arMatches[1];
		$arResult['CONTENT'] = preg_replace("/^.*\r?\n\r?\n/Uis",'' ,$data);
		if ($arResult['TYPE'] != 'application/json; charset=utf-8') {
			preg_match("/Content-Disposition: attachment; filename=([^\r\n]+)/", $data,$arMatches);
			if (count($arMatches) == 2){
				$arResult['FILENAME'] = $arMatches[1];
			} else {
				$arResult['type']='error';
			}
		}
	}
	return $arResult;
}
		

Пример скрипта получения изображений Bitrix CMS

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
$arParams = array(
	'auth_id' => '<ваш_идентификатор>',
	'auth_key' => '<ваш_ключ>',
	'method' => 'catalog.getImage',
	'element_id' => 63005, // изображение для товара с id=63005
);

$oHttp = new \Bitrix\Main\Web\HttpClient();
$oHttp->post('https://optfm.ru/api/', $arParams);
$arHeaders = $oHttp->getHeaders();
$contentType = $arHeaders->get('content-type');
if ($contentType == 'application/json; charset=utf-8') {
	print_r(json_decode($oHttp->getResult(),true));
} else {
	$name = $arHeaders->get('content-disposition');
	$fileName = '';
	if ($name != '') {
		$arMatches = [];
		preg_match("#filename=(.*)$#", $name, $arMatches);
		if (count($arMatches) == 2) {
			file_put_contents($arMatches[1], $oHttp->getResult());
			$fileName = $arMatches[1];
		}
	}
	echo ($fileName != '') ? 'Файл сохранен с именем ' . $fileName : 'Ошибка загрузки';
}