回答:
これはevent observer,create an event on payment_method_is_active
、顧客グループでmagento とdepednds を使用して行うことができ、支払い方法を無効および有効にします。
このリンクを確認してください: 通貨ごとの支払い方法の実装
そして、あなたはdo on some change in observer.php
私が例を挙げて、あなたに従って修正しようとする必要がある
public function filterpaymentmethod(Varien_Event_Observer $observer) {
/* call get payment method */
$method = $observer->getEvent()->getMethodInstance();
if(Mage::getSingleton('customer/session')->isLoggedIn()) {
$roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$role = Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
if($method->getCode()=='purchaseorder'){
$quote = $observer->getEvent()->getQuote();
if($role == $yourcustomergroupid){
$result = $observer->getEvent()->getResult();
$result->isAvailable = true;
return;
}else{
$result = $observer->getEvent()->getResult();
$result->isAvailable = false;
}
}
if($method->getCode()=='checkmo'){
$quote = $observer->getEvent()->getQuote();
if($role == $yourcustomergroupid){
$result = $observer->getEvent()->getResult();
$result->isAvailable = true;
return;
}else{
$result = $observer->getEvent()->getResult();
$result->isAvailable = false;
}
}
}
}
注:セッションから顧客グループIDを取得していない場合、顧客グループをセッションから取得するには、顧客ID(セッションから取得する必要があります)ごとにtp load customerが必要です :
/programming/9242390/showing-which-group-a-customer-belongs-to-in-magento http://xhtmlandcsshelp.blogspot.in/2010/12/get-customer-group-id -in-magento.html
混乱があれば教えてください
顧客グループに拡張機能とその正常な動作を使用し、製品とその無料でフィルタリングすることもできます。
http://www.magentocommerce.com/magento-connect/paymentfilter-for-products-and-customer-groups.html
Magento 2の場合
モジュールを作成しましょう。手順1)このようなフォルダを作成します。
app/code/Pits/PaymentMethod/etc/
app/code/Pits/PaymentMethod/Observer/
ステップ2)モジュールを宣言する
app/code/Pits/PaymentMethod/etc/module.xml.
上記のファイルに次のコードを貼り付けます。
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Pits_PaymentMethod" setup_version="2.0.0" /></config>
手順4)登録ファイルを作成します。 app / code / Pits / PaymentMethod / registration.php 以下のコードを貼り付けます。
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Pits_PaymentMethod',
__DIR__
);
ステップ5)コマンドラインで以下のコマンドを実行します
php bin / magento module:enable Pits_PaymentMethod
php bin/magento setup:upgrade
手順6)events.xmlファイルを作成してみましょう
app / code / Pits / PaymentMethod / etc / events.xml
以下のコードを貼り付けます。
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="payment_method_is_active">
<observer name="Pits_PaymentMethod_DisabledPgByCustomergroup" instance="Pits\PaymentMethod\Observer\DisabledPgByCustomergroup" />
</event>
</config>
ステップ7)オブザーバーファイルを作成しましょう
app/code/Pits/PaymentMethod/Observer/DisabledPgByCustomergroup.php.php
<?php
namespace Pits\PaymentMethod\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\Request\DataPersistorInterface;
use Magento\Framework\App\ObjectManager;
class DisabledPgByCustomergroup implements ObserverInterface
{
public function __construct(\Psr\Log\LoggerInterface $logger)
{
$this->_logger = $logger;
}
/**
*
* @param \Magento\Framework\Event\Observer $observer
* @return void
*/
public function execute(\Magento\Framework\Event\Observer $observer)
{
$result = $observer->getEvent()->getResult();
$method_instance = $observer->getEvent()->getMethodInstance();
$quote = $observer->getEvent()->getQuote();
$this->_logger->info($method_instance->getCode());
/* If Cusomer group is match then work */
if (null !== $quote && $quote->getCustomerGroupId() != 4) {
/* Disable All payment gateway exclude Your payment Gateway*/
if ($method_instance->getCode() == 'purchaseorder') {
$result->setData('is_available', false);
}
}
/*else{
if($method_instance->getCode() =='purchaseorder'){
$result->setData('is_available', true);
}
}*/
}
}
ステップ8)コマンドラインでこれを実行します
php bin/magento setup:upgrade
この拡張機能を確認できます:
http://amasty.com/shipping-payment-by-customer-group.html by @Amasty
顧客グループごとに支払い方法と配送方法をフィルタリングできます
この無料の拡張機能はあなたを助けるでしょう: