जवाबों:
संपादित करें: ध्यान रखें कि Magento ने इस मुद्दे को 18 जून 2015 को अपने SUPEE-6237 पैच के साथ हल किया। समस्या को हल करने के लिए इस बिंदु पर पैच को स्थापित करना शायद आसान है।
मुझे एक समस्या थी जहां विधि नाम के बिना दर $ 0.00 के रूप में दिखाई दे रही थी। यह समस्या 31 मई, 2015 तक यूएसपीएस दर में बदलाव के साथ मेल खाती है:
31 मई, 2015 यूएसपीएस वेब टूल्स यूएस पोस्टल सर्विस एपीआई में संशोधनों और अतिरिक्त सुविधाओं को लागू करेंगे। निम्नलिखित परिवर्तन शिपिंग सिस्टम को विशेष रूप से प्रभावित कर सकते हैं:
- कनाडा के लिए प्राथमिकता मेल इंटरनेशनल के लिए मूल ज़िप कोड आवश्यक है
- संशोधित विशेष सेवाएं
- संशोधित सेवा आई.डी.
- व्यापारिक माल वापसी सेवाओं के लिए संशोधित उपलब्ध मेल क्लासेस
पहला कारण प्राथमिकता मेल अंतर्राष्ट्रीय निम्न त्रुटि देता है:
<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-अंकीय ज़िप कोड शिपिंग मूल में दर्ज हो।
पैच 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;
आशा है कि यह किसी की मदद करेगा।
हालांकि मूल पोस्ट 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/pag/241