USPS 1.9.1.1 Przesyłka priorytetowa międzynarodowa uszkodzona


15

Jeśli wybierzesz Priority Mail International i dokonasz oszacowania do Kanady, opłata manipulacyjna pojawi się jako opcja wyboru do wysyłki.

Obejściem jest odznaczenie opcji „Priority Mail International”

Odpowiedzi:


13

EDYCJA: Pamiętaj, że Magento rozwiązało ten problem z łatką SUPEE-6237 w dniu 18 czerwca 2015 r. Prawdopodobnie po prostu łatwiej jest zainstalować łatkę w tym momencie, aby rozwiązać problem.

Miałem problem, gdy stawka pokazywała się jako 0,00 $ bez nazwy metody. Wydaje się, że problem pokrywa się ze zmianą stawki USPS na dzień 31 maja 2015 r .:

31 maja 2015 Narzędzia sieciowe USPS będą wdrażać modyfikacje i dodatkowe funkcje interfejsów API usług pocztowych w USA. Następujące zmiany mogą szczególnie wpłynąć na systemy wysyłki:

  • Kod pocztowy pochodzenia jest wymagany do Priority Mail International do Kanady
  • Zmodyfikowane usługi specjalne
  • Zmodyfikowane identyfikatory usług
  • Zmodyfikowano dostępne klasy poczty dla usług zwrotu towarów

Pierwsza spowodowana przesyłka międzynarodowa priorytetowa zwraca następujący błąd:

<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>

Rozwiązaniem było skopiowanie pliku: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.phpdoapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php

Następnie wstawiłem następujący kod do wiersza 394:

if($r->getDestCountryId()=='CA'){
    $package->addChild('OriginZip', $r->getOrigPostal());
}

To rozwiązało problem.

Edycja: Działa to tylko wtedy, gdy 5-cyfrowy kod pocztowy jest wprowadzony w miejscu wysyłki.


Nie zdawałem sobie sprawy, że to wymaganie dotyczące powtórzeń, ale OP ma pytanie uzupełniające, które powiedział, że nie może skomentować twojej odpowiedzi: magento.stackexchange.com/questions/69946/…
Mike

1
Do Twojej wiadomości, edytując plik Usps.php, umieściłem kod po „$ package-> addChild ('Girth', $ girth);” i przed zamykającym nawiasami klamrowymi. To jest w części międzynarodowej „else”.
Rob Mangiafico

+ To rozwiązało problem dla mnie Magento 1.9.1
Jason McCreary

Czy mogę uzyskać pomoc na temat poczty USPS Media -> magento.stackexchange.com/q/227667/57334
ZUS

2

łatka SUPEE-6237 naprawiono problem dla mnie. zmiany w SUPEE-6237 są:

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

i

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;

mam nadzieję, że to pomoże komuś.


0

Mimo że oryginalny post dotyczył Magento v1.9, chciałem opublikować to dla innych osób, które mają ten sam problem z Magento v2, ponieważ nadal istnieje.

Poprawka wymaga dodania następujących wierszy tuż przed wierszem $api = 'IntlRateV2';w pliku vendor/magento/module-usps/Model/Carrier.php.

$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());

Możesz zobaczyć żądanie ściągnięcia na temat tego problemu z magento2 tutaj: https://github.com/magento/magento2/pull/8041

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.