VoidDataBuilder.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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\AuthorizenetAcceptjs\Gateway\Request;
  8. use Magento\AuthorizenetAcceptjs\Gateway\SubjectReader;
  9. use Magento\Payment\Gateway\Request\BuilderInterface;
  10. use Magento\Sales\Model\Order\Payment;
  11. /**
  12. * Adds the meta transaction information to the request
  13. */
  14. class VoidDataBuilder implements BuilderInterface
  15. {
  16. private const REQUEST_TYPE_VOID = 'voidTransaction';
  17. /**
  18. * @var SubjectReader
  19. */
  20. private $subjectReader;
  21. /**
  22. * @param SubjectReader $subjectReader
  23. */
  24. public function __construct(
  25. SubjectReader $subjectReader
  26. ) {
  27. $this->subjectReader = $subjectReader;
  28. }
  29. /**
  30. * @inheritdoc
  31. */
  32. public function build(array $buildSubject): array
  33. {
  34. $paymentDO = $this->subjectReader->readPayment($buildSubject);
  35. $payment = $paymentDO->getPayment();
  36. $transactionData = [];
  37. if ($payment instanceof Payment) {
  38. $authorizationTransaction = $payment->getAuthorizationTransaction();
  39. $refId = $authorizationTransaction->getAdditionalInformation('real_transaction_id');
  40. if (empty($refId)) {
  41. $refId = $authorizationTransaction->getParentTxnId();
  42. }
  43. $transactionData['transactionRequest'] = [
  44. 'transactionType' => self::REQUEST_TYPE_VOID,
  45. 'refTransId' => $refId
  46. ];
  47. }
  48. return $transactionData;
  49. }
  50. }