Интеграция с OrderAdmin
API v0.5
Загрузка в базу OrderAdmin заявки на доставку
Получение трек-номеров и/или тарифов
Получение подробного трекинга заказа
Получение всех начислений по заказу
(включая информацию о получении наложенного платежа).
Размещение калькулятора в виде JS
Загрузка новой номенклатуры в систему
Полная инструкция по API находится по адресу:
https://panel.orderadmin.ru/apigility/swagger
ВНИМАНИЕ: требуется предварительная авторизация!
Попасть в справочник функций API можно из меню:
ЛЮБОЙ функционал в OrderAdmin имеет соответствующий метод в API.
Для работы с системой через API потребуется создать ключи доступа.
Для этого выберите в меню, находящимся в правом верхнем углу экрана раздел “API доступ”:
Перейдя на страницу можно получить данные для подключения по API:
Чтобы получить секретный ключ, щелкните по 3-м точкам:
Если данных еще нет, то нажмите кнопку “Сгенерировать ключи доступа” и ключи будут сгенерированы.
В API есть несколько методов для работы с данными:
| |
| |
PATCH |
|
|
Для того чтобы начать работать с системой OrderAdmin необходимо авторизоваться. Сделать это нужно с помощью полученных выше ключей.
Подробное описание авторизации находится здесь:
https://orderadmin.freshdesk.com/a/solutions/articles/35000099409
Сделать это нужно отправив в заголовке запроса полученные вами ключи:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept: application/json',
));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $type);
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->getRequest());
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $this->user . ":" . $this->secret);
Готовую библиотеку на PHP, для работы с OrderAdmin можно скачать по ссылке:
https://www.reworker.ru/download/oa_lib_php.zip
Пример авторизации на языке PHP (с помощью указанной выше библиотеки):
<?php
$publicKey = '{Ключ из ЛК}';
$secret = '{Секретный ключ из ЛК}';
$orderadmin = new OrderadminAPI('https://panel.orderadmin.ru/', $publicKey, $secret);
...
?>
Механизм фильтрации является универсальным и работает одинаково во всех методах API OrderAdmin.
Подробное описание процесса фильтрации можно найти по ссылке:
https://orderadmin.freshdesk.com/a/solutions/articles/35000097975
Пример на PHP:
Получаем конкретную заявку на доставку по ее трек-номеру:
<?php
$criteria = array(
'filter' => array (
array (
'type' => 'eq',
'field' => 'trackingNumber',
'value' => $trackingNumber,
),
),
);
$res_json = $orderadmin->setRequest()->request('GET', '/api/delivery-services/requests?' . http_build_query($criteria))->getResult();
$oa_order_id = $res_json['_embedded']['delivery_requests'][0]['id'];
?>
Загрузка заказа в систему OrderAdmin происходит с помощью метода /delivery-services/requests:
http://panel.orderadmin.ru/apigility/swagger/Orderadmin%5CDeliveryServices%5CApi-v1
Наиболее актуальная информация по созданию заявки на доставку находится по адресу:
https://orderadmin.freshdesk.com/a/solutions/articles/35000104366
При выгрузке нужно передать данные для отправки заказа (адрес, ID службы доставки, ID тарифа, стоимость и т.д.).
Данные передаются в формате JSON. Полный список данных можно получить в инструкции:
Подробнее о полях:
extId - внешний ID заказа (клиента), должен быть уникальным в рамках одного отправителя;
outExtId - ID заказа в системе клиента.
deliveryService - ID курьерской службы, доступные курьерские службы можно получить методом: http://panel.orderadmin.ru/api/swagger#!/delivery-services/findDeliveryServices
payment - сумма, которую необходимо взять с получателя
estimatedCost - оценочная стоимость
weight - если есть, ориентировочный вес отправления
Секция rate
id - ID тарифа (если конкретный тариф не указан, отправка будет произведена по тарифу по умолчанию для службы или по наиболее выгодному тарифу).
Поле rate задает службу доставки и тариф по которому будет производиться отправка заказа. Вот неполный список значений rate:
Служба доставки | Тариф | Значение rate |
Почта России | посылка онлайн (если указан этот тариф, но посылка не проходит по параметрам или адресу, то тариф автоматически изменится на 17). | 2 |
Почта России | ценная посылка | 17 |
Почта России | 1-й класс | 141 |
Boxberry | Доставка курьером до двери | 62 |
Boxberry | Доставка в ПВЗ | 61 |
PickPoint | Оптимальный | 65 |
Максипост | Доставка курьером до двери | 63 |
СДЭК | Посылка склад-склад | 48 |
СДЭК | Посылка склад-дверь | 49 |
DPD | DPD CLASSIC Parcel | 12 |
Курьерист | Курьерская доставка Курьерист | 67 |
Курьерист | Курьерская доставка Курьерист (на следующий день) | 68 |
ВНИМАНИЕ:
Секция from
sender - идентификатор отправителя, заведенный в личном кабинете в разделе “Отправители”: http://panel.orderadmin.ru/delivery-services/requests/senders/
country - страна доставки (для России 28).
senderProfile - профиль отправителя. Именно в настройках в sender и profile хранятся все настройки вашего аккаунта, включая и данные для интеграции со службами доставок.
Посмотреть все свои профили вы можете по ссылке:
http://panel.orderadmin.ru/clients/profiles/
Секция to
servicePoint - в данной переменной можно указать идентификатор ПВЗ (в случае доставки до ПВЗ), список ПВЗ можно получить методом:
http://panel.orderadmin.ru/api/swagger#!/delivery-services/findDeliveryServicesPoints
recipientName - имя получателя
recipientPhone - телефон получателя
Секция to,
подсекция recipient,
extId - идентификатор в вашей базе данных (если завести с идентификатором, можно не передавать каждый раз остальные параметры)
name - имя получателя
middlename - отчество получателя
surname - фамилия получателя
type - физическое или юридическое лицо
phone - телефон получателя
email - электронная почта получателя
подсекция address
postcode - почтовый индекс
locality -> country -> id - идентификатор страны (28 - для России), страны можно получить методом: http://panel.orderadmin.ru/api/swagger#!/locations/findCountries
streetPrefix - префикс улицы
street - название улицы
house - дом
block - корпус
apartment - номер квартиры
notFormal - можно передать неформализованный адрес (если он так хранится в вашей БД)
Загрузка мест и товаров:
Секция places - с помощью данной секции передается количество мест в заказе и список товаров.
extId - номер места (если место одно то параметр можно не указывать)
подсекция items - список товаров
extId - ID товара в системе клиента
name - Название товара
count - количество товара
estimatedCost - оценочная стоимость товара
payment - сумма наложенного платежа товара
weight - вес
В качестве ответа будет получен JSON с информацией о добавленном заказе.
Минимальный запрос для создания заявки на доставку:
{
}
Пример загрузки заказа в базу OrderAdmin:
<?php
…
$publicKey = '{Ключ из ЛК}';
$secret = '{Секретный ключ из ЛК}';
$orderadmin = new OrderadminAPI('https://panel.orderadmin.ru/', $publicKey, $secret);
$res = $orderadmin->setRequest(array(
"deliveryService" => array(
"id" => 9, // ID службы доставки, которой отправится данный заказ
),
"rate" => array(
"id" => 2, // ID тарифа (если конкретный тариф не указан, отправка
// будет произведена по тарифу по умолчанию для службы или
// по наиболее выгодному тарифу).
),
"places" => array(
"extId" => 1, // Место, в случае если вы передаете несколько мест
"items" => array (
"extId" => 1234, // ID товара
"name" => "Товар номер 1", // Название товара
"count" => 2, // Кол-во товаров
"estimatedCost" => 500, // Оценочная стоимость
"payment" => 500, // Наложенный платеж
"weight" => 230, // Вес (в граммах)
),
),
"estimatedCost" => 500, // Оценочная стоимость
"payment" => 0, // Наложка
"price" => 149, // Стоимость доставки (рассчитана)
"pickupDate" => "2015-12-11", // Дата отправки
"from" => array(
"sender" => 1, // идентификатор отправителя, заведенный в личном
// кабинете в разделе "Отправители"
"country" => 28,
),
"deliveryDate" => "2015-12-11", // Дата доставки
"to" => array(
"recipient" => array (
"name" => "", // Имя
"surname" => "", // Фамилия
"type" => "physical", // Физическое / юридическое лицо
"phone" => "+7 (999) 000-00-00", // Телефон
"email" => "", // e-mail
"locality" => array (
"postcode" => "", // индекс
),
"address" => array (
"postcode" => '', // индекс
"country" => array (
"id" => 28, // ID страны
),
"streetPrefix" => "пр.", // Префикс улицы
"street" => "Гражданский", // Улица
"house" => "", // Дом
"block" => "", // строение
"apartment" => "", // Квартира
"notFormal" => "", // Полный адрес
),
),
"comment" => "", // Комментарий к заказу
),
"weight" => 0, // Вес
"width" => 0, // Ширина
"height" => 0, // Глубина
"length" => 0, // Длина
))->request('POST', '/api/delivery-services/requests')->getResult();
…
?>
//Преобразование числа в 16ричную систему счисления
&НаСервере
Функция DecToHex(Знач _Число)
База = 16;
Результат = "";
Если _Число = 0 Тогда
Результат = "0";
КонецЕсли;
Пока _Число <> 0 Цикл
Поз =_Число % База;
Результат = Сред("0123456789ABCDEF", Поз + 1, 1) + Результат;
_Число = Цел(_Число / База);
КонецЦикла;
Возврат Результат;
КонецФункции // DecToHex()
&НаСервере
Функция ХэшированиеСтроки(Строка, СекретныйКлюч) Экспорт
Текст = Новый COMОбъект("System.Text.UTF8Encoding");
Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA1");
Криптография.Key = Текст.GetBytes_4(СекретныйКлюч);
ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Строка)).Выгрузить();
Хеш = "";
Для Каждого Байт Из ХешБайт Цикл
Нех = DecToHex(Байт);
Хеш = Хеш + ?(СтрДлина(Нех)=1,"0","")+Нех;
КонецЦикла;
Возврат НРег(Хеш);
КонецФункции
&НаСервере
Процедура ВыгрузитьЗаказНаСервере(ДокументСсылка) Экспорт
Соединение = Неопределено;
ПараметрыПодключения = Новый Структура;
ПараметрыПодключения.Вставить("Сервер", "panel.orderadmin.ru");
ПараметрыПодключения.Вставить("Порт", 80);
ПараметрыПодключения.Вставить("Пользователь", ""); //Не надо ничего указывать
ПараметрыПодключения.Вставить("Пароль", "");
ПараметрыПодключения.Вставить("Прокси", Неопределено);
ПараметрыПодключения.Вставить("ЗащищенноеСоединение", Ложь);
ПараметрыПодключения.Вставить("АдресСкрипта", "http://panel.orderadmin.ru");
ТелоЗапроса_JSON = ПолучитьДанныеЗаказаДляСайта(ДокументСсылка);
ВыгрузкаДокумента(Соединение, ПараметрыПодключения, ТелоЗапроса_JSON);
КонецПроцедуры
&НаСервере
Функция ПолучитьСоединениеССервером(ПараметрыПодключения) Экспорт
Соединение = НеОпределено;
Попытка
СисИнфо = Новый СистемнаяИнформация;
Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СисИнфо.ВерсияПриложения, "8.3.3.721") < 0 тогда //функция БСП
Выполнить("Соединение = Новый HTTPСоединение(ПараметрыПодключения.Сервер, ПараметрыПодключения.Порт, ПараметрыПодключения.Пользователь, ПараметрыПодключения.Пароль, ПараметрыПодключения.Прокси, ПараметрыПодключения.ЗащищенноеСоединение)");
Иначе
Выполнить("Если НЕ ПараметрыПодключения.ЗащищенноеСоединение тогда
| ssl = Неопределено;
|Иначе
|
| ssl = Новый ЗащищенноеСоединениеOpenSSL(
| Неопределено,
| Неопределено);
|КонецЕсли;
|Соединение = Новый HTTPСоединение(ПараметрыПодключения.Сервер, ПараметрыПодключения.Порт, ПараметрыПодключения.Пользователь, ПараметрыПодключения.Пароль, ПараметрыПодключения.Прокси, ,ssl)");
КонецЕсли;
Исключение
Сообщить(" Не удалось установить соединение с сервером. Проверьте правильность адреса сервера, порт, имя пользователя и пароль.");
Соединение = Неопределено;
Конецпопытки;
Возврат Соединение;
КонецФункции
&НаСервере
Функция ВыгрузкаДокументаНаСайт(Соединение, ПараметрыПодключения, ТелоЗапроса_JSON)
Перем secret:
Перем publicKey;
Соединение = ПолучитьСоединениеССервером(ПараметрыПодключения);
ПараметрыПодключения
secret_key = ХэшированиеСтроки(Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd"), secret); //хэширование sha1
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "OAD "+publicKey+":"+secret_key);
Заголовки.Вставить("Accept", "application/json");
Заголовки.Вставить("Content-Type", "application/json");
АдресЗапроса = "/delivery-services/request";
ОтветСервера = ПолучитьДанныеССервера(Соединение, "/api/rest/latest"+АдресЗапроса, Заголовки, Истина, ТелоЗапроса_JSON);
Если ОтветСервера = Неопределено Тогда
Сообщить("Авторизация не выполнена. Ответ с сервера не пришел.");
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Функция ПолучитьДанныеССервера(Соединение, АдресРесурса, Заголовки = "", ЗапросPost = Ложь, ТелоЗапроса = "") Экспорт
ОтветСервера = НеОпределено;
Попытка
ЗапросHTTP = Новый HTTPЗапрос;
ЗапросHTTP.АдресРесурса = АдресРесурса; // например: "/api/rest/latest/delivery-services/request"
Для Каждого ТекЗаголовокHTTP Из Заголовки Цикл
ЗапросHTTP.Заголовки.Вставить(ТекЗаголовокHTTP.Ключ, ТекЗаголовокHTTP.Значение);
КонецЦикла;
Если ЗапросPost Тогда
ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса, "UTF-8");
HTTPОтвет = Соединение.ОтправитьДляОбработки(ЗапросHTTP);
Иначе
HTTPОтвет = Соединение.Получить(ЗапросHTTP);
КонецЕсли;
ОтветСервера = HTTPОтвет.ПолучитьТелоКакСтроку();
Исключение
Сообщить("Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль," + Символы.ПС + "а также настройки подключения к Интернет.");
КонецПопытки;
Возврат ОтветСервера;
КонецФункции
Получить данные о заказе (трек-номер, тариф службы доставки и т.д.) можно с помощью метода /delivery-services/request/{id}:
http://panel.orderadmin.ru/api/swagger#!/delivery-services/findDeliveryServiceRequests_0
Где {id} - это либо ID заказа в системе OrderAdmin, либо ID заказа в системе клиента.
Выглядит запрос следующим образом:
$criteria = array(
'filter' => array (
array (
'type' => 'eq',
'field' => 'extId',
'value' => $order_id,
),
),
);
$ar_tarif = $orderadmin->setRequest(array())->request('GET', '/api/delivery-services/requests?'. http_build_query($criteria))->getResult();
В качестве результата получаем, либо ошибку:
{
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Forbidden",
"status": 403,
"detail": "Authorization header missing"
}
Либо информацию о заказе:
{
}
В данном случае нас интересуют поля trackingNumber и price.
Получить данные о заказе (трек-номер, тариф службы доставки и т.д.) можно с помощью метода /delivery-services/request/{id}/tracking:
http://panel.orderadmin.ru/api/swagger#!/delivery-services/findDeliveryServiceRequestTracking
Где {id} - это либо ID заказа в системе OrderAdmin, либо ID заказа в системе клиента.
Выглядит запрос следующим образом:
$res = $orderadmin->setRequest(array())->request('GET', '/delivery-services/requests/'.$order_id.'/tracking')->getResult();
В качестве результата получаем, либо ошибку:
{
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Forbidden",
"status": 403,
"detail": "Authorization header missing"
}
Либо информацию о заказе:
{
}
Содержащая полную информацию по трекингу данного заказа.
Пример кода:
<?php
…
$res = $orderadmin->setRequest(array())->request('GET', '/delivery-services/request/'.$order_id.'/tracking')->getResult();
$ar_tarif = json_decode($res);
if ((@$ar_tarif->status != 404)&&(@$ar_tarif->result->trackingNumber != '')) {
echo 'Трек-номер заказа № '.$order_id.': '.$ar_tarif->result->trackingNumber;
}
…
?>
Получить данные о заказе (трек-номер, тариф службы доставки и т.д.) можно с помощью метода /accounts/transactions?entityType=delivery_request&entity={ID}:
http://panel.orderadmin.ru/api/swagger#!/accounts/findAccountTransactions
Где {id} - это ID заказа в системе OrderAdmin.
Выглядит запрос следующим образом:
$res = $orderadmin->setRequest(array())->request('GET', '/accounts//transactions?entityType=Orderadmin\DeliveryServices\Entity\DeliveryRequest&entity='.$order_id)->getResult();
В качестве результата получаем, либо ошибку:
{
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Forbidden",
"status": 403,
"detail": "Authorization header missing"
}
или
{
}
Либо информацию о заказе:
{
"query": {
"account": null,
"rateModifier": null,
"entityType": "delivery_request",
"entity": "78329",
"offset": 0,
"limit": 10
},
"result": [
{
"id": 264487,
"state": "confirmed",
"rateModifier": {
"id": 2,
"code": null
},
"entityType": "delivery_request",
"entity": "78329",
"value": "-18.00",
"tax": null,
"comment": "Приемка заявки 78329.",
"created": {
"date": "2016-08-31 18:46:40.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
},
"updated": {
"date": "2016-08-31 18:46:40.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
}
},
{
"id": 291901,
"state": "confirmed",
"rateModifier": {
"id": 23,
"code": "payment"
},
"entityType": "delivery_request",
"entity": "78329",
"value": "3150.00",
"tax": null,
"comment": "Обработка наложенного платежа.",
"created": {
"date": "2016-09-13 09:58:48.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
},
"updated": {
"date": "2016-09-13 09:58:48.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
}
},
{
"id": 268057,
"state": "confirmed",
"rateModifier": {
"id": 7,
"code": "rate"
},
"entityType": "delivery_request",
"entity": "78329",
"value": "-288.51",
"tax": null,
"comment": "Russian Post, тариф \"Бандероль\".",
"created": {
"date": "2016-09-01 22:30:36.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
},
"updated": {
"date": "2016-09-01 22:30:36.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
}
},
{
"id": 291902,
"state": "confirmed",
"rateModifier": {
"id": 24,
"code": "fee"
},
"entityType": "delivery_request",
"entity": "78329",
"value": "-31.50",
"tax": null,
"comment": "Комиссия за наложенный платеж.",
"created": {
"date": "2016-09-13 09:58:48.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
},
"updated": {
"date": "2016-09-13 09:58:48.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
}
},
{
"id": 291903,
"state": "confirmed",
"rateModifier": {
"id": 25,
"code": "russianPostFee"
},
"entityType": "delivery_request",
"entity": "78329",
"value": "-53.55",
"tax": null,
"comment": "Комиссия за наложенный платеж.",
"created": {
"date": "2016-09-13 09:58:48.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
},
"updated": {
"date": "2016-09-13 09:58:48.000000",
"timezone_type": 3,
"timezone": "Europe/Moscow"
}
}
]
}
Получение списка городов, по которым осуществляется доставка:
http://panel.orderadmin.ru/api/locations/localities (все города)
Города по фильтру:
http://panel.orderadmin.ru/api/locations/localities?name=Новокуз%&page=1
В ответ, будет получен JSON вида:
{
}
Ответ будет содержать список всех городов. Их индексы, координаты, уникальный ID в в системе и остальную информацию.
Для того, чтобы получить список вариантов доставок в заданный город, нужно отправить запрос по адресу:
http://panel.orderadmin.ru/api/delivery-services/calculator
Методом POST, следующие данные:
Размещение JavaScritp’а:
<link rel="stylesheet" href="//panel.orderadmin.ru/frontend/node_modules/bootstrap/dist/css/bootstrap.css">
<link rel="stylesheet" href="//panel.orderadmin.ru/frontend/node_modules/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="//panel.orderadmin.ru/frontend/node_modules/leaflet/dist/leaflet.css">
<link rel="stylesheet" href="//panel.orderadmin.ru/frontend/node_modules/leaflet.markercluster/dist/MarkerCluster.css">
<link rel="stylesheet" href="//panel.orderadmin.ru/frontend/node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css">
<link rel="stylesheet" href="//panel.orderadmin.ru/frontend/dev/jquery-calculator/styles.css">
<script type="text/javascript" src="//panel.orderadmin.ru/frontend/node_modules/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="//panel.orderadmin.ru/frontend/node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="//panel.orderadmin.ru/frontend/node_modules/handlebars/dist/handlebars.js"></script>
<script type="text/javascript" src="//panel.orderadmin.ru/frontend/node_modules/handlebars/dist/handlebars.js"></script>
<script type="text/javascript" src="//panel.orderadmin.ru/frontend/node_modules/leaflet/dist/leaflet.js"></script>
<script type="text/javascript" src="//panel.orderadmin.ru/frontend/node_modules/leaflet.markercluster/dist/leaflet.markercluster.js"></script>
<script type="text/javascript" src="//panel.orderadmin.ru/frontend/dev/jquery-calculator/jquery.calculator.js"></script>
<div id="oaDeliveryCalc">
<i class="fa fa-spinner fa-3x fa-spin" aria-hidden="true"></i>
</div>
<script type="text/javascript">
$("#oaDeliveryCalc").oaDeliveryCalc({"settings":{"sender":139}, "server": {"api": "//panel.orderadmin.ru", "static": "//panel.orderadmin.ru"}});
</script>
Загрузка товаров в систему происходить с помощью стандартного YML фида:
https://yandex.ru/support/partnermarket/yml/about-yml.xml
Метод GET: /api/products/offer
В ответ получаем JSON выдачу со списком товара, формата:
{
}
Обращение к данному методу по умолчанию выводит всю номенклатуру аккаунта. Для того чтобы получить конкретные позиции используйте фильтр. Работа с фильтрами описана в разделе Фильтрация.
Метод POST: /api/products/offer
Наиболее актуальная информация по добавлению товаров в систему находится здесь:
https://orderadmin.freshdesk.com/a/solutions/articles/35000107342
Формат загружаемого JSON такой-же, как и при получении номенклатуры:
{
}
В данной версии API, загрузка номенклатуры возможно только по отдельности.
Пример:
<?php
$res_payload = array(
"id" => "76686",
"article" => "ecom-008",
"name" => "Головоломка из дерева (в ассортименте)",
"type" => "simple",
"image" => "http://www.toyall.ru/upload/catalog_big/captured_big.jpg",
"barcodes" => [
"123456789"
],
"sku" => "ecom-008",
"weight" => null,
"purchasingPrice" => null,
"price" => null,
"extId" => "8",
"parent" => null,
"currency" => null
);
$resj = $orderadmin->setRequest($res_payload)->request('POST', '/api/products/offer')->getResult();
?>
Метод получения текущих остатков описан здесь:
https://orderadmin.freshdesk.com/a/solutions/articles/35000129147
Метод создания заказа описан здесь:
https://orderadmin.freshdesk.com/a/solutions/articles/35000107311
Полное описание всех методов работы с API OrderAdmin можно найти по адресу:
http://panel.orderadmin.ru/api/swagger#/
или в нашей базе знаний:
https://orderadmin.freshdesk.com/a/solutions
Там же можно сделать тестовые запросы и посмотреть ответы системы.