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