1

I need to get order id after payment is successfully completed. Is there observer to do this?

Bishal Neupane
  • 181
  • 1
  • 3
  • 15
Dushan
  • 121
  • 1
  • 13

2 Answers2

3

Yes there are few events related to payment.

I would suggest to use this one: sales_order_payment_pay.

Complete events

I believe you already know how to use observer.

Adarsh Khatri
  • 8,360
  • 2
  • 25
  • 58
1

You can use the sales_order_payment_pay event to get the order id after payment is completed successfully.

below code in etc/config.xml

<?xml version="1.0"?>
<config>
    <global>
        <events>
            <sales_order_payment_pay>
                <observers>
                    <Namespace_Module>
                        <type>singleton</type>
                        <class>Namespace_Module/Observer</class>
                        <method>getOrder</method>
                    </Namespace_Module>
                </observers>
            </sales_order_payment_pay>     
        </events>
     </global>
</config>

and Model/Observer.php

public function getOrder($observer) {
    $orderId = $observer->getPayment()->getOrder()->getId();
    $orderNumber = $observer->getPayment()->getOrder()->getIncrementId();
}

Just to clarify; The order ID is used internally in the database. The order number is what's displayed on screen and looks like #100000153

Manashvi Birla
  • 8,833
  • 9
  • 27
  • 53