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