You can try my recently created extension
app\etc\modules\Sipping_Disable.xml
<?xml version="1.0"?>
<config>
<modules>
<Sipping_Disable>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</Sipping_Disable>
</modules>
</config>
app\code\local\Sipping\Disable\etc\config.xml
<?xml version="1.0"?>
<config>
<modules>
<Sipping_Disable>
<version>0.1.0</version>
</Sipping_Disable>
</modules>
<global>
<models>
<disable>
<class>Sipping_Disable_Model</class>
<resourceModel>disable_mysql4</resourceModel>
</disable>
<shipping>
<rewrite>
<shipping>Sipping_Disable_Model_Shipping_Shipping</shipping>
</rewrite>
</shipping>
</models>
</global>
</config>
app\code\local\Sipping\Disable\Model\Shipping\Shipping.php
<?php
class Sipping_Disable_Model_Shipping_Shipping extends Mage_Shipping_Model_Shipping
{
public function collectCarrierRates($carrierCode, $request)
{
if (!$this->_isAvailable($carrierCode, $request)) {
return $this;
}
return parent::collectCarrierRates($carrierCode, $request);
}
/**
* @param string $carrierCode
* @param Varien_Object $request
* @return bool
*/
protected function _isAvailable($carrierCode, $request)
{
/* you can customize code here according to your need */
$regionCode = $request->getDestRegionCode();
$cart = Mage::getSingleton('checkout/session')->getQuote();
$ZipCodes = array('12345','54454'); //all zip codes put here where you want disable shipping
$shippingAddress = $cart->getShippingAddress();
$zip = $shippingAddress->getPostcode();
switch ($carrierCode) {
case 'youshippingCode': // put your shipping code
if (in_array($zip ,$ZipCodes)) {
return false;
}
break;
}
return true;
}
}