Order Details Not Showing on OneStep Checkout Page

event-observerorderspayment

I am trying to get order details on onestep checkout but its not working. My xml code is like this :

<checkout_onepage_controller_success_action>
                <observers>
                    <pmembers_invoicer_automatically_complete_order>
                        <class>MKD_Pmembers_Model_Observer</class>
                        <method>CompleteOrder</method>
                    </pmembers_invoicer_automatically_complete_order>
                </observers>
            </checkout_onepage_controller_success_action>

My observer code is follow:

 $_order = $observer->getEvent()->getOrder();
            $order =$observer->getEvent()->getOrder();
             $oid = $order -> getId();

It give Fatal error: Call to a member function getId() on a non-object. Am I doing something wrong. I want to make some changes on payment made. I know some uses sales_order_payment_pay for payment verification.

Best Answer

Use following code in your observer to get the order:

$order = Mage::getModel('sales/order');
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);

on success event.