USPS 1.9.1.1 Priority Mail International Broken


15

Si vous sélectionnez Priority Mail International et effectuez une estimation pour le Canada, les frais de traitement sont proposés en option pour la sélection pour l'expédition.

La solution consiste à désélectionner «Priority Mail International»

Réponses:


13

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.


Je ne savais pas que c'était une question d'exigence de représentant, mais le PO a une question de suivi ici qu'il a dit qu'il ne pouvait pas ajouter de
Mike

1
Pour info, lors de l'édition du fichier Usps.php, j'ai placé le code après "$ package-> addChild ('Girth', $ girth);" et avant la fermeture du crochet. C'est dans la section internationale du "else".
Rob Mangiafico

+ Cela a résolu le problème pour moi Magento 1.9.1
Jason McCreary

Puis-je obtenir de l'aide sur USPS Media mail -> magento.stackexchange.com/q/227667/57334
zus

2

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.


0

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.