【问题标题】:Magento event always dispatched when order is placed successfully?成功下订单时总是调度 Magento 事件?
【发布时间】:2011-12-29 11:23:54
【问题描述】:

我发现 Magento 事件调度是一个非常令人沮丧的领域。像往常一样,我想很多挫折是由于缺乏文档。

我希望在访问者浏览网站时在不同阶段触发我的代码。所以我在 Mage::dispatchEvent 中进行了一些调试,然后我浏览了该站点以查看每个阶段触发了哪些事件。有很多!

我感兴趣的两个地方是:

  • 当访问者选择帐单地址并进入结帐流程的下一阶段时。

  • 当用户成功下单时

对于账单地址一,我看到的相关事件是:

controller_action_predispatch_checkout_onepage_saveBilling
controller_action_postdispatch_checkout_onepage_saveBilling

'pre' 和 'post' 向我暗示实际上有一个 'checkout_onepage_saveBilling' 事件,但没有,所以我的第一个问题是为什么 'pre' 和 'post'?

对于成功的订单,看起来不错的事件是:

checkout_onepage_controller_success_action
checkout_multishipping_controller_success_action

我的第二个问题是所有支付方式都会触发这些事件吗?例如,如果使用 Google Checkout 或 PayPal(标准重定向),事件会触发吗?在什么时候触发?从 PayPal 返回网站时?如果是这样,那将提出一个问题,如果用户在完成付款后不返回怎么办。

感谢您的帮助。

【问题讨论】:

  • 您好。这有回答吗?为了让您接受以下答案之一,我们还能提供什么其他服务吗?

标签: magento


【解决方案1】:

predispatch 事件将在调用动作之前触发,postdispatch 事件将在动作完成后触发。因此,如果您需要知道操作的结果是什么,您应该使用 postdispatch 事件。

对于成功的订单,请查看 checkout_submit_all_after 事件。

如果您还没有看到,https://www.nicksays.co.uk/magento-events-cheat-sheet-1-9/ 是 Magento 事件的方便参考。

【讨论】:

    【解决方案2】:

    遗憾的是,我注意到 checkout_submit_all_after 不会为 Paypal Express 订单触发。

    没有修改 Paypal 模型来添加这个(或者可能会挂钩到他们可能触发的事件 - 我还没有检查过),我认为 checkout_onepage_controller_success_action 可能真的是你绝对可以依靠的唯一事件订单类型。

    【讨论】:

    • 嗨,您解决过 Paypal Express 的问题吗?
    猜你喜欢
    • 2012-01-01
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2016-03-17
    相关资源
    最近更新 更多