m2 控制前台payment method显示隐藏
m2 控制前台payment method显示隐藏
比如需求是:
B2B 的唯一支付方式为 checkmo 这个支付方式,在checkout 页面需要隐藏所有其他的。 同时,如果不是 b2b用户,那么隐藏checkmo,这个支付方式不能被普通用户选择。
如果重写每个payment method的代码就太麻烦了。
幸好magento给我们提供了一个event为payment_method_is_active。
在events.xml里定义
然后写php逻辑
在Observer/CheckPaymentMethod.php里
helper = $helper;
}
/**
* @param EventObserver $observer
* @return $this
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function execute(\Magento\Framework\Event\Observer $observer) {
$result = $observer->getEvent()->getResult();
$methodInstance = $observer->getEvent()->getMethodInstance();
$code = $methodInstance->getCode();
//$quote = $observer->getEvent()->getQuote();
//echo $code;
if ($this->helper->checkIsB2bCustomer()) {
$result->setData('is_available', false);
if($code == 'checkmo'){
$result->setData('is_available', true);
}
}else{
$result->setData('is_available', true);
if($code == 'checkmo'){
$result->setData('is_available', false);
}
}
return $this;
}
}
这样就行了
最后于 7月前 被admin编辑 ,原因:
admin 更改状态以发布
