Magento программная активация заказа
При написании собственных модулей оплаты для Magento иногда приходится программно изменять статус заказа в состояние “Complete”. Для этого создается invoice и осуществляется оплата по этому инвойсу. Рассмотрим пример активации заказа после checkout (Place Order). Для этого создадим observer на событие checkout_type_onepage_save_order_after. В методе обсервера пишем следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php $order = $observer->getEvent()->getOrder(); if (!$order->getId()) { return false; } if (!$order->canInvoice()) { return false; } $savedQtys = array(); $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice($savedQtys); if (!$invoice->getTotalQty()) { return false; } $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE); $invoice->register(); $invoice->getOrder()->setCustomerNoteNotify(false); $invoice->getOrder()->setIsInProcess(true); $transactionSave = Mage::getModel('core/resource_transaction') ->addObject($invoice) ->addObject($invoice->getOrder()); $transactionSave->save(); ?> |
Таким образом order будет иметь статус Complete,