Работа с API
Идентификатор и ключ необходимые для работы с АПИ доступны на данной странице только для зарегистрированных пользователей
Работа с 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 приведен ниже
Используемые поля
По умолчанию: 500
По умолчанию: 0
По умолчанию: 0
В ответе описание разедлов состоит из следующих полей
id | Идентификатор раздела в базе Fashion Mobile | |
---|---|---|
parent_id | Идентификатор родительского раздела. 0 - корневой | |
name | Наименование раздела | |
depth_level | Уровень вложенности |
Получение товаров
Метод возвращает товары, которые есть в наличии
Пример работы с API приведен ниже
Используемые поля
По умолчанию: 500
По умолчанию: 1
По умолчанию: 0
По умолчанию: 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.
Пример получения изображения приведен ниже
Используемые поля
Пример скрипта получения информации
Приведенный ниже код является минимально необходимым для демонстрации работы с 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 : 'Ошибка загрузки'; }