| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- <?php
 
- /**
 
-  * This file is part of the Klarna Order Management module
 
-  *
 
-  * (c) Klarna Bank AB (publ)
 
-  *
 
-  * For the full copyright and license information, please view the NOTICE
 
-  * and LICENSE files that were distributed with this source code.
 
-  */
 
- namespace Klarna\Ordermanagement\Gateway\Command;
 
- use Klarna\Core\Exception as KlarnaException;
 
- use Magento\Payment\Gateway\Command;
 
- /**
 
-  * Class Refund
 
-  *
 
-  * @package Klarna\Ordermanagement\Gateway\Command
 
-  */
 
- class Refund extends AbstractCommand
 
- {
 
-     /**
 
-      * Refund command
 
-      *
 
-      * @param array $commandSubject
 
-      *
 
-      * @return null|Command\ResultInterface
 
-      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 
-      */
 
-     public function execute(array $commandSubject)
 
-     {
 
-         /** @var \Magento\Payment\Model\InfoInterface $payment */
 
-         $payment = $commandSubject['payment']->getPayment();
 
-         $amount = $commandSubject['amount'];
 
-         $order = $payment->getOrder();
 
-         $klarnaOrder = $this->getKlarnaOrder($order);
 
-         if (!$klarnaOrder->getId() || !$klarnaOrder->getReservationId()) {
 
-             $e = new KlarnaException(__('Unable to refund payment for this order.'));
 
-             $this->messageManager->addErrorMessage($e->getMessage());
 
-             throw $e;
 
-         }
 
-         $response = $this->getOmApi($order)
 
-                          ->refund($klarnaOrder->getReservationId(), $amount, $payment->getCreditmemo());
 
-         if (!$response->getIsSuccessful()) {
 
-             $errorMessage = __('Payment refund failed, please try again.');
 
-             $errorMessage = $this->getFullErrorMessage($response, $errorMessage, 'refund');
 
-             throw new KlarnaException($errorMessage);
 
-         }
 
-         if ($response->getTransactionId()) {
 
-             $payment->setTransactionId($response->getTransactionId());
 
-         }
 
-         return null;
 
-     }
 
- }
 
 
  |