我想根据特定城市(卖方城市)而不是特定国家启用/禁用COD选项。怎么实现呢? 我已经搜索了这个并找到了一些主题,但这些对我来说并不是很清楚,因为这是我的第一个magento网站。 任何人都可以指导我到底怎么做?我知道为此我可能需要建立一个模块,所以如果是这样的话请指导我。
答案 0 :(得分:2)
首先,使用payment_method_is_active
禁用依赖于您可以禁用的当前报价发送地址/帐单邮寄地址城市。
此代码:
<global>
<events>
<payment_method_is_active>
<observers>
<paymentfilter_payment_method_is_active>
<type>singleton</type>
<class>yourmodel/observer</class>
<method>filterpaymentmethod</method>
</paymentfilter_payment_method_is_active>
</observers>
</payment_method_is_active>
</events>
</global>
在Observer上,您可以使用以下代码
获取当前报价shipping /billing address
<强> $ observer-&GT; getEvent() - &GT;为getQuote() - &GT; getShippingAddress()/ $ observer-&GT; getEvent() - &GT;为getQuote() - &GT; getBillingAddress()强>
<?php
class YOURNANESPACE_YOURMODULE_Model_Observer {
public function filterpaymentmethod(Varien_Event_Observer $observer) {
/* call get payment method */
$method = $observer->getEvent()->getMethodInstance();
/* get Quote */
$quote = $observer->getEvent()->getQuote();
/* check quote exit or not */
if($quote):
$Billing=$observer->getEvent()->getQuote()->getBillingAddress();
$Shipping =$observer->getEvent()->getQuote()->getShippingAddress()
$observer->getEvent()->getQuote()->getBillingAddress();
/* Disable Your payment method by city */
if($method->getCode()=='YOUR_PAYMENT_METHOD_CODE' ){
$result->isAvailable = false
// dis payment method depends on city
if($Shipping->getCity=='YOUR_CITY'):
$result->isAvailable = true;
else:
$result->isAvailable = false;
endif;
}
endif;
}
}
这是另一个这类作品的样本:
答案 1 :(得分:0)
此扩展程序将按照您的要求运行。
http://www.magentocommerce.com/magento-connect/advance-cash-on-delivery.html
您需要提及适用的zipcodes