本文共 1303 字,大约阅读时间需要 4 分钟。
在magento系统中,默认是在支付成功后发送确认订单邮件的,但是有时我们会碰到支付不成功的情 况或者客户不想支付,那我们怎样才能在支付前就发送订单邮件呢?首先我们打开appcodecoreMageCheckoutModelType文件夹下 的Onepage.php文件,找到saveOrder()方法,可以看到有这么几句:
$order = $service->getOrder(); if ($order) { Mage::dispatchEvent('checkout_type_onepage_save_order_after', array('order'=>$order, 'quote'=>$this->getQuote()));
/** * a flag to set that there will be redirect to third party after confirmation * eg: paypal standard ipn */ $redirectUrl = $this->getQuote()->getPayment()->getOrderPlaceRedirectUrl(); /** * we only want to send to customer about new order when there is no redirect to third party */ if(!$redirectUrl){ try { $order->sendNewOrderEmail(); } catch (Exception $e) { Mage::logException($e); } }
// add order information to the session $this->_checkoutSession->setLastOrderId($order->getId()) ->setRedirectUrl($redirectUrl) ->setLastRealOrderId($order->getIncrementId());
// as well a billing agreement can be created $agreement = $order->getPayment()->getBillingAgreement(); if ($agreement) { $this->_checkoutSession->setLastBillingAgreementId($agreement->getId()); } }
可以发现magento系统是在保存订单数据后就立即跳转到支付URL上去了,而如果没有支付跳转,则会发送邮件。那我们现在就可以把
if(!$redirectUrl){ try { $order->sendNewOrderEmail(); } catch (Exception $e) { Mage::logException($e); } }中的if条件注释掉,这样就可以保证无论是否存在支付跳转,系统都会发送订单确认邮件。
转载地址:http://ejcli.baihongyu.com/