回答:
編集:Magentoは2015年6月18日にSUPEE-6237パッチでこの問題を解決したことを覚えておいてください。おそらくこの時点でパッチをインストールするだけで問題を解決できます。
メソッド名なしでレートが0.00ドルと表示される問題がありました。この問題は、2015年5月31日のUSPSレートの変更と一致するようです。
2015年5月31日USPS Webツールは、米国郵政公社APIの変更と追加機能を実装します。以下の変更は、特に出荷システムに影響を与える可能性があります。
- カナダへの優先郵便インターナショナルに必要なオリジン郵便番号
- 変更された特別サービス
- 変更されたサービスID
- Merchandise Return Servicesで利用可能な変更済みメールクラス
最初に発生したPriority Mail Internationalは、次のエラーを返します。
<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/pull/8041