Ruby add_item для eBay - PullRequest
       1

Ruby add_item для eBay

1 голос
/ 18 ноября 2011

Я пытаюсь написать приложение ruby ​​on rails, которое отправляет элемент на eBay. У Cody Fauser / Garry Tan есть драгоценный камень под названием ebayApi, который построен поверх драгоценного камня ebay. Когда я пытаюсь опубликовать элемент, я получаю сообщение об ошибке от ebay, в котором говорится, что для этой категории требуется идентификатор условия. Я нашел категорию, которая не требует условия, и я могу опубликовать в этой категории. Просматривая документацию по API eBay, я обнаружил тег conditionID в классе "item". Однако в документации по ebayAPI такого тега нет. Оглядываясь назад на документацию по ebay API, можно найти более старый способ задания условия с использованием lookup_attributes. Я заметил, что возвращаемый xml поступает в API версии 745, а обновленный интерфейс ruby ​​Гарри Гана работает под управлением версии 609. Я попытался использовать поиск и, похоже, получил ту же ошибку (условие требуется). Я использую следующий код для указания элемента:

@ebay = Ebay::Api.new :auth_token => @seller.ebay_token
item = Ebay::Types::Item.new( :primary_category => Ebay::Types::Category.new(:category_id => @ebayTemplate.categoryID),
:title => @ebayTemplate.name,
:description => @ebayTemplate.description,
:location => @ebayTemplate.location,
:start_price => Money.new((@ebayTemplate.startPrice*100).to_d, @ebayTemplate.currency),
:quantity => 1,
:listing_duration => @ebayTemplate.listingDuration,
:country => @ebayTemplate.country,
:currency => @ebayTemplate.currency,
:payment_methods => ['VisaMC', 'PayPal'],
:paypal_email_address => '********@gmail.com',
:dispatch_time_max => 3,
:lookup_attributes => [Ebay::Types::LookupAttribute.new( :name => "Condition", :value => "New")],
#         :attribute_sets => [
#           Ebay::Types::AttributeSet.new(
#             :attribute_set_id => 2919,
#             :attributes => [
#               Ebay::Types::Attribute.new(
#                 :attribute_id => 10244,
#                 :values => [ Ebay::Types::Val.new(:value_id => 10425) ]
#               )
#              ]
#           )
#         ],
:shipping_details => Ebay::Types::ShippingDetails.new(
:shipping_service_options => [
#              ShippingServiceOptions.new(
#              :shipping_service_priority => 2, # Display priority in the listing
#              :shipping_service => 'UPSNextDay',
#              :shipping_service_cost => Money.new(1000, 'USD'),
#              :shipping_surcharge => Money.new(299, 'USD')
#             ),
Ebay::Types::ShippingServiceOptions.new(
:shipping_service_priority => 1, # Display priority in the listing
:shipping_service => @ebayTemplate.shipSvc,
:shipping_service_cost => Money.new((@ebayTemplate.shipSvcCost*100).to_d, @ebayTemplate.currency),
:shipping_surcharge => Money.new((@ebayTemplate.shipSurcharge*100).to_d, @ebayTemplate.currency)
)
],
:international_shipping_service_options => [
Ebay::Types::InternationalShippingServiceOptions.new(
:shipping_service => 'USPSPriorityMailInternational',
:shipping_service_cost => Money.new((@ebayTemplate.shipSvcCost*100).to_d, @ebayTemplate.currency),
:shipping_service_priority => 2,
:ship_to_location => @ebayTemplate.shipToLocation
)
]

),
:return_policy => Ebay::Types::ReturnPolicy.new (
:description => 'this product for suckers only!',
:returns_accepted_option => 'ReturnsAccepted'
)
#:condition_id => 1000
)

@response = @ebay.add_item(:item => item)

Как видите, это всего лишь мутация примера, приведенного Коди Фаузером. Условный идентификатор внизу вызовет ошибку, поскольку такого атрибута нет. Мне кажется, что в драгоценном камне нет возможности для этого, так как требование появилось после того, как драгоценный камень был создан. Я не смог найти никаких других драгоценных камней для связи с Ebay. Я также заметил, что на это очень мало жалоб, хотя люди все еще скачивают драгоценный камень (10 человек скачали его сегодня). Я думаю, что есть много людей, пишущих на Ebay. Есть ли ключевое слово, которое мне не хватает, чтобы указать условие? Работа вокруг, которую люди использовали? Еще один драгоценный камень, который я пропустил?

1 Ответ

0 голосов
/ 09 августа 2012

Существует существующий item_conditions_codes.rb в каталоге типов драгоценного камня и имеет только два значения New и Used. Думаю, вы могли бы добавить больше значений там. Однако по-прежнему необходимо сопоставление с идентификаторами в соответствии с методом обновления (и изменения атрибутов)

Вы должны изменить в библиотеке gem в .. ruby/1.8/gems/ebayapi-0.12.0/lib/ebay/types/item.rb и добавьте следующие новые строки

# added to allow ConditionID to be pushed into XML
numeric_node :condition_id, 'ConditionID', :optional => true

тогда в вашем коде ruby ​​ebay используйте следующее соглашение

:condition_id => 1500,

По крайней мере, сейчас мне это кажется подходящим.

...