USPS 1.9.1.1 Priority Mail International Broken

15

Wenn Sie Priority Mail International auswählen und eine Schätzung für Kanada vornehmen, wird die Bearbeitungsgebühr als Option für den Versand angezeigt.

Abhilfe besteht darin, "Priority Mail International" abzuwählen

Patrick
quelle

Antworten:

13

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.phpnachapp/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.

Mononatriumgunnar
quelle
Ich wusste nicht, dass es sich um eine Rep-Anforderung handelt, aber das OP hat hier eine Folgefrage, die er nicht beantworten konnte: magento.stackexchange.com/questions/69946/…
Mike
1
Zu Ihrer Information, beim Bearbeiten der Datei Usps.php habe ich den Code nach "$ package-> addChild ('Girth', $ girth);" und vor der schließenden geschweiften Klammer. Dies ist in der internationalen Sektion des "else".
Rob Mangiafico
+ Dies löste das Problem für mich Magento 1.9.1
Jason McCreary
Kann ich Hilfe zu USPS Media erhalten ?
zus
2

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.

Sohan
quelle
0

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

Jaywilliams
quelle