如果客户通过Paypal下订单,我们不会收到订单确认电子邮件。但是我们会收到发票和发货邮件。
我们设置Sale : Payment Action
为贝宝配置。
因此,一旦我们创建了订单,连同订单电子邮件[不会发送给客户],我也想向客户发送发票邮件。我认为此扩展程序仅在订单状态完成后才发送发票。
如果我们使用SMTP扩展名,对我们有用吗?
我也想知道,只有在我们付款并成功返回网站后,电子邮件才会发送吗?如果我们仅单击“下订单”并重定向到Paypal页面,它将不发送电子邮件吗?
概念
如果客户通过Paypal下订单,我们不会收到订单确认电子邮件。但是我们会收到发票和发货邮件。
这说明了一件事:您的电子邮件发送机制(可能是Magento cron)总体上正常工作。
如果我们使用SMTP扩展名,对我们有用吗?
无论您是否实施此扩展,都不会影响您的PayPal订单电子邮件是否有效。该模块被设计为位于后台,并从核心Magento邮件模块接收常规的电子邮件发送作业,并对其进行处理。除了Magento管理员中的电子邮件日志表(其中包含已发送电子邮件的历史记录)外,您不会注意到Magento常规用法与安装后有所不同。
如果您已安装此扩展程序,则可以在Magento管理员中使用该电子邮件日志来检查已发送的内容。您可以通过访问它System -> Tools -> SMTP Pro - Email Log
。
我也想知道,只有在我们付款并成功返回网站后,电子邮件才会发送吗?如果我们仅单击“下订单”并重定向到Paypal页面,它将不发送电子邮件吗?
当Magento的各种型号上的某些状态发生更改时,将发送电子邮件。当订单达到处理状态时即发送订单电子邮件,这意味着已开票并付款(付款方式已收费[ capture()
方法])。创建订单发票时发送发票电子邮件(通常/通常也创建订单)。为订单等创建货件时会创建货件电子邮件。
是的 -仅当您完成PayPal交易并成功返回到Magento网站(并且Magento已根据订单成功注册该付款并保存)后,该电子邮件才会发送。
如果您仅单击“下订单”并重定向到PayPal页面,则不会触发任何电子邮件发送。您的订单目前还不存在,它只是一个报价,当客户从PayPal退货时等待转换为订单。
编码
如果你在看看Mage_Paypal_Model_Express_Checkout::place()
作为一个例子,你将看到以下条件适用于Magento的时候会发送(队列)的新订单电子邮件。当客户从贝宝返回该方法被触发(在returnAction
在Mage_Paypal_Controller_Express_Abstract
这里送他们通过->placeOrderAction()
再$this->_checkout->place()
):
# File: app/code/core/Mage/Paypal/Model/Express/Checkout.php
switch ($order->getState()) {
// even after placement paypal can disallow to authorize/capture, but will wait until bank transfers money
case Mage_Sales_Model_Order::STATE_PENDING_PAYMENT:
// TODO
break;
// regular placement, when everything is ok
case Mage_Sales_Model_Order::STATE_PROCESSING:
case Mage_Sales_Model_Order::STATE_COMPLETE:
case Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW:
$order->queueNewOrderEmail();
break;
}
本质上,如果新订单的状态为“正在处理”,“完成”或“ payment_review”,则将发送(排队)电子邮件-您是否检查了受影响的PayPal订单以查看其状态?您说可以发货,所以我认为它们是“加工中”的。
如上所示,一个例外是新订单的状态为“待付款”。Magento开发人员的评论对此进行了解释,但可能会在付款延迟的情况下发生。我建议这不是很常见。
当然,该switch语句是特定的并且不包含default
大小写(注意:这违反了Zend样式准则,但是许多核心Magento代码也是如此!)。这意味着,如果订单状态不是所提及的任何状态,则也不会发送(排队)订单。
从这里到哪里?
我建议您执行以下操作:
- 在您的开发环境中设置一个PayPal沙箱帐户,以便您自己进行测试!
- 检查新的PayPal订单的状态。检查订单的状态。查看订单的历史记录,看看是否有异常情况。尝试将其中一个订单的电子邮件更改为您的订单,并触发从Magento管理员的订单视图屏幕手动重新发送订单电子邮件(这将消除电子邮件模板本身的问题)
- 启用PayPal日志记录,并在发出请求时检查API日志(最好在开发环境中完成,假设您可以重现它)
笔记
我在上面的评论/建议假设您没有任何第三方或定制模块妨碍Magento中的任何订单或付款流程。如果这样做,则应提及它们!
祝你好运,希望这会有帮助!