有可能选择每种产品的付款方式吗?
例如:在我的商店中,有一种产品正在销售#34;现金游戏",所以当客户购买此产品时,magento只启用游戏中的付款选项"
至于其他以真钱购买的产品,它会禁用游戏中的付款选项""并启用信用卡付款(例如)。
我找到了一些模块,但经过测试但没有用。
感谢' S
答案 0 :(得分:0)
是的,你可以通过这个模块来做到这一点。例如,我们想要为某些产品兑现货币 - >
首先创建一个产品属性(名称:'magepal_payment_filter_by_product',输入:yes / no)以识别这些产品。
例如Magento v1.7的基础你可以
以编程方式自动启用付款模块[请参阅] [1]
启用所有适用的付款模块并过滤哪个模块以显示
在/app/code/local/MagePal/PaymentFilterByProduct/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<MagePal_PaymentFilterByProduct>
<version>1.0.1</version>
</MagePal_PaymentFilterByProduct>
</modules>
<global>
<helpers>
<paymentfilterbyproduct>
<class>MagePal_PaymentFilterByProduct_Helper</class>
</paymentfilterbyproduct>
<payment>
<rewrite>
<data>MagePal_PaymentFilterByProduct_Helper_Payment_Data</data>
</rewrite>
</payment>
</helpers>
</global>
</config>
在/app/code/local/MagePal/PaymentFilterByProduct/Helper/Payment/Data.php
<?php
class MagePal_PaymentFilterByProduct_Helper_Payment_Data extends Mage_Payment_Helper_Data
{
public function getStoreMethods($store = null, $quote = null)
{
$methods = parent::getStoreMethods($store, $quote);
if(!Mage::getStoreConfig('paymentfilterbyproduct/general_option/paymentfilterbyproduct_enable', Mage::app()->getStore()) || !$quote){
return $methods;
}
//get a list of product in cart
$cart = Mage::getSingleton('checkout/session');
$specialProductInCart = array();
foreach ($cart->getQuote()->getAllItems() as $item) {
$specialProductInCart[] = $item->getMagepalPaymentFilterByProduct();
}
// if special product in cart
// need to if check $item->getMagepalPaymentFilterByProduct() return 'yes/no' or '0/1)
if(in_array('yes', $specialProductInCart)){
$filter_csv = Mage::getStoreConfig('paymentfilterbyproduct/filter_option/paymentfilter_special_products', Mage::app()->getStore());
}
else{
$filter_csv = Mage::getStoreConfig('paymentfilterbyproduct/filter_option/paymentfilter_all_product', Mage::app()->getStore());
}
$filter_array = explode(",", $filter_csv);
foreach ($methods as $k => $method){
if(!in_array($method->getCode(), $filter_array))
unset($methods[$k]);
}//methods
return $methods;
}
}
在/app/code/local/MagePal/PaymentFilterByProduct/etc/system.xml
<?xml version="1.0"?>
<config>
<tabs>
<magepal translate="label" module="paymentfilterbyproduct">
<label>MagePal</label>
<sort_order>900</sort_order>
</magepal>
</tabs>
<sections>
<paymentfilterbyproduct translate="label" module="paymentfilterbyproduct">
<label>Payment Method Filter by Product</label>
<tab>magepal</tab>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<general_option translate="label">
<label>General Options</label>
<frontend_type>text</frontend_type>
<sort_order>1</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<paymentfilter_enable translate="label">
<label>Enable Payment Filter</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</paymentfilter_enable>
</fields>
</general_option>
<filter_option translate="label">
<label>Payment Method Filter Configuration</label>
<frontend_type>text</frontend_type>
<sort_order>2</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Please enable all applicable payment methods in system payment config</comment>
<fields>
<paymentfilter_all_products translate="label">
<label>Select Default Payment option for All Products</label>
<frontend_type>multiselect</frontend_type>
<source_model>MagePal_PaymentFilterByProduct_ActivePaymentMethod</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</paymentfilter_admin>
<paymentfilter_special_products translate="label">
<label>Select Payments for Cart with Special Products</label>
<frontend_type>multiselect</frontend_type>
<source_model>MagePal_PaymentFilterByProduct_ActivePaymentMethod</source_model>
<sort_order>40</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</paymentfilter_store>
</fields>
</filter_option>
</groups>
</paymentfilterbyproduct>
</sections>
</config>
在/app/code/local/MagePal/PaymentFilterByProduct/Helper/Data.php
<?php
class MagePal_PaymentFilterByProduct_Helper_Data extends Mage_Core_Block_Template
{
}
在/app/code/local/MagePal/PaymentFilterByProduct/ActivePaymentMethod.php
<?php
class MagePal_PaymentFilterByProduct_ActivePaymentMethod
{
//get all active (enable) payment method
public function toOptionArray()
{
$payments = Mage::getSingleton('payment/config')->getActiveMethods();
foreach ($payments as $paymentCode=>$paymentModel) {
if($paymentModel->canUseCheckout() == 1){
$paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title');
$methods[$paymentCode] = array(
'label' => $paymentTitle,
'value' => $paymentCode,
);
}
}
return $methods;
}
}
在/app/etc/modules/MagePal_PaymentFilterByProduct.xml
<?xml version="1.0"?>
<config>
<modules>
<MagePal_PaymentFilterByProduct>
<active>true</active>
<codePool>local</codePool>
</MagePal_PaymentFilterByProduct>
</modules>
</config>