Respostas:
EDIT: Lembre-se de que o Magento resolveu esse problema com o patch SUPEE-6237 em 18 de junho de 2015. Provavelmente é apenas mais fácil instalar o patch neste momento para resolvê-lo.
Eu tive um problema em que a taxa estava aparecendo como US $ 0,00 sem o nome do método. O problema parece coincidir com a alteração da taxa do USPS em 31 de maio de 2015:
31 de maio de 2015 As USPS Web Tools implementarão modificações e recursos adicionais nas APIs do Serviço Postal dos EUA. As seguintes alterações podem afetar especialmente os sistemas de remessa:
- CEP de origem necessário para o Priority Mail International no Canadá
- Serviços especiais modificados
- IDs de serviço modificados
- Classes de correio disponíveis modificadas para Serviços de devolução de mercadorias
A primeira mensagem internacional de correio prioritário causada retorna o seguinte erro:
<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>
A solução foi copiar o arquivo: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
paraapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php
Em seguida, inseri o seguinte código na linha 394:
if($r->getDestCountryId()=='CA'){
$package->addChild('OriginZip', $r->getOrigPostal());
}
Isso corrigiu o problema para mim.
Editar: Isso só funcionará se você tiver inserido seu CEP de 5 dígitos na origem da remessa.
problema corrigido do patch SUPEE-6237 para mim. as alterações no SUPEE-6237 são:
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
e
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;
espero que isso ajude alguém.
Embora a postagem original fosse sobre o Magento v1.9, eu queria postar isso para outras pessoas que estão enfrentando o mesmo problema com o Magento v2, pois ele ainda existe.
A correção requer a adição das seguintes linhas antes da linha $api = 'IntlRateV2';
no arquivo vendor/magento/module-usps/Model/Carrier.php
.
$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());
Você pode ver a solicitação de recebimento sobre esse problema do magento2 aqui: https://github.com/magento/magento2/pull/8041