Как использовать Etsy's updateInventory(), чтобы обновить акции / цены для листинга
Мне совсем не понятно, как обновить цену / акцию для листинга, после того как он был создан изначально с использованием list->createListing().
Чтобы обновить акции / цены, документация Etsy гласит, что нужно вызвать list->updateInventory(). Однако для этого вызова требуется нечто, называемое products, вместе с парой свойств (price_on_property, amount_on_property и sku_on_property):
- listing_id
- товары*
- price_on_property
- quantity_on_property
- sku_on_property
где:
Продукты далее определены в их документации как комбинация property_values и предложений, о которых я понятия не имею.
list_id изначально возвращается из вызова createListing ().
Сноска Etsy о price_on_property, stock_on_property и sku_on_property добавляет путаницу:
price_on_property - это массив property_ids свойств, от которых зависит цена (если есть).
amount_on_property является массивом property_ids свойств, от которых зависит количество (если есть).
sku_on_property является массивом property_ids свойств, от которых зависит sku (если есть).
Обновление не будет выполнено, если предоставленные значения для номера продукта и предлагаемого количества и цены несовместимы с предоставленными значениями полей "on_property_*".
При указании цены укажите число с плавающей запятой, эквивалентное сумме, деленной на делитель, как указано в денежном ресурсе.
Параметр products должен представлять собой массив продуктов JSON, даже если вы отправляете только один продукт. Все имена полей в двоичном объекте JSON должны быть строчными.
Взято из https://www.etsy.com/developers/documentation/reference/listinginventory
Учитывая, что отправной точкой для добавления вещей для продажи на Etsy является просто вызов createListing () с подробной информацией об элементе, который я хочу продать (включая количество и цену акций), я не понимаю, как вызвать updateInventory () для обновления запас и / или цена этого предмета, и поэтому кто-нибудь может дать некоторую ясность по этому вопросу, пожалуйста (и да, я связался со службой поддержки Etsy, но это может занять некоторое время, чтобы они ответили).
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 для разных вариантов.
- Кол-во_свойств не является обязательным, если у вас
вариации.
Самый простой способ, который я нашел, это сделать следующее:
Получите list_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 (** данные)
Чтобы обновить варианты для продукта в 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 для атрибутов вариантов.