Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Place.php
Go to the documentation of this file.
1 <?php
7 
12 use Magento\Backend\Model\View\Result\ForwardFactory;
14 
20 class Place extends \Magento\Sales\Controller\Adminhtml\Order\Create
21 {
25  protected $helper;
26 
37  public function __construct(
38  Context $context,
39  Product $productHelper,
42  ForwardFactory $resultForwardFactory,
43  DataHelper $helper
44  ) {
45  $this->helper = $helper;
46  parent::__construct($context, $productHelper, $escaper, $resultPageFactory, $resultForwardFactory);
47  }
48 
56  public function execute()
57  {
58  $paymentParam = $this->getRequest()->getParam('payment');
59  $controller = $this->getRequest()->getParam('controller');
60  $this->getRequest()->setPostValue('collect_shipping_rates', 1);
61  $this->_processActionData('save');
62 
63  //get confirmation by email flag
64  $orderData = $this->getRequest()->getPost('order');
65  $sendConfirmationFlag = 0;
66  if ($orderData) {
67  $sendConfirmationFlag = !empty($orderData['send_confirmation']) ? 1 : 0;
68  } else {
69  $orderData = [];
70  }
71 
72  if (isset($paymentParam['method'])) {
73  $result = [];
74  //create order partially
75  $this->_getOrderCreateModel()->setPaymentData($paymentParam);
76  $this->_getOrderCreateModel()->getQuote()->getPayment()->addData($paymentParam);
77 
78  $orderData['send_confirmation'] = 0;
79  $this->getRequest()->setPostValue('order', $orderData);
80 
81  try {
82  //do not cancel old order.
83  $oldOrder = $this->_getOrderCreateModel()->getSession()->getOrder();
84  $oldOrder->setActionFlag(\Magento\Sales\Model\Order::ACTION_FLAG_CANCEL, false);
85 
86  $order = $this->_getOrderCreateModel()->setIsValidate(
87  true
88  )->importPostData(
89  $this->getRequest()->getPost('order')
90  )->createOrder();
91 
92  $payment = $order->getPayment();
93  if ($payment && $payment->getMethod() == $this->_objectManager->create(
94  \Magento\Authorizenet\Model\Directpost::class
95  )->getCode()
96  ) {
97  //return json with data.
98  $session = $this->_objectManager->get(\Magento\Authorizenet\Model\Directpost\Session::class);
99  $session->addCheckoutOrderIncrementId($order->getIncrementId());
100  $session->setLastOrderIncrementId($order->getIncrementId());
101 
103  $method = $payment->getMethodInstance();
104  $method->setDataHelper($this->helper);
105  $requestToAuthorizenet = $method->generateRequestFromOrder($order);
106  $requestToAuthorizenet->setControllerActionName($controller);
107  $requestToAuthorizenet->setOrderSendConfirmation($sendConfirmationFlag);
108  $requestToAuthorizenet->setStoreId($this->_getOrderCreateModel()->getQuote()->getStoreId());
109 
110  $adminUrl = $this->_objectManager->get(\Magento\Backend\Model\UrlInterface::class);
111  if ($adminUrl->useSecretKey()) {
112  $requestToAuthorizenet->setKey(
113  $adminUrl->getSecretKey('adminhtml', 'authorizenet_directpost_payment', 'redirect')
114  );
115  }
116  $result['directpost'] = ['fields' => $requestToAuthorizenet->getData()];
117  }
118 
119  $result['success'] = 1;
120  $isError = false;
121  } catch (\Magento\Framework\Exception\LocalizedException $e) {
122  $message = $e->getMessage();
123  if (!empty($message)) {
124  $this->messageManager->addErrorMessage($message);
125  }
126  $isError = true;
127  } catch (\Exception $e) {
128  $this->messageManager->addExceptionMessage($e, __('Order saving error: %1', $e->getMessage()));
129  $isError = true;
130  }
131 
132  if ($isError) {
133  $result['success'] = 0;
134  $result['error'] = 1;
135  $result['redirect'] = $this->_objectManager->get(
136  \Magento\Backend\Model\UrlInterface::class
137  )->getUrl(
138  'sales/order_create/'
139  );
140  }
141 
142  $this->getResponse()->representJson(
143  $this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class)->jsonEncode($result)
144  );
145  } else {
146  $result = ['error_messages' => __('Please choose a payment method.')];
147  $this->getResponse()->representJson(
148  $this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class)->jsonEncode($result)
149  );
150  }
151  }
152 }
$order
Definition: order.php:55
__()
Definition: __.php:13
$message
$payment
Definition: order.php:17
$method
Definition: info.phtml:13
__construct(Context $context, Product $productHelper, Escaper $escaper, PageFactory $resultPageFactory, ForwardFactory $resultForwardFactory, DataHelper $helper)
Definition: Place.php:37
$controller
Definition: info.phtml:14