require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (!CModule::IncludeModule("iblock") || !CModule::IncludeModule("catalog"))
die();
// Дока и нужная информация
// Регистрация веб-сервиса и получение ключа к API - https://yandex.ru/dev/market/partner-marketplace-dp/doc/dg/concepts/authorization.html
// получение отладочного токена - https://yandex.ru/dev/oauth/doc/dg/tasks/get-oauth-token.html
// https://yandex.ru/dev/market/partner-marketplace-cd/doc/dg/reference/post-campaigns-id-offer-prices-updates.html
// POST /campaigns/{campaignId}/offer-prices/updates
// https://api.partner.market.yandex.ru/v2/campaigns/{campaignId}/offer-prices/updates.[format]
$campaignId = 11111111; // ID компании
$priceType = 1; // ID типа цены
// Для получения этих переменных смотри - получение отладочного токена - https://yandex.ru/dev/oauth/doc/dg/tasks/get-oauth-token.html
$oauth_token = "AgAAAAAAAAA-AAbAAAAAAAAAAAAAAAAAA";
$oauth_client_id = "c9skldfjlksdjflsk213k42l3234243242";
$arJson = [];
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_".$priceType);
// нужный нам фильтр
$arFilter = Array(
"IBLOCK_ID" => array(1,2), // ID нужных инфоблоков
"ACTIVE"=>"Y",
"ACTIVE_DATE" => "Y",
"!PROPERTY_IZGOTOVITEL" => false,
);
$arNav = ["nPageSize"=>2000, "iNumPage"=>1]; // если элментов больше 2000 нужно циклить по страницам выполнение блока ниже
$res = CIBlockElement::GetList([], $arFilter, false, $arNav, $arSelect);
while($arFields = $res->Fetch())
{
if(!empty($arFields["CATALOG_PRICE_".$priceType]))
{
$arJson["offers"][] = [
"marketSku" => $arFields["ID"], // ID SKU, который мы передовали при создании файла выгрузки товаров
"price" => [
"currencyId" => "RUR",
"discountBase" => "",
"value" => $arFields["CATALOG_PRICE_".$priceType],
"vat" => "",
],
];
}
}
$strJson = json_encode($arJson);
// отправляем данные
$headers = array(
'Content-Type: application/json',
'Authorization: OAuth oauth_token="'.$oauth_token.'", oauth_client_id="'.$oauth_client_id.'"'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.partner.market.yandex.ru/v2/campaigns/'.$campaignId.'/offer-prices/updates.json');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $strJson);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$out = curl_exec($curl);
curl_close($curl);
$outDecode = json_decode($out, true);
// выведем статус отправки
echo ''.print_r($outDecode,true).'
';