【问题标题】:eBay API in Perl - can't use SetShipmentTrackingInfoRequest to update tracking informationPerl 中的 eBay API - 无法使用 SetShipmentTrackingInfoRequest 更新跟踪信息
【发布时间】:2016-10-21 07:09:43
【问题描述】:

我试图弄清楚为什么我似乎无法使用 eBay API 更新跟踪号。这是我引用的页面:

http://developer.ebay.com/DevZone/merchant-data/CallRef/SetShipmentTrackingInfo.html

基于此,我在 Perl 中得到了以下代码:

 use Net::eBay;

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

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


my $result = $ebay->submitRequest( "SetShipmentTrackingInfoRequest",
                      {
                       DetailLevel => "ReturnAll",
                       ErrorLevel => "1",
                       SiteId => "1",
                       OrderID => 1234546, # not the real order ID I'm using :)
                       ShipmentTrackingDetails => {
                        ShipmentTrackingNumber => "12345",
                        ShippingCarrierUsed => "Hermes"
                       }
                      });
     print $IN->header;
     use Data::Dumper;
     print Dumper($result);

运行时,$result 报错:

$VAR1 = {
          'Errors' => {
                      'ErrorClassification' => 'RequestError',
                      'SeverityCode' => 'Error',
                      'ShortMessage' => 'Unsupported API call.',
                      'ErrorCode' => '2',
                      'LongMessage' => 'The API call "SetShipmentTrackingInfoRequest" is invalid or not supported in this release.'
                    },
          'xmlns' => 'urn:ebay:apis:eBLBaseComponents',
          'Timestamp' => '2016-10-21 07:03:04',
          'Build' => '18007281',
          'Version' => '900',
          'Ack' => 'Failure'
        };

我有点困惑,因为看起来 SetShipmentTrackingInfoRequest 是我需要进行的 API 调用?我对 eBay API 并没有真正做太多,所以我可能遗漏了一些愚蠢的东西。

更新:根据下面的反馈,我现在正在使用CompleteSale API 调用:

http://developer.ebay.com/Devzone/XML/docs/Reference/eBay/CompleteSale.html

我的 $result = $ebay->submitRequest("CompleteSale", { DetailLevel => "ReturnAll", 错误级别 => "1", 站点 ID => "1", 订单 ID => 1933420817015, 装运 => { ShipmentTrackingDetails => { ShipmentTrackingNumber => "77293124902615", ShippingCarrierUsed => "爱马仕" } } });

当我运行它时,我现在得到错误:

'LongMessage' => 'XML 错误文本:";嵌套异常是: org.xml.sax.SAXParseException:与元素类型“CompleteSale”关联的属性名称“Request”必须后跟 \' = \' 字符。".',

启用调试,正在发送的 XML 是:

<?xml version='1.0' encoding='utf-8'?>
 <CompleteSale Request xmlns="urn:ebay:apis:eBLBaseComponents">
 <RequesterCredentials>
  <eBayAuthToken>xxxx</eBayAuthToken>
</RequesterCredentials>

    <DetailLevel>ReturnAll</DetailLevel>
    <ErrorLevel>1</ErrorLevel>
    <OrderID>xxxxx</OrderID>
    <Shipment>
      <ShipmentTrackingDetails>
        <ShipmentTrackingNumber>xxxx</ShipmentTrackingNumber>
        <ShippingCarrierUsed>Hermes</ShippingCarrierUsed>
      </ShipmentTrackingDetails>
    </Shipment>
    <SiteId>1</SiteId>

</CompleteSale Request>

【问题讨论】:

    标签: ebay-api


    【解决方案1】:

    通过查看您发布的eBay API doc 链接,第二个“注释”是否没有完全解释为什么它不能作为单个 API 调用工作?

    注意:SetShipmentTrackingInfo 不能像普通 API 调用那样使用端点单独发出

    它接着说:

    在交易 API 中,CompleteSale 调用提供了您可以直接调用的类似功能

    所以也许看那里应该有下一步

    【讨论】:

    • 谢谢你,我不知道。我现在已将其更新为使用 CompleteSale,但我现在收到一条非常奇怪的错误消息 :((我已更新下面的代码和错误消息)
    • @AndrewNewby 当 API 中的示例没有时,您似乎在 CompleteSale 和 Request 之间有一个空格。
    • @AndrewNewby 我认为这是由于 CompleteSale 部分之后您的请求中有额外的空间::'“CompleteSale”'
    • 你的传奇!就是这样 :) 有时只需要第二眼就能看到你的愚蠢;)
    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多