【问题标题】:Getting the error "Number of packages exceeds maximum" from FedEX API从 FedEX API 收到错误“包裹数量超过最大值”
【发布时间】:2016-09-06 09:44:47
【问题描述】:

我收到“FedEx Ship 错误:(8522) 包裹数超过最大值”错误。我正在尝试向 fedEX 发送多包裹运输请求,但仅在第一个包裹请求中失败。

对于向 FedEX 发送多个发货请求,我们必须为每个包裹发送单独的请求,主跟踪信息将从请求的第一个包裹作为回复返回。然后将该主跟踪信息插入到针对该多包裹装运请求的每个附加包裹的请求中。

下面的例子是第一次打包请求。

下面是我发送给 FedEX API“https://wsbeta.fedex.com:443/xml”的 XML 请求正文

代码只是准备数据结构,将其转换为 XML 并使用 XML 请求访问 fedEX API。

my $http_request = HTTP::Request->new('POST', $config->{'URL'});
$http_request->content_type('application/x-www-form-urlencoded');
$http_request->content(Encode::encode_utf8($xml_request_body));

my $http_response;
eval {
    $http_response = $ua->request($http_request);
};
return errorShipResponse($p) if (!defined $http_response || !$http_response->is_success);

my $response;
eval {
    $response = XML::Simple::XMLin(
        $http_response->content,
        ForceArray => 1,
        NSExpand => 1
    );
};

$xml_request_body

    <?xml version="1.0" encoding="UTF-8"?>
<ProcessShipmentRequest xmlns="http://fedex.com/ws/ship/v12">
   <WebAuthenticationDetail>
      <UserCredential>
         <Key>aaaaaaaaaaa</Key>
         <Password>aaaaaaaaaaaaaaaa</Password>
      </UserCredential>
   </WebAuthenticationDetail>
   <ClientDetail>
      <AccountNumber>111111111</AccountNumber>
      <MeterNumber>111111111111</MeterNumber>
   </ClientDetail>
   <Version>
      <ServiceId>ship</ServiceId>
      <Major>12</Major>
      <Intermediate>0</Intermediate>
      <Minor>0</Minor>
   </Version>
   <RequestedShipment>
      <ShipTimestamp>2016-09-06T06:42:41-04:00</ShipTimestamp>
      <DropoffType>REGULAR_PICKUP</DropoffType>
      <ServiceType>SMART_POST</ServiceType>
      <PackagingType>YOUR_PACKAGING</PackagingType>
      <TotalWeight>
         <Units>LB</Units>
         <Value>15.00</Value>
      </TotalWeight>
      <Shipper>
         <AccountNumber>111111111111</AccountNumber>
         <Tins>
            <TinType>BUSINESS_STATE</TinType>
            <Number444444444444</Number>
         </Tins>
         <Contact>
            <CompanyName>aaaaaaaaaaaa</CompanyName>
            <PhoneNumber>11111111</PhoneNumber>
         </Contact>
         <Address>
            ADDRESS HERE
         </Address>
      </Shipper>
      <Recipient>
         <Contact>
            <PersonName>mukta jain</PersonName>
            <PhoneNumber>1234567899</PhoneNumber>
         </Contact>
         <Address>
            <StreetLines>lwehcfkwdjh</StreetLines>
            <City>NY</City>
            <StateOrProvinceCode>NY</StateOrProvinceCode>
            <PostalCode>12345</PostalCode>
            <CountryCode>US</CountryCode>
            <Residential>true</Residential>
         </Address>
      </Recipient>
      <ShippingChargesPayment>
         <PaymentType>SENDER</PaymentType>
         <Payor>
            <ResponsibleParty>
               <AccountNumber>444444444</AccountNumber>
               <Tins>
                  <TinType>BUSINESS_STATE</TinType>
                  <Number>4444444444</Number>
               </Tins>
               <Contact>
                  <CompanyName>aaaaaaaaa</CompanyName>
                  <PhoneNumber>111111111</PhoneNumber>
               </Contact>
               <Address>
                  <ADDRESS HERE>
               </Address>
            </ResponsibleParty>
         </Payor>
      </ShippingChargesPayment>
      <SmartPostDetail>
         <Indicia>PARCEL_SELECT</Indicia>
         <AncillaryEndorsement>ADDRESS_CORRECTION</AncillaryEndorsement>
         <SpecialServices>USPS_DELIVERY_CONFIRMATION</SpecialServices>
         <HubId>1234</HubId>
         <CustomerManifestId>123456</CustomerManifestId>
      </SmartPostDetail>
      <LabelSpecification>
         <LabelFormatType>COMMON2D</LabelFormatType>
         <ImageType>EPL2</ImageType>
         <LabelStockType>STOCK_4X6</LabelStockType>
      </LabelSpecification>
      <RateRequestTypes>LIST</RateRequestTypes>
      <PackageCount>3</PackageCount>
      <RequestedPackageLineItems>
         <SequenceNumber>1</SequenceNumber>
         <GroupPackageCount>1</GroupPackageCount>
         <Weight>
            <Units>LB</Units>
            <Value>5</Value>
         </Weight>
         <Dimensions>
            <Length>7</Length>
            <Width>7</Width>
            <Height>7</Height>
            <Units>IN</Units>
         </Dimensions>
         <CustomerReferences>
            <CustomerReferenceType>INVOICE_NUMBER</CustomerReferenceType>
            <Value>E2315141</Value>
         </CustomerReferences>
         <CustomerReferences>
            <CustomerReferenceType>CUSTOMER_REFERENCE</CustomerReferenceType>
            <Value>E2315141</Value>
         </CustomerReferences>
      </RequestedPackageLineItems>
   </RequestedShipment>
</ProcessShipmentRequest>

【问题讨论】:

  • 欢迎来到 Stack Overflow。你的问题不清楚。你展示的只是一堆数据,但没有代码。我们不知道您要做什么,该 API 是如何工作的,或者您是如何尝试做的。如果您认为问题与代码相关,请edit 您的问题并提供更多信息,例如您正在运行的代码。然而,我认为不是。错误信息非常清楚。您应该查看 FedEx 开发人员文档,找到错误 8522 并在那里阅读更多相关信息。您的货件似乎太大了。但这恐怕不是 Perl 的问题。
  • 您的请求显示为&lt;PackageCount&gt;3&lt;/PackageCount&gt;,但您只列出了一个包。我认为这是你的问题。包裹数量需要与您提供的包裹数量相匹配。

标签: perl fedex


【解决方案1】:

您几乎没有为我们提供任何帮助,因此很难提供任何帮助。但是在您的请求正文中有一件事似乎很奇怪。假设您正在向我们展示 Perl 数据结构的转储,那么您的所有标量值都实现为匿名数组似乎很奇怪。例如,定义包裹计数的行是:

'PackageCount' => [ 3],

我希望看到的地方:

'PackageCount' => 3,

您可能可以访问一些告诉您这样做的文档,但这对我来说似乎很奇怪。

它还会解释错误消息,因为数组引用将被解释为一个整数,几乎可以肯定该整数远大于 API 预期的任何数字!

更新:当我写这个答案时,问题包括看起来像一个大型 Perl 数据结构,它表现出我上面讨论的怪异。现在已将其更改为似乎具有正确值的 XML 文档。我不知道原始数据结构来自哪里或如何使用它。而且,在原始发帖人没有任何反馈的情况下,我不知道这个答案有多大用处。

【讨论】:

  • 嗨 Dave,Original 是一个 perl 数据结构,我们正在内部对其进行改进,以便生成正确的 XML 请求。我发送到 FEDEX API 的最终 XML 请求现在已在我的原始问题中更新。正如您从那里看到的那样, 是 3 并且我正在发送第一个包裹的详细信息。您给出的答案指出了数组 ref 的使用,这在这里不是问题,因为我将它转换为 XML。如果是单个包请求,相同的代码也可以正常工作。
  • 但是 Perl 数据结构中可能存在错误(正如我在回答中所描述的那样)。你有没有解决这个问题?我们可以看看您是如何从 Perl 数据结构到 XML 的吗?
  • 戴夫,我已经更新了我的回复。我是 SO 新手,所以请原谅我更新旧 cmets。因此,我再次发送的最后一个请求是 XML 格式的,如您所见,这是一个正确的请求。我不确定如何将 perl 数据转换为 XML 是否仍然很重要,因为我的 XML 输出实际上是正确的。我已经阅读了 FEDEX API 文档,其中提到,如果是多件包裹运输,这就是我们应该提出请求的方式,对于进一步的请求,我们应该包括我们从第一个请求中收到的“MasterTrackingId”。这是否消除了您的疑虑?
  • 好的。听起来您对 Fedex API 支持团队有疑问,而不是 Stack Overflow :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2016-11-12
  • 2014-11-24
  • 1970-01-01
  • 2022-12-04
  • 2014-05-26
  • 1970-01-01
相关资源
最近更新 更多