Magento Observer не вызывается при оплате заказа - PullRequest
1 голос
/ 04 августа 2011

ОБНОВЛЕНО 05/08/2011 *

Я новичок в magento и пытаюсь создать наблюдателя, который будет срабатывать при оплате заказа. Пока наблюдатель просто отправляет электронное письмо, однако я буду расширять его в будущем, однако сначала мне нужно, чтобы код работал.

Я использую Magento 1.5.1.0 и посмотрел cheatsheat хуков событий @ http://www.nicksays.co.uk/magento_events_cheat_sheet/ Я вижу, что событие, к которому я хочу подключиться, это

'sales_order_payment_pay'

отправляется с

'app/code/local/Mage/Sales/Model/Order/Payment.php'.

поскольку я перезаписал файл в основной папке

После прочтения многочисленных статей я понимаю, что мне нужно создать 3 файла, которые выглядят следующим образом

  1. app / etc / modules / PackageName_ModuleName.xml -> содержит файл xml, в котором указано, где находится модуль

  2. app / code / local / PackageName / ModuleName / etc / config.xml -> which присоединяет наблюдателя к отправленному событию sales_order_payment_pay

  3. app / code / local / PackageName / ModuleName / Model / Observer.php -> состоит из класса, который содержит метод, который вызывается config.xml при возникновении события sales_order_payment_pay.

Вот файлы, которые я создал, и каталог, в котором находятся файлы, код будет расширен, чтобы сделать больше, чем просто отправить электронное письмо, когда сработает 'sales_order_payment_pay', я просто отлаживаю в minuite.

Мой код выглядит следующим образом. При оплате заказов электронное письмо не поступает

приложение / и т.д. / модули / Juno_Sales.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Juno_Finalise>
            <active>true</active>
            <codePool>local</codePool>
        </Juno_Finalise>
    </modules>
</config>

Приложение / код / ​​местные / Juno / Продажи / и т.д. / config.xml

 <?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Juno_Sales>
                <version>0.1.0</version>
        </Juno_Sales>
    </modules>
    <global>
        <models>
            <junofinalise>
                <class>Juno_Sales_Model</class>
            </junofinalise>
        </models>          
        <events>
                <sales_order_payment_pay>
                <observers>
                        <juno_sales_order_observer>
                                <type>singleton</type>
                                <class>junofinalise/order_observer</class>
                                <method>finaliseJunoOrder</method>
                        </juno_sales_order_observer>
                </observers>
                </sales_order_payment_pay>     
        </events>
     </global>
</config>

app / code / local / Juno / Sales / Model / Order / Observer.php

 <?php
Mage::log(__FILE__);

class Juno_Finalise_Model_Order_Observer
{

    public function finaliseJunoOrder($event)
    {
         mail('ian.cassidy1404@gmail.com','call_juno_api','now call juno api');

        /*
                Sale has now been processed and is paid for, function needs modifying to call juno api 
        */


    }

}

?>

Любая помощь будет высоко ценится.

Большое спасибо

Ян

1 Ответ

4 голосов
/ 04 августа 2011

Ваш класс Juno_Finalise_Model_Observer должен быть Juno_Finalise_Model_Order_Observer.

...