SetResponseAfterSaveOrderObserver.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Observer;
  7. use Magento\Framework\Event\ObserverInterface;
  8. use Magento\Framework\Event\Observer as EventObserver;
  9. /**
  10. * PayPal module observer
  11. */
  12. class SetResponseAfterSaveOrderObserver implements ObserverInterface
  13. {
  14. /**
  15. * Core registry
  16. *
  17. * @var \Magento\Framework\Registry
  18. */
  19. protected $_coreRegistry;
  20. /**
  21. * Paypal hss
  22. *
  23. * @var \Magento\Paypal\Helper\Hss
  24. */
  25. protected $_paypalHss;
  26. /**
  27. * @var \Magento\Paypal\Model\Report\SettlementFactory
  28. */
  29. protected $_settlementFactory;
  30. /**
  31. * @var \Magento\Framework\App\ViewInterface
  32. */
  33. protected $_view;
  34. /**
  35. * Constructor
  36. *
  37. * @param \Magento\Paypal\Helper\Hss $paypalHss
  38. * @param \Magento\Framework\Registry $coreRegistry
  39. * @param \Magento\Framework\App\ViewInterface $view
  40. */
  41. public function __construct(
  42. \Magento\Paypal\Helper\Hss $paypalHss,
  43. \Magento\Framework\Registry $coreRegistry,
  44. \Magento\Framework\App\ViewInterface $view
  45. ) {
  46. $this->_paypalHss = $paypalHss;
  47. $this->_coreRegistry = $coreRegistry;
  48. $this->_view = $view;
  49. }
  50. /**
  51. * Set data for response of frontend saveOrder action
  52. *
  53. * @param EventObserver $observer
  54. * @return void
  55. */
  56. public function execute(EventObserver $observer)
  57. {
  58. /* @var $order \Magento\Sales\Model\Order */
  59. $order = $this->_coreRegistry->registry('hss_order');
  60. if ($order && $order->getId()) {
  61. $payment = $order->getPayment();
  62. if ($payment && in_array($payment->getMethod(), $this->_paypalHss->getHssMethods())) {
  63. $result = $observer->getData('result')->getData();
  64. if (empty($result['error'])) {
  65. $this->_view->loadLayout('checkout_onepage_review', true, true, false);
  66. $html = $this->_view->getLayout()->getBlock('paypal.iframe')->toHtml();
  67. $result['update_section'] = ['name' => 'paypaliframe', 'html' => $html];
  68. $result['redirect'] = false;
  69. $result['success'] = false;
  70. $observer->getData('result')->setData($result);
  71. }
  72. }
  73. }
  74. }
  75. }