Magento 付款并成功返回网站以获取PayPal订单确认电子邮件

如果客户通过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的时候会发送(队列)的新订单电子邮件。当客户从贝宝返回该方法被触发(returnActionMage_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中的任何订单或付款流程。如果这样做,则应提及它们!

祝你好运,希望这会有帮助!

版权属于: sbboke版权所有。

转载时必须以链接形式注明作者和原始出处及本声明。

张贴在magento2教程标签:

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论