Как получить способ оплаты у наблюдателя в Magento? - PullRequest
1 голос
/ 01 июня 2011

У меня есть наблюдатель, который обрабатывает событие: sales_payment_invoice_pay (или что-то подобное).

Я пытаюсь отправить счет-фактуру, если используется метод оплаты PayPal.

В версии 1.4 все в порядке, выполнив $ наблюдатель-> getEvent () -> getOrder () -> getPayment-> getMethodInstance ().

В версии 1.5+ я не могу найти никаких решений. Я также пытался с getData (), но безрезультатно.

Любая помощь приветствуется. спасибо

Называть меня супер отчаянным за ответ было бы преуменьшением.

Ответы [ 4 ]

3 голосов
/ 01 июня 2011

Похоже, единственные данные, передаваемые в событие 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();

Ура и удачи!

2 голосов
/ 02 сентября 2014

я могу получить код метода оплаты, используя

$observer->getEvent()->getInvoice()->getOrder()->getPayment()->getMethodInstance()->getCode()
1 голос
/ 06 сентября 2011

Использование функции debug () объекта varien - хороший выбор для таких вещей ... как это: http://pastebin.com/wtdJdeLq - я не могу заставить работать код на этом сайте, не буду больше пытаться пытаться , Проверьте ссылку на вставку.

Там у вас есть order_id, загрузите заказ, как обычно, getModel ('...') (довольно быстро) и получите способ оплаты.

0 голосов
/ 03 сентября 2013

используйте этот код: $ order-> getPayment () -> getMethodInstance () -> getCode ();

...