Magento - 在成功订单时更改客户群

时间:2013-04-29 17:01:38

标签: magento magento-1.7

我使用paypal作为网关,我想我会根据paypal结果编辑IPN监听器并从那里更新客户组。

是否有更多的“Magento”方式,比如重写方法,如果是这样,我会在哪里这样做?

2 个答案:

答案 0 :(得分:2)

事件观察者在这里有意义。不确定paypal_payment_transaction_save_after事件是否适用于此;保存成功的IPN付款后检查订单会有效。

答案 1 :(得分:0)

对于其他寻找此功能的人来说,这就是我所做的:

要覆盖我复制的Magento 1.7.0.2 paypal例程

/应用程序/代码/核心/法师/贝宝/

/应用程序/代码/本地/法师/贝宝/

然后我将以下方法添加到/app/code/local/Mage/Paypal/Model/Ipn.php

protected function _changeUserGroup($group){

    $invoice_id = $this->_request['invoice'];

    // get the resource model
    $resource = Mage::getSingleton('core/resource');

    // retrieve the read connection
    $read = $resource->getConnection('core_read');

    // get the customer_id for the invoice from the database
    $customer_id = (int) $read->fetchOne($read->select()->from('sales_flat_order','customer_id')->where("increment_id='$invoice_id'")->limit(1));

    // retrieve the write connection
    $write = $resource->getConnection('core_write');

    // raw query
    $query = "UPDATE customer_entity SET group_id = $group WHERE entity_id = $customer_id";

    // execute the query
    $write->query($query);

}

然后,您可以在IPN过程中的任何位置调用此方法以满足您的目的。我发现http://fishpig.co.uk/blog/direct-sql-queries-magento.html对数据库调用很有用。