我有一些代码位于Magento旁边的文件夹中。我正在进行Mage.php
做一些事情。我希望能够在我的代码中获取某种运费报价。我一直在寻找网络,我正在努力让它变得更加明智。
请有人告诉我实现这一目标的最有效方法吗?
我只有这些信息可以传递来获取费率:
Product ID eg, 123
Quantity eg, 1020
Country Code eg, GB
Zip code if needed eg, SY12 6AX
我想了解以下信息:
Rate eg, £2.50
Title eg, Royal Mail Special Delivery
ID eg, 6
然后我想用我的代码中的选项填充一个单选列表,以便可以选择它们。
非常感谢
答案 0 :(得分:3)
对于运费报价,您需要实际报价为现有和必要的地址数据(国家,地区,邮政编码)填写到帐单和送货地址,然后您可以询问费率:
$quote()->getShippingAddress()->getGroupedAllShippingRates();
请注意,这取决于运输方式,事实上,如果它们甚至允许您在报价已计算或即将计算时给出费率
答案 1 :(得分:3)
该功能将返回特定产品,数量,国家/地区,邮政编码的所有可用运费。该代码不包括免费送货,可以通过移除if($_rate->getPrice() > 0) { ...
<?php
require_once("Mage.php");
umask(0);
ini_set('display_errors',true); Mage::setIsDeveloperMode(true);
Mage::app();
function getShippingEstimate($productId,$productQty,$countryId,$postcode ) {
$quote = Mage::getModel('sales/quote')->setStoreId(Mage::app()->getStore('default')->getId());
$_product = Mage::getModel('catalog/product')->load($productId);
$_product->getStockItem()->setUseConfigManageStock(false);
$_product->getStockItem()->setManageStock(false);
$quote->addProduct($_product, $productQty);
$quote->getShippingAddress()->setCountryId($countryId)->setPostcode($postcode);
$quote->getShippingAddress()->collectTotals();
$quote->getShippingAddress()->setCollectShippingRates(true);
$quote->getShippingAddress()->collectShippingRates();
$_rates = $quote->getShippingAddress()->getShippingRatesCollection();
$shippingRates = array();
foreach ($_rates as $_rate):
if($_rate->getPrice() > 0) {
$shippingRates[] = array("Title" => $_rate->getMethodTitle(), "Price" => $_rate->getPrice());
}
endforeach;
return $shippingRates;
}
echo "<pre>";
// product id, quantity, country, postcode
print_r(getShippingEstimate(1098,100,"GB","SY21 7NQ"));
echo "</pre>";
这可以放在这样的下拉列表中:
$results = getShippingEstimate(1098,100000,"GB","SY21 7NQ");
$count = -1;
echo "<select>";
foreach ($results as $result):
$count++;
?>
<option value="<?=$count?>"><?=$result["Title"]." - £".$result["Price"]?></option>
<?php
endforeach;
echo "</select>"