Question

I'm trying to get the payment method in checkout_onepage_controller_success_action observer. I have tried:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$order = $objectManager->create('\Magento\Sales\Model\Order')->load($orderId[0]);
$payment = $order->getPayment();


$method = $payment->getMethodInstance();
$methodTitle = $method->getTitle();
$qid = $order->getQuoteId();
$order_data= $order->getData();
var_dump( $order) ;  // there is nothing like payment mehotd.
var_dump( $methodTitle); // yes I get the payment method title.
$increment_id = $order_data['increment_id'];
var_dump($payment);  // The payment method is within this object.
die();

The out put of $payment is very long so I'm going to paste only necessary part.

/var/www/html/m4/app/code/Magento/SamplePaymentGateway/Observer/ProcessGatewayRedirect.php:49:
object(Magento\Sales\Model\Order)[1847]
  protected '_eventPrefix' => string 'sales_order' (length=11)
  protected '_eventObject' => string 'order' (length=5)
  protected '_invoices' => null

...
...
      protected '_config' => 
        object(Magento\Framework\Interception\ObjectManager\Config\Developer)[26]
          ...
  protected 'customAttributesCodes' => null
  protected 'customAttributesChanged' => boolean true
  protected '_idFieldName' => string 'entity_id' (length=9)
  protected '_hasDataChanges' => boolean true
  protected '_origData' => 
    array (size=54)
      'entity_id' => string '75' (length=2)
      'parent_id' => string '75' (length=2)
      'base_shipping_captured' => null
      'shipping_captured' => null
      'amount_refunded' => null
      'base_amount_paid' => null
      'amount_canceled' => null
      'base_amount_authorized' => string '37.0000' (length=7)
      'base_amount_paid_online' => null
      'base_amount_refunded_online' => null
      'base_shipping_amount' => string '5.0000' (length=6)
      'shipping_amount' => string '5.0000' (length=6)
      'amount_paid' => null
      'amount_authorized' => string '37.0000' (length=7)
      'base_amount_ordered' => string '37.0000' (length=7)
      'base_shipping_refunded' => null
      'shipping_refunded' => null
      'base_amount_refunded' => null
      'amount_ordered' => string '37.0000' (length=7)
      'base_amount_canceled' => null
      'quote_payment_id' => null
      'additional_data' => null
      'cc_exp_month' => null
      'cc_ss_start_year' => null
      'echeck_bank_name' => null
      'method' => string 'nobel_payment' (length=13)
      'cc_debug_request_body' => null
      'cc_secure_verify' => null
      'protection_eligibility' => null

You may see that my payment method 'nobel_payment' is listed. But I'm unable to fetch it.

Was it helpful?

Solution

Try this code:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$order = $objectManager->create('\Magento\Sales\Model\Order')->load($orderId[0]);
$payment = $order->getPayment();
echo $payment->getMethod();
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top