Antworten:
BEARBEITEN: Denken Sie daran, dass Magento dieses Problem mit dem SUPEE-6237-Patch am 18. Juni 2015 behoben hat. Es ist wahrscheinlich nur einfacher, den Patch an dieser Stelle zu installieren, um das Problem zu beheben.
Ich hatte ein Problem, bei dem die Rate ohne den Methodennamen als 0,00 USD angezeigt wurde. Das Problem scheint mit der USPS-Zinsänderung zum 31. Mai 2015 zusammenzufallen:
31. Mai 2015 USPS Web Tools implementiert Änderungen und zusätzliche Funktionen für die US Postal Service APIs. Die folgenden Änderungen können sich insbesondere auf Versandverfahren auswirken:
- Ursprungs-Postleitzahl für Priority Mail International nach Kanada erforderlich
- Geänderte Sonderleistungen
- Geänderte Service-IDs
- Die verfügbaren Mail-Klassen für die Warenrücksendung wurden geändert
Die erste verursachte Priority Mail International gibt den folgenden Fehler zurück:
<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>
Die Lösung bestand darin, die Datei zu kopieren: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
nachapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php
Ich habe dann den folgenden Code in Zeile 394 eingefügt:
if($r->getDestCountryId()=='CA'){
$package->addChild('OriginZip', $r->getOrigPostal());
}
Dies hat das Problem für mich behoben.
Bearbeiten: Dies funktioniert nur, wenn Sie Ihre 5-stellige Postleitzahl im Versandursprung eingegeben haben.
Patch SUPEE-6237 behobenes Problem für mich. Die Änderungen in SUPEE-6237 sind:
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
und
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;
hoffe das hilft jemandem.
Obwohl es sich bei dem ursprünglichen Beitrag um Magento v1.9 handelte, wollte ich dies für andere veröffentlichen, die das gleiche Problem mit Magento v2 haben, da es immer noch besteht.
Das Update erfordert das Hinzufügen der folgenden Zeilen direkt vor der Zeile $api = 'IntlRateV2';
in der Datei vendor/magento/module-usps/Model/Carrier.php
.
$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());
Die Pull-Anfrage zu diesem magento2-Problem finden Sie hier: https://github.com/magento/magento2/pull/8041