<?php
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//require_once("Mage.php");
ob_start();
require_once(__DIR__ . '/app/Mage.php');
umask(0);
ini_set('display_errors',true);
ini_set('memory_limit', '1024M');
Mage::app()->loadArea('frontend');
function getShippingEstimate($productId,$productQty,$countryId,$postcode ) {
// Change below line based on your store_view_code.
$quote = Mage::getModel('sales/quote')->setStoreId(Mage::app()->getStore('{store_view_code}')->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('13541','5',"IN","642001"));
echo "</pre>";
?>
If you use multiple store view than change below line based on your store_view_code.
$quote = Mage::getModel('sales/quote')->setStoreId(Mage::app()->getStore('{store_view_code}')->getId());