![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-paypal/Observer/ |
<?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 AddBillingAgreementToSessionObserver implements ObserverInterface { /** * @var \Magento\Paypal\Model\Billing\AgreementFactory */ protected $agreementFactory; /** * @var \Magento\Checkout\Model\Session */ protected $checkoutSession; /** * Constructor * * @param \Magento\Paypal\Model\Billing\AgreementFactory $agreementFactory * @param \Magento\Checkout\Model\Session $checkoutSession */ public function __construct( \Magento\Paypal\Model\Billing\AgreementFactory $agreementFactory, \Magento\Checkout\Model\Session $checkoutSession ) { $this->agreementFactory = $agreementFactory; $this->checkoutSession = $checkoutSession; } /** * @param EventObserver $observer * @return void */ public function execute(EventObserver $observer) { /** @var \Magento\Sales\Model\Order\Payment $orderPayment */ $orderPayment = $observer->getEvent()->getPayment(); $agreementCreated = false; if ($orderPayment->getBillingAgreementData()) { $order = $orderPayment->getOrder(); /** @var \Magento\Paypal\Model\Billing\Agreement $agreement */ $agreement = $this->agreementFactory->create()->importOrderPayment($orderPayment); if ($agreement->isValid()) { $message = __('Created billing agreement #%1.', $agreement->getReferenceId()); $order->addRelatedObject($agreement); $agreement->addOrderRelation($order); $this->checkoutSession->setLastBillingAgreementReferenceId($agreement->getReferenceId()); $agreementCreated = true; } else { $message = __('We can\'t create a billing agreement for this order.'); } $comment = $order->addStatusHistoryComment($message); $order->addRelatedObject($comment); } if (!$agreementCreated) { $this->checkoutSession->unsLastBillingAgreementReferenceId(); } } }