Réponses:
EDIT: Gardez à l'esprit que Magento a résolu ce problème avec son correctif SUPEE-6237 le 18 juin 2015. Il est probablement plus facile d'installer le correctif à ce stade pour résoudre le problème.
J'ai eu un problème où le taux était de 0,00 $ sans le nom de la méthode. Le problème semble coïncider avec le changement de taux USPS au 31 mai 2015:
Le 31 mai 2015, les outils Web USPS implémenteront des modifications et des fonctionnalités supplémentaires aux API du service postal américain. Les modifications suivantes peuvent avoir un impact particulier sur les systèmes d'expédition:
- Code postal d'origine requis pour Priority Mail International au Canada
- Services spéciaux modifiés
- ID de service modifiés
- Classes de courrier disponibles modifiées pour les services de retour de marchandise
Le premier courrier prioritaire provoqué international renvoie l'erreur suivante:
<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 solution était de copier le fichier: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
versapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php
J'ai ensuite inséré le code suivant à la ligne 394:
if($r->getDestCountryId()=='CA'){
$package->addChild('OriginZip', $r->getOrigPostal());
}
Cela a résolu le problème pour moi.
Modifier: cela ne fonctionnera que si vous avez entré votre code postal à 5 chiffres dans l'origine d'expédition.
correction du problème SUPEE-6237 corrigé pour moi. les changements dans SUPEE-6237 sont:
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
et
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;
espérons que cela aide quelqu'un.
Même si le message d'origine concernait Magento v1.9, je voulais le publier pour ceux qui rencontrent le même problème avec Magento v2, car il existe toujours.
Le correctif nécessite l'ajout des lignes suivantes juste avant la ligne $api = 'IntlRateV2';
du fichier vendor/magento/module-usps/Model/Carrier.php
.
$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());
Vous pouvez voir la demande d'extraction concernant ce problème magento2 ici: https://github.com/magento/magento2/pull/8041