Похоже, единственные данные, передаваемые в событие sales_order_invoice_pay
, это $this
, который будет моделью sales/order_invoice
.Я нашел это, просматривая код ядра Magneto, он запускается в Invoice.php примерно так:
Mage::dispatchEvent('sales_order_invoice_pay', array($this->_eventObject=>$this));
Глядя на подобное событие (sales_order_invoice_register
), в котором есть наблюдатель в ядре (Enterpriseпо крайней мере - increaseOrderGiftCardInvoicedAmount()
в GiftCardAccount) вы можете получить доступ к объекту Invoice следующим образом в вашем методе Observer:
$invoice = $observer->getEvent()->getInvoice();
Хотя счет-фактура - это все, что вы сможете получить, поскольку он передан тольконаблюдателям по dispatchEvent()
.Вы не можете напрямую получить доступ к заказу, как вы пытаетесь это сделать.
Однако, глядя на модель Invoice, у нее, похоже, есть хороший метод getOrder
, который должен сработать.Я не проверял, но попробуйте это:
$observer->getEvent()->getInvoice()->getOrder()->getPayment->getMethodInstance();
Ура и удачи!