FetchTransactionInfo.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * This file is part of the Klarna Order Management module
  4. *
  5. * (c) Klarna Bank AB (publ)
  6. *
  7. * For the full copyright and license information, please view the NOTICE
  8. * and LICENSE files that were distributed with this source code.
  9. */
  10. namespace Klarna\Ordermanagement\Gateway\Command;
  11. use Magento\Payment\Gateway\Command;
  12. /**
  13. * Class FetchTransactionInfo
  14. *
  15. * @package Klarna\Ordermanagement\Gateway\Command
  16. */
  17. class FetchTransactionInfo extends AbstractCommand
  18. {
  19. const PENDING = 0;
  20. const ACCEPT = 1;
  21. const DENY = -1;
  22. /**
  23. * FetchTransactionInfo command
  24. *
  25. * @param array $commandSubject
  26. *
  27. * @return null|Command\ResultInterface
  28. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  29. */
  30. public function execute(array $commandSubject)
  31. {
  32. /** @var \Magento\Payment\Model\InfoInterface $payment */
  33. $payment = $commandSubject['payment']->getPayment();
  34. $order = $payment->getOrder();
  35. $store = $order->getStore();
  36. if ($this->helper->getVersionConfig($store)->isPaymentReview()) {
  37. $klarnaOrder = $this->klarnaOrderRepository->getByOrder($order);
  38. $transactionId = $klarnaOrder->getReservationId();
  39. $orderStatus = $this->getOmApi($order)->getFraudStatus($transactionId);
  40. if ($orderStatus === self::ACCEPT) {
  41. $payment->setIsTransactionApproved(true);
  42. } elseif ($orderStatus === self::DENY) {
  43. $payment->setIsTransactionDenied(true);
  44. $payment->getAuthorizationTransaction()->closeAuthorization();
  45. }
  46. }
  47. return null;
  48. }
  49. }