如何在magento中捕获付款确认?

时间:2013-05-13 16:49:46

标签: php magento

我需要在magento网站上插入一些联属标签。问题是,我无法找到捕获付款确认事件的位置,以将用户重定向到success.phtml 感谢

1 个答案:

答案 0 :(得分:0)

订单/付款地点流程由Mage_Checkout_OnepageController控制器类中的saveOrderAction()操作方法执行(在'app / code / core / Mage / Checkout / controllers / OnepageController.php'中)。

订单成功后,客户将被重定向到您提到的成功页面,该页面由Mage_Checkout_OnepageController中的successAction()操作方法处理。

联盟网络标签最有可能直接放在'success.phtml'中。您应该可以访问该模板文件中所需的所有订单数据。但是如果由于某种原因你需要在模板文件中做更多的工作,你可以处理在successAction()中抛出的'checkout_onepage_controller_success_action'事件:

/**
 * Order success action
 */
public function successAction()
{
    $session = $this->getOnepage()->getCheckout();
    if (!$session->getLastSuccessQuoteId()) {
        $this->_redirect('checkout/cart');
        return;
    }

    $lastQuoteId = $session->getLastQuoteId();
    $lastOrderId = $session->getLastOrderId();
    $lastRecurringProfiles = $session->getLastRecurringProfileIds();
    if (!$lastQuoteId || (!$lastOrderId && empty($lastRecurringProfiles))) {
        $this->_redirect('checkout/cart');
        return;
    }

    $session->clear();
    $this->loadLayout();
    $this->_initLayoutMessages('checkout/session');
    Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($lastOrderId)));
    $this->renderLayout();
}