无法通过 eBay 更新列表描述 API

Can't update description of listing with eBay API

我正在尝试编写一个 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.'
                  }
                ],

我是不是误解了传入的内容?据我了解,您只是传入要更改的参数?

更新:根据 Dave 的建议,我正在尝试 Marketplace::Ebay。只是通过尝试 select 我的一项进行测试:

 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' not processed for {urn:ebay:apis:eBLBaseComponents}GetItemResponse/Item at //[5]/*[6] $VAR1 = undef;

有什么想法吗?

啊哈 - 知道了!问题似乎与 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;

...并完美更新