За последние 24 часа нас посетили 22944 программиста и 1241 робот. Сейчас ищут 768 программистов ...

Прошу помощи в оставлении запроса для API Яндекс Директ

Тема в разделе "Сделайте за меня", создана пользователем R2D4, 17 апр 2019.

  1. R2D4

    R2D4 Новичок

    С нами с:
    17 апр 2019
    Сообщения:
    2
    Симпатии:
    0
    Добрый день.
    Помогите разобраться!
    Имеется рабочий код:
    PHP:
    1.                 $arrUpdateBanners[] = array (
    2.                     'Id' => $arrBnr['Id'],
    3.                     'TextAd' => array (
    4.                         'Title' => setPrice($products[$url]->price, $arrBnr['TextAd']['Title']),
    5.                         'Text' => setPrice($products[$url]->price, $arrBnr['TextAd']['Text']),
    6.                     ),
    7.                 );
    Создаётся переменная для отправки запроса в ЯД по API. Корректируется заголовок и корректируется цена.
    У Директа появилась новая функция, теперь можно менять/добавлять цену
    в мануале это выглядит так:
    Код (Text):
    1. {
    2.   "method": "update",
    3.   "params": { /* params */
    4.     "Ads": [{  /* AdUpdateItem */
    5.       "Id": (long), /* required */
    6.       "TextAd": {  /* TextAdUpdate */
    7.         "Title": (string),
    8.         "Title2": (string), /* nillable */
    9.         "Text": (string),
    10.         "Href": (string), /* nillable */
    11.         "AgeLabel": ( "AGE_0" | ... | "MONTHS_12" ),  
    12.         "DisplayUrlPath": (string), /* nillable */
    13.         "VCardId": (long), /* nillable */
    14.         "AdImageHash": (string), /* nillable */
    15.         "SitelinkSetId": (long), /* nillable */
    16.         "CalloutSetting": {  /* AdExtensionSetting */
    17.           "AdExtensions": [{  /* AdExtensionSettingItem */
    18.             "AdExtensionId": (long), /* required */
    19.             "Operation": ( "ADD" | "REMOVE" | "SET" ) /* required */
    20.           }, ... ] /* required */
    21.         }, /* nillable */
    22.         "VideoExtension": {  /* VideoExtensionUpdateItem */
    23.           "CreativeId": (long), /* nillable */
    24.         },
    25.         "PriceExtension": {  /* PriceExtensionUpdateItem */
    26.           "Price": (long),
    27.           "OldPrice": (long), /* nillable */
    28.           "PriceQualifier": ( "FROM" | "UP_TO" | "NONE" ),
    29.           "PriceCurrency": ( "RUB" | "BYN" | "CHF" | "EUR" | "KZT" | "TRY" | "UAH" | "USD" )
    30.         } /* nillable */
    31.       },
    Интересует строка:
    Код (Text):
    1.         "PriceExtension": {  /* PriceExtensionUpdateItem */
    2.           "Price": (long),
    никак не получается создать запрос, вариант:
    PHP:
    1.                 $arrUpdateBanners[] = array (
    2.                     'Id' => $arrBnr['Id'],
    3.  
    4.                     'TextAd' => array (
    5.                         'Title' => setPrice($products[$url]->price, $arrBnr['TextAd']['Title']),
    6.                         'Text' => setPrice($products[$url]->price, $arrBnr['TextAd']['Text']),
    7.                     ),
    8.                     'PriceExtension' => array (
    9.                     'Price' => $teststst  
    10.                     ),
    11.                 );
    работать не хочет.

    Как правильно составить строку?
    Спасибо.
     
  2. Boothooz

    Boothooz Активный пользователь

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    PHP:
    1. { } - говорят о том что, это объект
    2. [ ] - говорят о том что, это массив
    по всей видимости из за этого работать не хочет )
     
  3. R2D4

    R2D4 Новичок

    С нами с:
    17 апр 2019
    Сообщения:
    2
    Симпатии:
    0
    Всё заработало, нужно было всё в один массив поместить:
    PHP:
    1.                 $arrUpdateBanners[] = array (
    2.                     'Id' => $arrBnr['Id'],
    3.                     'TextAd' => array (
    4.                         'Title' => setPrice($products[$url]->price, $arrBnr['TextAd']['Title']),
    5.                         'Text' => setPrice($products[$url]->price, $arrBnr['TextAd']['Text']),
    6.                  
    7.                     'PriceExtension' => array (
    8.                     'Price' => $teststst
    9.                     ), ),
    10.                 );
    Возможно кому то будет полезно.
    Если в объявлении не проставлена цена, то по API цена не добавляется. Т.е. изначально в изменяемом объявлении должна быть прописана любая цифра, только в этом случае происходит подстановка нужной цены. Из за этого идиотского косяка провозился целые сутки.
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @R2D4, спасибо, это точно кому-нибудь будет полезно.