USPS 1.9.1.1 Thư ưu tiên quốc tế bị hỏng


15

Nếu bạn chọn Priority Mail International và ước tính đến Canada, Phí xử lý sẽ xuất hiện dưới dạng tùy chọn để chọn vận chuyển.

Làm việc xung quanh là bỏ chọn "Thư ưu tiên quốc tế"

Câu trả lời:


13

EDIT: Hãy nhớ rằng Magento đã giải quyết vấn đề này bằng bản vá SUPEE-6237 của họ vào ngày 18 tháng 6 năm 2015. Có lẽ việc cài đặt bản vá vào thời điểm này có thể dễ dàng hơn để giải quyết vấn đề.

Tôi gặp vấn đề khi tỷ lệ hiển thị là $ 0,00 mà không có tên phương thức. Vấn đề dường như trùng với thay đổi tỷ lệ USPS kể từ ngày 31 tháng 5 năm 2015:

Ngày 31 tháng 5 năm 2015 Công cụ web USPS sẽ triển khai các sửa đổi và các tính năng bổ sung cho API Dịch vụ Bưu chính của Hoa Kỳ. Những thay đổi sau đây có thể đặc biệt ảnh hưởng đến các hệ thống vận chuyển:

  • Mã ZIP xuất xứ cần thiết cho Thư ưu tiên quốc tế đến Canada
  • Sửa đổi dịch vụ đặc biệt
  • ID dịch vụ đã sửa đổi
  • Các lớp thư có sẵn đã sửa đổi cho Dịch vụ trả hàng

Thư ưu tiên gây ra đầu tiên quốc tế trả về lỗi sau:

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

Giải pháp là để sao chép các tập tin: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.phpđếnapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php

Sau đó tôi đã chèn đoạn mã sau vào dòng 394:

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

Điều này đã khắc phục vấn đề cho tôi.

Chỉnh sửa: Điều này sẽ chỉ hoạt động nếu bạn đã nhập mã zip gồm 5 chữ số trong nguồn gốc vận chuyển.


Tôi không nhận ra đó là một yêu cầu đại diện, nhưng OP có một câu hỏi tiếp theo ở đây mà anh ấy nói rằng anh ấy không thể đưa ra nhận xét cho câu trả lời của bạn: magento.stackexchange.com/questions/69946/
Mike

1
FYI, khi chỉnh sửa tệp Usps.php, tôi đã đặt mã sau "$ gói-> addChild ('Girth', $ girth);" và trước khi đóng khung xoăn. Đây là trong phần quốc tế của "khác".
Rob Mangiafico

+ Điều này đã giải quyết vấn đề cho tôi Magento 1.9.1
Jason McCreary

Tôi có thể nhận trợ giúp về thư USPS Media -> magento.stackexchange.com/q/227667/57334
zus

2

Bản vá lỗi SUPEE-6237 cho tôi. những thay đổi trong SUPEE-6237 là:

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;

Hy vọng điều này sẽ giúp ai đó.


0

Mặc dù bài đăng gốc là về Magento v1.9, tôi muốn đăng bài này cho những người khác đang gặp vấn đề tương tự với Magento v2, vì nó vẫn tồn tại.

Việc sửa chữa yêu cầu thêm các dòng sau ngay trước dòng $api = 'IntlRateV2';trong tệp vendor/magento/module-usps/Model/Carrier.php.

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

Bạn có thể xem yêu cầu kéo về vấn đề magento2 này tại đây: https://github.com/magento/magento2/pull/8041

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.