【发布时间】:2012-01-07 21:28:33
【问题描述】:
我最近设置了一些自动脚本来帮助我通过使用观察者和 Magento 事件来管理 Magento 商店的传入订单。我的问题是根据所选的付款类型来处理确切下订单并将其保存在系统中的问题。
例如:如果有人简单地选择了预付款,订单会立即保存,客户会自动转到成功页面——所以到目前为止没有问题。
如果客户通过 Paypal 付款,整个情况就完全不同了。在被重定向到 PayPal、登录帐户并确认付款后,客户不会被重定向到 Magento 商店。他可以点击一个链接返回那里,这也会将他转发到成功页面,但肯定不是每个人都会这样做,问题是我使用的观察者事件只有在用户登陆该页面时才会执行代码。 (我正在处理的事件是“checkout_Onepage_Controller_Success_Action”)。
因此,我需要知道 Magento 从何处获取 PayPal 付款是否成功、是否已取消或其他任何信息。我查看了 /app/code/core/Mage/Paypal/controllers/ 下的一些 PayPal 控制器文件,唯一看起来接近可能解决方案的是 StandardController.php 中的函数 successAction()。但是,此功能似乎也仅在客户选择返回 Magento 商店时才会触发,因此对我没有帮助。
有人对这个问题有一些经验吗?
【问题讨论】:
-
具体说明您使用的付款方式
-
我的例子是指 Magento v1.5.1.0 的标准 PayPal 模块
-
尝试绑定到订单对象相关事件而不是控制器事件,并将所有事件注销到在您的流程中触发的文本文件,然后您可以选择合适的内容
-
你有一个有用的事件的具体例子吗?在使用我上面提到的那个之前,我也尝试过“sales_order_place_after”和“sales_order_save_after”,但是只要客户点击结帐页面上的“Place your order”链接,它们都会执行代码。我需要一个在 PayPal 交易成功完成时触发我的代码的事件。
-
查看是否被解雇:sales_order_invoice_pay sales_order_payment_capture
标签: events magento module paypal observer-pattern