USPS 1.9.1.1 Correo prioritario internacional roto


15

Si selecciona Priority Mail International y hace una estimación a Canadá, la tarifa de manejo aparece como una opción para seleccionar para el envío.

Evitar es anular la selección de "Priority Mail International"

Respuestas:


13

EDITAR: tenga en cuenta que Magento resolvió este problema con su parche SUPEE-6237 el 18 de junio de 2015. Probablemente sea más fácil instalar el parche en este punto para resolver el problema.

Tuve un problema donde la tasa se mostraba como $ 0.00 sin el nombre del método. El problema parece coincidir con el cambio en la tasa de USPS al 31 de mayo de 2015:

31 de mayo de 2015 USPS Web Tools implementará modificaciones y características adicionales a las API del Servicio Postal de EE. UU. Los siguientes cambios pueden afectar especialmente los sistemas de envío:

  • Se requiere el código postal de origen para Priority Mail International a Canadá
  • Servicios especiales modificados
  • ID de servicio modificado
  • Clases de correo disponibles modificadas para los servicios de devolución de mercancías

El primer correo internacional prioritario causado devuelve el siguiente error:

<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 solución fue copiar el archivo: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.phpaapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php

Luego inserté el siguiente código en la línea 394:

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

Esto solucionó el problema para mí.

Editar: Esto solo funcionará si tiene su código postal de 5 dígitos ingresado en el origen del envío.


No me di cuenta de que era un requisito de representación, pero el OP tiene una pregunta de seguimiento aquí que dijo que no podía hacer un comentario a su respuesta: magento.stackexchange.com/questions/69946/…
Mike

1
Para su información, al editar el archivo Usps.php, coloqué el código después de "$ package-> addChild ('Girth', $ girth);" y antes del cierre del soporte rizado. Esto se encuentra en la sección Internacional de "else".
Rob Mangiafico

+ Esto resolvió el problema para mí Magento 1.9.1
Jason McCreary

¿Puedo obtener ayuda sobre el correo USPS Media -> magento.stackexchange.com/q/227667/57334
zus

2

El parche SUPEE-6237 solucionó el problema para mí. Los cambios en SUPEE-6237 son:

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

y

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;

Espero que esto ayude a alguien.


0

Aunque la publicación original era sobre Magento v1.9, quería publicar esto para otras personas que están experimentando el mismo problema con Magento v2, ya que todavía existe.

La solución requiere agregar las siguientes líneas justo antes de la línea $api = 'IntlRateV2';en el archivo vendor/magento/module-usps/Model/Carrier.php.

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

Puede ver la solicitud de extracción sobre este problema de magento2 aquí: https://github.com/magento/magento2/pull/8041

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.