0
以下是一个扩展的observer.php文件,该文件限制基于结帐页上的Pincode的货到付款付款方式。基于邮政编码Magento 1.9的货到付款
此扩展与Magento内置的货到付款付款方式完美配合。
我的问题是,当我的网站上的客户转到结帐页面完成订单时,货到付款方式最初不可见。只有客户输入他的邮政编码,并且如果该特定邮政编码可用于COD,则会显示COD支付方法。如果该邮政编码不符合条件,COD选项将继续不可见。
我希望COD选项在邮政编码未输入时以及客户输入邮政编码之后最初可见,并且如果该邮政编码不可用,则应显示一条消息,指出COD不可用。
我知道这个特殊的代码需要修改一下才能实现。请尽可能帮助我。
Observer.php
class Mfp_Cod_Model_Observer {
public function getCashOnDelvery(Varien_Event_Observer $observer)
{
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$isModuleEnable = Mage::getStoreConfig('cod/cod/enable');
if ($isModuleEnable) {
if ($method->getCode() == 'msp_cashondelivery') {
$quote = Mage::getSingleton('checkout/cart')->getQuote();
$add = $quote->getShippingAddress();
$postcode = $add->getData('postcode');
$comparisonMode = Mage::getStoreConfig('cod/cod/mode');
$zipCodes = Mage::getStoreConfig('cod/cod/zipcode');
$isExist = false;
if (trim($zipCodes) == '') {
$result->isAvailable = true;
} else {
if(strpos($zipCodes, $postcode) !== false) {
$isExist = true;
}
if ($isExist != true) {
$zipCodesArray = explode(',', nl2br($zipCodes));
if (count($elementLineArray) > 1) {
foreach ($zipCodesArray as $codzipLine) {
$elementLineArray = explode('-', $codzipLine);
if (count($elementLineArray) == 2 && ($postcode >= $elementLineArray[0] && $postcode <= $elementLineArray[1])) {
$isExist = true;
break;
} else if($postcode == $codzipLine) {
$isExist = true;
break;
}
}
}
}
$returnValue = '';
$returnValue = ($isExist)?true:false;
$result->isAvailable = $returnValue;
}
}
}
}
}