【发布时间】:2015-11-30 22:22:10
【问题描述】:
我有一家 magento 商店,需要能够将订单运送到库拉索岛。默认情况下,这在 Magento 中被分组为荷属安的列斯群岛,但是,我发现即使将订单设置为此,即使启用了国际运输,我也无法从 USPS 获得正确的运费。
我已通过 en.xml 文件和管理员将国家/地区添加到 magento。我已将其启用为我们可以通过 USPS 运送方式运送到的国家,并在 magento 的 directory_country 表中启用。
调用 USPS API 时,我将此视为请求和结果:
2015-11-30T22:08:15+00:00 DEBUG (7): Array
(
[request] => <?xml version="1.0" encoding="UTF-8"?>
<IntlRateV2Request USERID="725CIGAR7315"><Revision>2</Revision><Package ID="0"><Pounds>0</Pounds><Ounces>0.8</Ounces><MailType>All</MailType><ValueOfContents>1</ValueOfContents><Country/><Container>VARIABLE</Container><Size>REGULAR</Size><Width/><Length/><Height/><Girth/></Package></IntlRateV2Request>
[result] => <?xml version="1.0" encoding="UTF-8"?>
<IntlRateV2Response><Package ID="0"><Error><Number>-2147219080</Number><Source>;IntlRateV2.UnpackIntlRateV2Node</Source><Description>Missing value for Country.</Description><HelpFile/><HelpContext/></Error></Package></IntlRateV2Response>
[__pid] => 2786
)
请注意请求中的空 Country 标签。我已经挖掘了代码,并通过 app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php 文件查看应该在哪里设置国家/地区。
当然,我必须覆盖我已经完成的这个文件(不是直接编辑核心 magento),但我仍然无法在发送时填充 Country 标签。我将此添加到 setRequest 函数中:
Mage::log("Destination Country: ");
Mage::log($request->getDestCountryId());
if ($request->getDestCountryId()) {
$destCountry = $request->getDestCountryId();
} else {
$destCountry = self::USA_COUNTRY_ID;
}
$r->setDestCountryId($destCountry);
根据我的数据库设置,这会在我的日志“CW”中输出,这是交易的正确国家代码。那么给了什么?为什么不将国家代码传递给 API,以便我获得一些定价?
我认为这不是一个新问题,而且我可能正在研究一些非常明显的问题,所以我希望有人能指出我正确的方向,因为我目前“被难住”了。
提前致谢!
【问题讨论】: