顧客グループの特定の支払い方法の表示


7

私はmagentoチェックアウトプロセスに非常に慣れていないので、知識の欠如を許してください。特定の顧客グループに対して特定の支払いオプションを表示する方法はありますか?たとえば、「購入注文番号」を「30日間のクレジットアカウント」に変更しましたが、これは特定の顧客グループのみが利用できるため、ユーザーがログインしていて、その顧客グループの一部である場合にのみ表示します。

もう一度私の知識の欠如を申し訳ありませんが、あなたが助けることができればあなたは命の恩人になるでしょう。

ありがとうございました


私からの投票...
Amit Bera

回答:


9

これは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

混乱があれば教えてください


モデルと呼ばれる別のディレクトリにオブザーバーを配置しますか?
アダムアレン

1
app / code / local / Bh / ZeroSubtotalpaymentmethod / Model /でObserver.phpを作成し、filterpaymentmethodを変更する必要があります
Amit Bera

1
/ etcの下にも構成を作成します。app / etc / modules /にも新しい.xmlファイルを作成する必要がありますか?お待ちいただき、ありがとうございました:)
Adam Allen

app / code / local / Bh> ZeroSubtotalpaymentmethod> etcの下のconfig.xml。
アミットベラ

1
app / etc / modules /にBh_ZeroSubtotalpaymentmethod.xmlを作成します
Amit Bera


4

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.