Answers:
编辑:请记住,Magento于2015年6月18日通过其SUPEE-6237补丁解决了此问题。此时安装补丁可能更容易解决问题。
我有一个问题,其中的汇率显示为$ 0.00,而没有方法名称。该问题似乎与2015年5月31日的USPS费率变化同时发生:
2015年5月31日,USPS Web工具将对美国邮政服务API实施修改和附加功能。以下更改可能会特别影响运输系统:
- 优先邮件国际到加拿大需要的原始邮政编码
- 修改后的特殊服务
- 修改后的服务ID
- 修改了退货服务的可用邮件类别
第一个导致Priority国际邮件返回以下错误:
<ServiceErrors>
<ServiceError>
<Id>50050</Id>
<Description>The Origin ZIP Code and the Destination Postal Code is required for Priority Mail International when mailing to Canada.</Description>
</ServiceError>
</ServiceErrors>
解决方法是将文件复制app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
到app/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php
然后,我将以下代码插入394行:
if($r->getDestCountryId()=='CA'){
$package->addChild('OriginZip', $r->getOrigPostal());
}
这为我解决了这个问题。
编辑:仅当在运输来源中输入5位邮政编码时,此方法才有效。
补丁SUPEE-6237已为我修复。SUPEE-6237中的更改是:
app/code/core/Mage/Usa/Model/Shipping/Carrier/Abstract.php
@@ -442,6 +442,17 @@ abstract class Mage_Usa_Model_Shipping_Carrier_Abstract extends Mage_Shipping_Mo
}
/**
+ * Check is Canada
+ *
+ * @param string $countryId
+ * @return boolean
+ */
+ protected function _isCanada($countryId)
+ {
+ return $countryId == 'CA';
+ }
+
+ /**
* Check whether girth is allowed for the carrier
*
* @param null|string $countyDest
和
app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
@@ -392,7 +392,10 @@ class Mage_Usa_Model_Shipping_Carrier_Usps
$package->addChild('Height', $height);
$package->addChild('Girth', $girth);
-
+ if ($this->_isCanada($r->getDestCountryId())) {
+ //only 5 chars available
+ $package->addChild('OriginZip', substr($r->getOrigPostal(), 0, 5));
+ }
$api = 'IntlRateV2';
}
$request = $xml->asXML();
@@ -477,6 +480,9 @@ class Mage_Usa_Model_Shipping_Carrier_Usps
else {
if (is_object($xml->Package) && is_object($xml->Package->Service)) {
foreach ($xml->Package->Service as $service) {
+ if ($service->ServiceErrors->count()) {
+ continue;
+ }
$serviceName = $this->_filterServiceName((string)$service->SvcDescription);
$serviceCode = 'INT_' . (string)$service->attributes()->ID;
$serviceCodeToActualNameMap[$serviceCode] = $serviceName;
希望这对某人有所帮助。
即使原始帖子是关于Magento v1.9的,我也想将其发布给其他与Magento v2遇到相同问题的人,因为它仍然存在。
此修复程序要求$api = 'IntlRateV2';
在文件中的行之前添加以下行vendor/magento/module-usps/Model/Carrier.php
。
$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());
您可以在此处查看有关此magento2问题的请求请求:https : //github.com/magento/magento2/pull/8041