AddFieldsToResponseObserver.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Authorizenet\Observer;
  8. use Magento\Framework\Event\ObserverInterface;
  9. use Magento\Sales\Model\Order;
  10. /**
  11. * Class AddFieldsToResponseObserver
  12. *
  13. * @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
  14. * @deprecated 100.3.1 Authorize.net is removing all support for this payment method
  15. */
  16. class AddFieldsToResponseObserver implements ObserverInterface
  17. {
  18. /**
  19. *
  20. * @var \Magento\Framework\Registry
  21. */
  22. protected $coreRegistry;
  23. /**
  24. * @var \Magento\Authorizenet\Model\Directpost
  25. */
  26. protected $payment;
  27. /**
  28. * @var \Magento\Authorizenet\Model\Directpost\Session
  29. */
  30. protected $session;
  31. /**
  32. * @var \Magento\Store\Model\StoreManagerInterface
  33. */
  34. protected $storeManager;
  35. /**
  36. * @param \Magento\Framework\Registry $coreRegistry
  37. * @param \Magento\Authorizenet\Model\Directpost $payment
  38. * @param \Magento\Authorizenet\Model\Directpost\Session $session
  39. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  40. */
  41. public function __construct(
  42. \Magento\Framework\Registry $coreRegistry,
  43. \Magento\Authorizenet\Model\Directpost $payment,
  44. \Magento\Authorizenet\Model\Directpost\Session $session,
  45. \Magento\Store\Model\StoreManagerInterface $storeManager
  46. ) {
  47. $this->coreRegistry = $coreRegistry;
  48. $this->payment = $payment;
  49. $this->session = $session;
  50. $this->storeManager = $storeManager;
  51. }
  52. /**
  53. * Save order into registry to use it in the overloaded controller.
  54. *
  55. * @param \Magento\Framework\Event\Observer $observer
  56. * @return $this
  57. */
  58. public function execute(\Magento\Framework\Event\Observer $observer)
  59. {
  60. /* @var $order Order */
  61. $order = $this->coreRegistry->registry('directpost_order');
  62. if (!$order || !$order->getId()) {
  63. return $this;
  64. }
  65. $payment = $order->getPayment();
  66. if (!$payment || $payment->getMethod() != $this->payment->getCode()) {
  67. return $this;
  68. }
  69. $result = $observer->getData('result')->getData();
  70. if (!empty($result['error'])) {
  71. return $this;
  72. }
  73. // if success, then set order to session and add new fields
  74. $this->session->addCheckoutOrderIncrementId($order->getIncrementId());
  75. $this->session->setLastOrderIncrementId($order->getIncrementId());
  76. $requestToAuthorizenet = $payment->getMethodInstance()
  77. ->generateRequestFromOrder($order);
  78. $requestToAuthorizenet->setControllerActionName(
  79. $observer->getData('action')
  80. ->getRequest()
  81. ->getControllerName()
  82. );
  83. $requestToAuthorizenet->setIsSecure(
  84. (string)$this->storeManager->getStore()
  85. ->isCurrentlySecure()
  86. );
  87. $result[$this->payment->getCode()] = ['fields' => $requestToAuthorizenet->getData()];
  88. $observer->getData('result')->setData($result);
  89. return $this;
  90. }
  91. }