hiển thị các phương thức thanh toán nhất định cho các nhóm khách hàng


7

Tôi rất mới với quy trình kiểm tra magento vì vậy hãy tha thứ cho sự thiếu hiểu biết của tôi. Có cách nào để hiển thị các tùy chọn thanh toán nhất định cho các nhóm khách hàng nhất định. Ví dụ: tôi đã thay đổi "số đơn đặt hàng" thành "tài khoản tín dụng 30 ngày" nhưng điều này chỉ có sẵn cho một nhóm khách hàng nhất định nên tôi chỉ muốn nó hiển thị khi người dùng đăng nhập và là một phần của nhóm khách hàng đó.

Một lần nữa xin lỗi vì sự thiếu hiểu biết của tôi, nếu bạn có thể giúp bạn sẽ là người cứu rỗi.

Cảm ơn bạn


upvote từ tôi ...
Amit Bera

Câu trả lời:


9

bạn có thể thực hiện việc này bằng magento event observer,create an event on payment_method_is_activevà giảm số lần vô hiệu hóa nhóm khách hàng và kích hoạt phương thức thanh toán:

kiểm tra liên kết này: Thực hiện phương thức thanh toán cho mỗi loại tiền tệ

và bạn cần do on some change in observer.php tôi đã cố gắng làm gương và cố gắng sửa đổi theo bạn

   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;
            }
        }
}

}

Lưu ý: Nếu bạn không nhận được id nhóm khách hàng từ phiên thì bạn cần tải khách hàng theo id khách hàng (phải lấy từ phiên) để nhận nhóm khách hàng từ phiên thử bên dưới:

/programming/9242390/showing-which-group-a-customer-belongs-to-in-magento http://xhtmlandcsshelp.blogspot.in/2010/12/get-customer-group-id -in-magento.html

Hãy cho tôi biết nếu bạn có bất kỳ nhầm lẫn


Tôi có thể đặt người quan sát trong một thư mục khác gọi là mô hình không?
Adam Allen

1
bạn cần tạo Observer.php tại app / code / local / Bh / ZeroSubtotalpaymentmethod / Model / ... và chỉ cần thay đổi trong filterpaymentmethod
Amit Bera

1
cũng tạo cấu hình dưới / etc. Tôi có cần tạo tệp .xml mới trong ứng dụng / etc / module / không? Cảm ơn vì sự kiên nhẫn của bạn nữa :)
Adam Allen

config.xml trong ứng dụng / code / local / Bh> ZeroSubtotalpaymentmethod> vv.
Amit Bera

1
tạo Bh_ZeroSubtotalpaymentmethod.xml trên ứng dụng / etc / mô-đun /
Amit Bera


4

Trong Magento 2

Hãy tạo một mô-đun. Bước 1) Tạo các thư mục như thế này.

app/code/Pits/PaymentMethod/etc/
app/code/Pits/PaymentMethod/Observer/

Bước 2) Khai báo mô-đun của bạn

app/code/Pits/PaymentMethod/etc/module.xml.

Dán đoạn mã sau vào tập tin trên.

    <?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>

Bước 4) Tạo tập tin đăng ký. ứng dụng / mã / hố / PaymentMethod / đăng ký.php Dán mã dưới đây.

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Pits_PaymentMethod',
    __DIR__
);

Bước 5) Chạy lệnh dưới đây trong dòng lệnh

Mô-đun php bin / magento: bật Pits_PaymentMethod

 php bin/magento setup:upgrade

Bước 6) Cho phép tạo tệp event.xml

ứng dụng / mã / Pits / PaymentMethod / etc / event.xml

Dán đoạn mã dưới đây vào nó.

<?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>

Bước 7) Cho phép tạo tập tin quan sát viên

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);

        }
        }*/
    }
}

Bước 8) Chạy này trong dòng lệnh

php bin/magento setup:upgrade


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.