Risposte:
EDIT: tieni presente che Magento ha risolto il problema con la patch SUPEE-6237 il 18 giugno 2015. Probabilmente è più semplice installare la patch a questo punto per risolvere il problema.
Ho avuto un problema a causa del quale la tariffa si presentava a $ 0,00 senza il nome del metodo. Il problema sembra coincidere con la variazione del tasso USPS al 31 maggio 2015:
31 maggio 2015 USPS Web Tools implementerà modifiche e funzionalità aggiuntive alle API del servizio postale degli Stati Uniti. Le seguenti modifiche possono influire in particolare sui sistemi di spedizione:
- Codice postale di origine richiesto per Priority Mail International in Canada
- Servizi speciali modificati
- ID servizio modificati
- Classi di posta disponibili modificate per i servizi di restituzione della merce
La prima posta prioritaria internazionale causata restituisce il seguente errore:
<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>
La soluzione era copiare il file: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
inapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php
Ho quindi inserito il seguente codice nella riga 394:
if($r->getDestCountryId()=='CA'){
$package->addChild('OriginZip', $r->getOrigPostal());
}
Ciò ha risolto il problema per me.
Modifica: funzionerà solo se il codice postale di 5 cifre è stato inserito nell'origine di spedizione.
patch SUPEE-6237 problema risolto per me. le modifiche in SUPEE-6237 sono:
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;
spero che questo aiuti qualcuno.
Anche se il post originale riguardava Magento v1.9, volevo pubblicarlo per altri che stanno riscontrando lo stesso problema con Magento v2, poiché esiste ancora.
La correzione richiede l'aggiunta delle seguenti righe proprio prima della riga $api = 'IntlRateV2';
nel file vendor/magento/module-usps/Model/Carrier.php
.
$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());
Puoi vedere la richiesta pull su questo problema di magento2 qui: https://github.com/magento/magento2/pull/8041