Доброго времени суток. Имеется скрипт, который работает с рекламными компаниями в яндекс директ. Скрипт был написан сторонним программистом 3 года назад и сейчас связаться с ним не получается, поэтому придется как-то решать задачу своими силами. Суть - скрипт использует методы API 4 версии, отключение которой обещают максимум через месяц. Поэтому нужно переходить на API 5 версии. Самому вроде удалось обновить методы с API 4 до API 4 Live, но там все действия идентичны, а вот с переходом на 5 версию большие проблемы. Сам я в PHP новичок, поэтому очень надеюсь на Вашу помощь. Взаимодействие с яндекс API осуществляется 3 файлами: 1 файл конфигурации, 2 насколько я понимаю обработчик, 3 файл, в котором описаны все функции работы и т.д. Выкладывать код всех 3 файлов смысла не вижу, так как страница будет огромной. Для примера:
API 4 версии использует вот этот файл:
define('YANDEXAPI','https://soap.direct.yandex.ru/json-api/v4/');
в другом файле происходит обработка данного файла:
$opts = array(
'http'=>array(
'method'=>"POST",
'content'=>$j_request,
)
);
$context = stream_context_create($opts);
$result = file_get_contents(YANDEXAPI, 0, $context);
$res = json_decode($result,true);
Если заменить файл API 4 на API 5: вот на такой
define('YANDEXAPI','https://api.direct.yandex.com/json/v5/ads');
То обработчик перестает работать и начинает ругаться на эти строчки
foreach($campains['data'] as $campain){
if(stripos($campain['Name'],CAMPAIN_NAMEMASK)!==false){
$baners = do_yandex_request('GetBanners',array(
'CampaignIDS' => array($campain['CampaignID']),
// 'Filter' => array(
// 'StatusPhoneModerate' => array('Yes'),
// 'StatusBannerModerate' => array('Yes'),
// 'StatusPhrasesModerate' => array('Yes'),
// 'StatusActivating' => array('Yes'),
// 'StatusShow' => array('Yes'),
// 'IsActive' => array('Yes'),
// 'StatusArchive' => array('No')
// ),
'GetPhrases' => 'WithPrices'
),false);
Мол неправильный аргумент foreach($campains['data'] as $campain){
Та же ситуация здесь:
foreach($campains['data'] as $campain){
if(stripos($campain['Name'],CAMPAIN_NAMEMASK)!==false){
$c++;
}
Происходит это скорее всего из-за несоответсвия методов, в API 4 метод GetBanners,
а в API 5 Сервис Campaigns, метод get
Менял GetBanners на get, делу это не помогло. Нужно еще что-то подключать.
Начать, наверное, нужно с решения этих ошибок. При необходимости могу отправить все три файла для детального ознакомления. Заранее благодарен, очень надеюсь на Вашу помощь.