USPS 1.9.1.1 Міжнародний розірваний пріоритет


15

Якщо ви виберете пріоритетну міжнародну пошту та зробите кошторис до Канади, плата за обробку може бути обрана як варіант для доставки.

Потрібно вирішити, щоб скасувати вибір "Priority Mail International"

Відповіді:


13

EDIT: Майте на увазі, що Magento вирішив цю проблему своїм патчем SUPEE-6237 18 червня 2015 року. Напевно, просто простіше встановити патч для вирішення проблеми.

У мене виникла проблема, коли ця ставка відображалася як 0,00 доларів без назви методу. Здається, проблема збігається зі зміною курсу США на 31 травня 2015 року:

31 травня 2015 року веб-інструменти USPS впроваджуватимуть модифікації та додаткові функції до 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
FYI, редагуючи файл Usps.php, я помістив код після "$ package-> addChild (" обхват ", $ обхват);" і перед закриттям фігурної дужки. Про це йдеться в розділі "Інше" у Міжнародному розділі.
Роб Манґафіфіко

+ Це вирішило проблему для мене Magento 1.9.1
Jason McCreary

Чи можу я отримати допомогу щодо пошти 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.