UPS TimeInTransit API 在没有目的地城市的情况下无法工作

问题描述 投票:0回答:1

我正在使用 UPS TimeInTransit API 通过 Magento 2 网站上的目的地邮政编码查找估计运输。昨天它已经停止工作,没有显示结果,没有给出目的地城市。在它工作正常之前,根据输入的邮政编码给我想要的结果。为什么 TimeInTransit API 不能仅使用目的地邮政编码?

使用代码:

  $data ="<?xml version=\"1.0\"?>
        <AccessRequest xml:lang='en-US'>
            <AccessLicenseNumber>111112414134</AccessLicenseNumber>
            <UserId>1213243</UserId>
            <Password>13124123</Password>
       </AccessRequest>
       <?xml version='1.0'?>
        <TimeInTransitRequest xml:lang='en-US'>
          <Request>
            <TransactionReference>
            <CustomerContext>Site Name</CustomerContext>
              <XpciVersion>1.001</XpciVersion>
            </TransactionReference>
            <RequestAction>TimeInTransit</RequestAction>
          </Request>
          <TransitFrom>
            <AddressArtifactFormat>
              <PoliticalDivision2>Lake Elsinore</PoliticalDivision2>
              <PoliticalDivision1>California</PoliticalDivision1>
              <PostcodePrimaryLow>92530</PostcodePrimaryLow>
              <CountryCode>US</CountryCode>
            </AddressArtifactFormat>
          </TransitFrom>
          <TransitTo>
            <AddressArtifactFormat>
              <PoliticalDivision2></PoliticalDivision2>
              <PoliticalDivision1></PoliticalDivision1>
              <PostcodePrimaryLow>92562</PostcodePrimaryLow>
              <CountryCode></CountryCode>
            </AddressArtifactFormat>
          </TransitTo>
          <PickupDate>$today</PickupDate>
          <MaximumListSize>5</MaximumListSize>
          <InvoiceLineTotal>
            <CurrencyCode>USD</CurrencyCode>
            <MonetaryValue>1</MonetaryValue>
          </InvoiceLineTotal>
          <ShipmentWeight>
            <UnitOfMeasurement>
              <Code>$this->weightUnits</Code>
              <Description>Pounds</Description>
            </UnitOfMeasurement>
            <Weight>$packageWeight</Weight>
          </ShipmentWeight>
        </TimeInTransitRequest>";
        // This is the PRODUCTION server -- use when your testing is finished.
        // https://onlinetools.ups.com/ups.app/xml/TimeInTransit
        //This is the TESTING SERVER.
        //https://wwwcie.ups.com/ups.app/xml/TimeInTransit
        $ch = curl_init("https://onlinetools.ups.com/ups.app/xml/TimeInTransit");
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_TIMEOUT, 60);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
        $result=curl_exec ($ch);
        //echo '<!-- '. $result. ' -->'; // THIS LINE IS FOR DEBUG PURPOSES ONLY-IT WILL SHOW IN HTML COMMENTS
        $data = strstr($result, '<?');
        $xml = simplexml_load_string($data);
        $json = json_encode($xml);
        $dataArray = json_decode($json,TRUE);

错误响应: [错误] => 数组 ( [错误严重性] => 硬 [错误代码] => 270032 [ErrorDescription] => 目的地邮政编码和城市无效 )

php magento ups ups-api
1个回答
0
投票

我对 TimeInTransit 也有同样的问题,但在 UPS 状态页面或变更日志中找不到任何内容来解释它。 文件明确指出城市是可选的。 我的代码已经运行了很多年,只在请求中指定了出发地邮政编码、目的地邮政编码和重量。 起初,我收到错误“TimeInTransit 中的始发地邮政编码无效”,我通过在 XML 中的PoliticalDivision2 中指定始发城市解决了该问题。 但后来我收到报告称它仍然不适用于某些地址(但不是全部)。 对于这些请求,我收到:“目的地邮政编码和 CityFailure 无效。” 一旦我更新了代码以在PoliticalDivision2中指定目的地城市,它就起作用了。

© www.soinside.com 2019 - 2024. All rights reserved.