您的位置:首页 > 其它

magento 如何在跳转到支付界面前自动发送邮件

2011-05-25 09:23 483 查看
在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条件注释掉,这样就可以保证无论是否存在支付跳转,系统都会发送订单确认邮件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: