Jawaban:
EDIT: Perlu diingat Magento menyelesaikan masalah ini dengan tambalan SUPEE-6237 pada 18 Juni 2015. Mungkin saja lebih mudah untuk menginstal tambalan pada titik ini untuk menyelesaikan masalah.
Saya punya masalah di mana nilai tukar ditampilkan sebagai $ 0,00 tanpa nama metode. Masalahnya tampaknya bertepatan dengan perubahan tarif USPS pada 31 Mei 2015:
31 Mei 2015 USPS Web Tools akan menerapkan modifikasi dan fitur tambahan ke API Layanan Pos AS. Perubahan berikut ini dapat berdampak pada sistem pengiriman:
- Kode ZIP Asal diperlukan untuk Priority Mail International ke Kanada
- Layanan khusus yang dimodifikasi
- ID layanan yang dimodifikasi
- Modifikasi kelas surat yang tersedia untuk Layanan Pengembalian Barang Dagangan
Internasional pertama yang disebabkan mail Internasional mengembalikan kesalahan berikut:
<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>
Solusinya adalah menyalin file: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
keapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php
Saya kemudian memasukkan kode berikut ke baris 394:
if($r->getDestCountryId()=='CA'){
$package->addChild('OriginZip', $r->getOrigPostal());
}
Ini memperbaiki masalah bagi saya.
Sunting: Ini hanya akan berfungsi jika Anda memasukkan kode pos 5 digit di tempat pengiriman.
menambal SUPEE-6237 masalah tetap bagi saya. perubahan dalam SUPEE-6237 adalah:
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
dan
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;
semoga ini membantu seseorang.
Meskipun posting asli tentang Magento v1.9, saya ingin memposting ini untuk orang lain yang mengalami masalah yang sama dengan Magento v2, karena masih ada.
Perbaikan memerlukan penambahan baris berikut tepat sebelum baris $api = 'IntlRateV2';
dalam file vendor/magento/module-usps/Model/Carrier.php
.
$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());
Anda dapat melihat permintaan tarik tentang masalah magento2 ini di sini: https://github.com/magento/magento2/pull/8041