1

Many payment methods provide the option to specify an order status which should be set after an order has been placed with the respective method. I think that was even possible for PayPal itself in older Magento versions. In the meantime (at least 1.7 - 1.9), this is not possible any more. So how can I set a specific order status after an order has been successfuly paid with PayPal Express? I tried the following:

  • Changing the status on the events checkout_submit_all_after / sales_order_payment_capture / sales_order_payment_pay / sales_order_invoice_pay: These events are dispatched too early. If I change the order status on one of these events, the PayPal module / Magento will set the status to processing again afterwards.
  • I also tried to rewrite the method Mage_Paypal_Model_Ipn#_registerPaymentCapture and tried to set the status at the end of this method. But it seems as this method is not even called...

So is there any event how I can set the order status after a PayPal Express order? If it is not possible with events, I would also go for a rewrite solution.

By the way here is also the code how I set the order status. But this code works. The status is changed, but changed again by PayPal/Magento afterwards.

$order->addStatusHistoryComment('', 'my_custom_status')
$order->save();
3

Have a go with the sales_order_place_after event, this is fired after the call to $this->_placePayment(); in Mage_Sales_Model_Order::place() so it should be after any other status changes have happened.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.