Не могу обновить описание листинга с eBay API - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь написать сценарий Perl , который обновит наши описания eBay без необходимости входа в систему (работает на нескольких торговых площадках, если сложно удержать уровень запасов,описания и т.д. обновлены).Вот что у меня есть:

 my $ebay = new Net::eBay( {
                              SiteLevel => 'prod',
                              DeveloperKey => 'x',
                              ApplicationKey => 'x',
                              CertificateKey => 'x',
                              Token => 'x',
                             } );

  $ebay->setDefaults( { API => 2, compatibility => 900  } );

my $new_desc = q|<meta name="viewport" content="width=device-width, initial-scale=1.0">
<p>We are proud to announce our first ever badge! With an easy-to-iron
on backing, fitting couldn't be any easier! We have designed the path to
 be a perfect addition to any piece of cosplay costume.&nbsp; Please do send
in the photos of it being used on your costumes, as we would love to
share.</p>
<p>The badge is 7 x 7 cm / 2 x 2 inches in size, and 2mm thi<br></p>|;

my $result = $ebay->submitRequest( "ReviseItem",
                      {
                       DetailLevel => "ReturnAll",
                       ErrorLevel => "1",
                       SiteId => "1",
                       Item => {
                         Description => \$new_desc,
                         ItemID => 253430606975
                       },
                       ItemID => 253430606975
                      }) || die;

 print "Result: " . Dumper( $result ) . "\n";

Я получаю сообщение об ошибке при его запуске:

      'Errors' => [
                  {
                    'ShortMessage' => 'Return Policy Attribute Not Valid',
                    'ErrorClassification' => 'RequestError',
                    'ErrorCode' => '21920200',
                    'LongMessage' => 'Return Policy Attribute returnDescription Not Valid On This Site',
                    'SeverityCode' => 'Warning',
                    'ErrorParameters' => {
                                         'Value' => 'returnDescription',
                                         'ParamID' => '0'
                                       }
                  },
                  {
                    'ShortMessage' => 'Description is missing.',
                    'ErrorClassification' => 'RequestError',
                    'ErrorCode' => '106',
                    'SeverityCode' => 'Error',
                    'LongMessage' => 'A description is required.'
                  }
                ],

Я неправильно понимаю, что передается?из того, что я могу понять, вы просто передаете параметры, которые хотите изменить?

ОБНОВЛЕНИЕ: По предложению Дейва, я даю Marketplace :: Ebay ход.Просто тестирую, пытаясь выбрать один из моих предметов:

 my $ebay = Marketplace::Ebay->new(
                                  production => 1,
                                  site_id => 3,
                                  developer_key => 'xx',
                                  application_key => 'xx',
                                  certificate_key => 'xxx',
                                  token => 'xx',
                                  xsd_file => 'ebaySvc.xsd',
                                 );

my $res = $ebay->api_call('GetItem', { ItemID => 253430606975 });
print Dumper($res);

Но я получаю странную ошибку:

error: element `{urn: ebay: apis: eBLBaseComponents} GiftIcon'не обрабатывается для {urn: ebay: apis: eBLBaseComponents} GetItemResponse / Item в / / [5] / * [6] $ VAR1 = undef;

Есть идеи?

1 Ответ

0 голосов
/ 25 февраля 2019

Ах, ха - понял!Проблема заключалась в том, как передавался HTML.Если я помещу его в тег CDATA, он будет работать нормально:

my $new_desc = q|<![CDATA[
some html etc here
]]>|;

my $result = $ebay->submitRequest( "ReviseItem",
                      {
                       DetailLevel => "ReturnAll",
                       ErrorLevel => "1",
                       SiteId => "1",
                       Item => {
                         Description => $new_desc,
                         ItemID => 253430606975
                       },
                       ItemID => 253430606975
                      }) || die;

... и прекрасно обновится

...