I have a custom payment module. I want to stop sending the default Magento order confirmation email for this payment method only.
Please give some solutions...
What I have done so far:
I have created one plugin
app/code/Company/OrderEmail/etc/di.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Sales\Model\Order\Email\Container\OrderIdentity"> <plugin name="change_is_enable_method" type="Company\OrderEmail\Plugin\Sales\Order\Email\Container\OrderIdentityPlugin"/> </type> </config> app/code/Company/OrderEmail/Plugin/Sales/Order/Email/Container/OrderIdentityPlugin.php
<?php namespace Company\OrderEmail\Plugin\Sales\Order\Email\Container; class OrderIdentityPlugin { /** * @var \Magento\Checkout\Model\Session $checkoutSession */ protected $checkoutSession; /** * @param \Magento\Checkout\Model\Session $checkoutSession * * @codeCoverageIgnore */ public function __construct( \Magento\Checkout\Model\Session $checkoutSession ) { $this->checkoutSession = $checkoutSession; } /** * @param \Magento\Sales\Model\Order\Email\Container\OrderIdentity $subject * @param callable $proceed * @return bool */ public function aroundIsEnabled(\Magento\Sales\Model\Order\Email\Container\OrderIdentity $subject, callable $proceed) { $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/v1.log'); $logger = new \Zend\Log\Logger(); $logger->addWriter($writer); $logger->info('Your text message'); $returnValue = $proceed(); $paymentMethodCode = $this->checkoutSession->getQuote()->getPayment()->getMethod(); $logger->info($paymentMethodCode); if($paymentMethodCode = "custom_paymentcode"){ $forceOrderMailSentOnSuccess = $this->checkoutSession->getForceOrderMailSentOnSuccess(); if(isset($forceOrderMailSentOnSuccess) && $forceOrderMailSentOnSuccess) { if($returnValue){ $returnValue = false; } else{ $returnValue = true; } $this->checkoutSession->unsForceOrderMailSentOnSuccess(); } return $returnValue; } } } But I am not getting the payment method from the checkout session which I have logged into the log file. So I Am not not able to check the condition.