Как указать характеристики товара при создании товара через API?

2

Есть прекрасные методы в API

shop.product.add

shop.product.skus.add

А как с помощью API указать конкретные характеристики для SKU. Глядя на структуру данных явно не хватает shop.products.sku.features.add со всеми методами типа .getInfo .getList

Если я хочу синхронизировать данные магазина через API я должен сам написать обработку таких вызовов? Или есть какой-то способ который я не знаю? Или может все таки API разработчики допилят уже - ведь для нормальной работы не хватает пустяка - API для характеристик товара?

6 комментариев

  • +2

    По поводу product.skus.features.* соглашусь. Было бы неплохо добавить. Но прямо сейчас таких нет.

    Но для настоящих ниндзя прямо сейчас есть супер мощный метод product.update. Он передаёт данные напрямую в shopProduct, а значит, с его помощью можно сохранить практически всё, что можно сохранить в редакторе товара в бекенде. Чтобы сохранить характеристику артикула, надо передать что-то вроде

    skus[100500][features][weight]=10

    Где 100500 - это sku_id. Я не пробовал, но должно сработать вроде.

  • +2
    Руслан Руслан 17 декабря 2017 13:02 #

    Так может кто-нибудь написал бы в итоге обсуждения пример, как должно выглядеть отправляемое боди пост запроса с устанавливаемыми свойствами? целиком

  • +1
    Lady Lady 11 июля 2015 22:19 #

    Я попытался использовать product.update чтобы обновить характеристику товара... ничего не вышло

    вот что передается в пост

    post: { "name": "newName", "features": {"brand": "newBrand"} }

    Ошибки

    Warning: array_keys() expects parameter 1 to be array, string given in .../shop/lib/model/shopProductFeatures.model.php on line 280

    Warning: Invalid argument supplied for foreach() in ../shop/lib/model/shopProductFeatures.model.php on line 288
    Warning: Invalid argument supplied for foreach() in ../shop/lib/model/shopProductFeatures.model.php on line 340


    P.S. product.update в принципе работает - если без features все обновляется...

    • +2

      А можно посмотреть, что реально отправляется на сервер? Должно быть что-то вроде:

      features[brand]=newBrand
      features[material][]=металл
      features[material][]=пластик
      features[weight][value]=0.4
      features[weight][unit]=kg

      Это я взял из раздела Form Data в сетевой панели Chrome. Или можно сделать wa_dump($data) в
      shop/api/v1/shop.product.update.method.php

      • +1
        Lady Lady 12 июля 2015 11:53 #

        Леонид, спасибо за подсказку

        очень помог wa_dump, на самом деле передавались некорректные данные (я отчегото решил что нужно массив прицепить прямо в POST - так нельзя), в итоге вы с самого начала подсказали верно, нужно для изменения характеристик каждый элемент массива отправлять:

        features[f1]=value1

        features[f2]=value2

        ...

        В итоге все работает. Думаю также и для sku futures будет работать...


      • +1

        > expects parameter 1 to be array, string given

        Ну так...

        Добавить комментарий

        Чтобы добавить комментарий, зарегистрируйтесь или войдите