Как использовать вызов Etsy updateInventory() для обновления Stock/Price для листинга

Мне совсем не ясно, как обновить цену/запас для листинга после того, как он был изначально создан с помощью listing->createListing().

В документации Etsy говорится, что для обновления акций/цен необходимо вызывать listing->updateInventory(). Однако для этого вызова требуется нечто, называемое продуктами, вместе с парой свойств (цена_на_свойстве, количество_на_свойстве и sku_на_свойстве):

  • listing_id
  • продукты*
  • цена_на_свойстве
  • количество_на_свойстве
  • sku_on_property

куда:

  • продукты далее определяются в их документации как комбинация из property_values и предложения, о которых я понятия не имею.

  • listing_id изначально возвращается из вызова createListing().

Сноска Etsy о price_on_property, stock_on_property и sku_on_property добавляет путаницы:

price_on_property — это массив property_id свойств, от которых зависит цена (если они есть).

quantity_on_property — это массив property_id свойств, от которых зависит количество (если они есть).

sku_on_property — это массив property_id свойств, от которых зависит sku (если они есть).

Обновление завершится ошибкой, если предоставленные значения артикула продукта, количества и цены предложения несовместимы с предоставленными значениями полей «on_property_*».

При указании цены укажите число с плавающей запятой, эквивалентное сумме, деленной на делитель, как указано в ресурсе Money.

Параметр products должен быть массивом продуктов JSON, даже если вы отправляете только один продукт. Все имена полей в большом двоичном объекте JSON должны быть в нижнем регистре.

Взято из https://www.etsy.com/developers/documentation/reference/listinginventory#method_updateinventory

Учитывая, что отправной точкой для добавления вещей для продажи на Etsy является вызов createListing() с подробной информацией о предмете, который я хочу продать (включая количество и цену на складе), я не понимаю, как вызвать updateInventory() для обновления наличие и / или цена этого предмета, и поэтому кто-нибудь может дать некоторую ясность по этому вопросу, пожалуйста (и да, я связался со службой поддержки разработчиков Etsy, но им может потребоваться некоторое время, чтобы ответить).


person err1    schedule 02.06.2017    source источник


Ответы (2)


В python — я предполагаю, что у вас есть модуль etsy_api из github.

Списки продуктов Etsy имеют следующую структуру:

ListingProduct = {
   "price_on_property": [
       property_ids
     ], 
   "products": [
          LIST OF PRODUCT VARIATIONS FOR THIS LIST. IF YOU HAVE NO VARIATIONS
          THEN THIS LIST WILL HAVE ONLY 1 PRODUCT.

     ], 
   "quantity_on_property": [], 
   "sku_on_property": []

}

Чтобы обновить цены, вам нужно отправить обратно эту модель ListingProduct, но с нужными вам изменениями. Примечание

  • price_on_property требуется, если у вас есть варианты.
  • sku_on_property является необязательным, если у вас разные SKUS для разных вариаций.
  • количество_на_свойстве не является обязательным, если у вас разные количества в вариантах
    .

Самый простой способ, который я нашел, это сделать следующее:

Получите listing_id для продукта, для которого вы хотите изменить цену. Чтобы получить этот список, позвоните по URI инвентаря. Я делаю это, чтобы не создавать ListingProduct['products']. С ним слишком много всего происходит.

 listing_id = 'the product's listing_id'
 ListingProduct = etsy_api.getInventory(listing_id=listing_id)

ListingProduct['products'] – это список продуктов для этого списка. Размер этого списка равен количеству вариантов, которые у вас есть. Возьмите ListingProduct['products'] и для каждого варианта измените цену.

Если вы посмотрите на ListingProduct['products'], вы увидите, что необходимо внести следующие изменения:

ListingProducts['products'][0]['offerings'][0]['price'] = NewPrice

Если в объявлении есть 2 варианта, измените цену и в нем.

ListingProducts['products'][1]['offerings'][0]['price'] = OtherNewPrice

Как только вы это сделаете, позвоните с данными.

data = {
'listing_id': listing_id
'products': json.dumps(ListingProduct['products'])
'price_on_property': 200   #If you have variation
}

etsy_api.updateInventory(**данные)

person Duncan Gichimu    schedule 04.08.2017
comment
Спасибо Дункан за подробный ответ. Хотя я делаю все это с С#, я пока не могу проверить ответы, потому что я застрял, пытаясь пройти их процесс аутентификации (опять же с С#), но вместе с ответом их службы поддержки я уверен, что ваш ответ поможет. Большое спасибо еще раз. - person err1; 07.08.2017

Чтобы обновить варианты продукта в ETSY, вам необходимо использовать вызов обновления инвентаризации из API (ожидая, что вы используете модуль Etsy из GitHub). перейдите по ссылке https://www.etsy.com/developers/documentation/getting_started/inventory

Данные, которые вам нужно отправить с этим вызовом, будут включать:

array (
     products             => json_encode($products),
     price_on_property    =>
     quantity_on_property =>  
)

price_on_property будет включать идентификатор свойства варианта, предоставленный etsy.

Указатель продуктов будет включать в себя множество вариантов с подробностями -

[0]  =>  (
          product_id=> 1234,
         property_values" => [
              property_id   => 500,
            property_name => color,
             'values        => [ green ],
         ],
         offerings" => [
             (
                 price => 200
                 quantity => 1,
             )
         )
[1] => and so on...

Идентификатор свойства будет предоставлен etsy для атрибутов вариантов.

person CedCommerce    schedule 08.09.2017