Transaction.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Model\Payflow\Service\Response;
  7. use Magento\Framework\DataObject;
  8. use Magento\Payment\Model\Method\Logger;
  9. use Magento\Paypal\Model\Payflow\Service\Response\Handler\HandlerInterface;
  10. use Magento\Framework\Session\Generic;
  11. use Magento\Paypal\Model\Payflowpro;
  12. use Magento\Quote\Api\CartRepositoryInterface;
  13. use Magento\Paypal\Model\Payflow\Transparent;
  14. use Magento\Quote\Api\PaymentMethodManagementInterface;
  15. use Magento\Quote\Model\Quote\Payment;
  16. use Magento\Sales\Api\Data\OrderPaymentInterface;
  17. /**
  18. * Class Transaction
  19. */
  20. class Transaction
  21. {
  22. /**
  23. * @var Generic
  24. */
  25. protected $sessionTransparent;
  26. /**
  27. * @var CartRepositoryInterface
  28. */
  29. protected $quoteRepository;
  30. /**
  31. * @var Transparent
  32. */
  33. protected $transparent;
  34. /**
  35. * @var PaymentMethodManagementInterface
  36. */
  37. private $paymentManagement;
  38. /**
  39. * @var HandlerInterface
  40. */
  41. private $errorHandler;
  42. /**
  43. * @var Logger
  44. */
  45. private $logger;
  46. /**
  47. * @param Generic $sessionTransparent
  48. * @param CartRepositoryInterface $quoteRepository
  49. * @param Transparent $transparent
  50. * @param PaymentMethodManagementInterface $paymentManagement
  51. * @param HandlerInterface $errorHandler
  52. * @param Logger $logger
  53. */
  54. public function __construct(
  55. Generic $sessionTransparent,
  56. CartRepositoryInterface $quoteRepository,
  57. Transparent $transparent,
  58. PaymentMethodManagementInterface $paymentManagement,
  59. HandlerInterface $errorHandler,
  60. Logger $logger
  61. ) {
  62. $this->sessionTransparent = $sessionTransparent;
  63. $this->quoteRepository = $quoteRepository;
  64. $this->transparent = $transparent;
  65. $this->paymentManagement = $paymentManagement;
  66. $this->errorHandler = $errorHandler;
  67. $this->logger = $logger;
  68. }
  69. /**
  70. * Returns gateway response data object.
  71. *
  72. * @param array $gatewayTransactionResponse
  73. * @return DataObject
  74. */
  75. public function getResponseObject($gatewayTransactionResponse)
  76. {
  77. $response = new DataObject();
  78. $response = $this->transparent->mapGatewayResponse((array) $gatewayTransactionResponse, $response);
  79. $this->logger->debug(
  80. (array) $gatewayTransactionResponse,
  81. (array) $this->transparent->getDebugReplacePrivateDataKeys(),
  82. (bool) $this->transparent->getDebugFlag()
  83. );
  84. return $response;
  85. }
  86. /**
  87. * Saves payment information in quote.
  88. *
  89. * @param DataObject $response
  90. * @return void
  91. * @throws \InvalidArgumentException
  92. */
  93. public function savePaymentInQuote($response)
  94. {
  95. $quote = $this->quoteRepository->get($this->sessionTransparent->getQuoteId());
  96. $payment = $this->paymentManagement->get($quote->getId());
  97. if (!$payment instanceof Payment) {
  98. throw new \InvalidArgumentException("Variable must contain instance of \\Quote\\Payment.");
  99. }
  100. $payment->setData(OrderPaymentInterface::CC_TYPE, $response->getData(OrderPaymentInterface::CC_TYPE));
  101. $payment->setAdditionalInformation(Payflowpro::PNREF, $response->getData(Payflowpro::PNREF));
  102. $this->errorHandler->handle($payment, $response);
  103. $this->paymentManagement->set($quote->getId(), $payment);
  104. }
  105. }