Respuestas:
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.php
aapp/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.
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.
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