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条件注释掉,这样就可以保证无论是否存在支付跳转,系统都会发送订单确认邮件。
况或者客户不想支付,那我们怎样才能在支付前就发送订单邮件呢?首先我们打开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条件注释掉,这样就可以保证无论是否存在支付跳转,系统都会发送订单确认邮件。
相关文章推荐
- magento 如何在跳转到支付界面前自动发送邮件
- 解决magento1.6快速支付不能自动发送邮件的问题
- 如何配置禅道管理自动发送通知邮件
- iOS使用UITabbarController跳转(push)界面,如何自动隐藏底部tabbar?
- magento 客户等级自动提升并且发送邮件
- 配置-如何用ABAP实现自动发送外部邮件
- 如何配置禅道管理自动发送通知邮件
- .NET中如何用Outlook自动发送邮件(C#)
- 如何用ABAP实现自动发送外部邮件
- android中如何实现进入一个界面不做任何动作过10秒钟(有操作从新计时)自动跳转到待机activity,点击待机界面回到原来的界面
- 如何把Domino所有用户接收和发送的邮件都自动地拷贝到一个数据库中
- [Outlook] outlook如何实现自动CC和BCC邮件发送
- 如何配置禅道管理自动发送通知邮件
- 如何用ABAP实现自动发送外部邮件
- 浅析linux下如何用脚本自动发送文本mail邮件
- [MSSQL]如何用SQLServer自动发送邮件
- 如何配置禅道管理自动发送通知邮件
- android中如何实现进入一个界面不做任何动作过10秒钟自动跳转到其他activity?
- 如何自动发送邮件
- PHP 如何自动发送邮件?