USPS 1.9.1.1 Приоритетная международная почта сломана


15

Если вы выберете Priority Mail International и укажете смету в Канаду, плата за обработку будет предложена для доставки.

Обходной путь - отменить выбор «Приоритет Мэйл Интернешнл»

Ответы:


13

РЕДАКТИРОВАТЬ: Имейте в виду, что Magento решила эту проблему с помощью своего патча SUPEE-6237 от 18 июня 2015 года. Вероятно, в данный момент установить патч проще, чтобы решить эту проблему.

У меня была проблема, когда курс показывал 0,00 $ без названия метода. Эта проблема, похоже, совпадает с изменением ставки USPS по состоянию на 31 мая 2015 года:

31 мая 2015 г. USPS Web Tools будет внедрять модификации и дополнительные функции для API почтовой службы США. Следующие изменения могут особенно повлиять на системы доставки:

  • Для Приоритетной Почты Международный в Канаду требуется исходный почтовый индекс
  • Модифицированные спецслужбы
  • Модифицированные идентификаторы услуг
  • Изменены доступные классы почты для Служб возврата товаров

Первая вызванная Приоритетная почта международная возвращает следующую ошибку:

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

Решение было скопировать файл: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.phpвapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php

Затем я вставил следующий код в строку 394:

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

Это исправило проблему для меня.

Редактировать: это будет работать только в том случае, если в источнике доставки введен 5-значный почтовый индекс.


Я не осознавал, что это требовалось к представителю, но у ОП есть дополнительный вопрос, который он сказал, что не может добавить комментарий к вашему ответу: magento.stackexchange.com/questions/69946/…
Майк

1
К вашему сведению, при редактировании файла Usps.php я поместил код после «$ package-> addChild ('Girth', $ girth);" и перед закрывающей фигурной скобкой. Это в международном разделе "еще".
Роб Мангиафико

+ Это решило проблему для меня Magento 1.9.1
Джейсон МакКрири

Могу ли я получить помощь по поводу почты USPS Media -> magento.stackexchange.com/q/227667/57334
zus

2

Патч SUPEE-6237 исправил проблему для меня. изменения в SUPEE-6237:

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

и

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;

надеюсь, это поможет кому-то.


0

Несмотря на то, что оригинальное сообщение было о Magento v1.9, я хотел опубликовать это для тех, кто испытывает ту же проблему с Magento v2, поскольку она все еще существует.

Исправление требует добавления следующих строк непосредственно перед строкой $api = 'IntlRateV2';в файле vendor/magento/module-usps/Model/Carrier.php.

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

Вы можете увидеть запрос на удаление по этой проблеме magento2 здесь: https://github.com/magento/magento2/pull/8041.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.