CaptureDataBuilder.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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\AuthorizenetAcceptjs\Model\PassthroughDataObject;
  10. use Magento\Payment\Gateway\Request\BuilderInterface;
  11. use Magento\Sales\Model\Order\Payment;
  12. /**
  13. * Adds the meta transaction information to the request
  14. */
  15. class CaptureDataBuilder implements BuilderInterface
  16. {
  17. private const REQUEST_TYPE_PRIOR_AUTH_CAPTURE = 'priorAuthCaptureTransaction';
  18. /**
  19. * @var SubjectReader
  20. */
  21. private $subjectReader;
  22. /**
  23. * @var PassthroughDataObject
  24. */
  25. private $passthroughData;
  26. /**
  27. * @param SubjectReader $subjectReader
  28. * @param PassthroughDataObject $passthroughData
  29. */
  30. public function __construct(
  31. SubjectReader $subjectReader,
  32. PassthroughDataObject $passthroughData
  33. ) {
  34. $this->subjectReader = $subjectReader;
  35. $this->passthroughData = $passthroughData;
  36. }
  37. /**
  38. * @inheritdoc
  39. */
  40. public function build(array $buildSubject): array
  41. {
  42. $paymentDO = $this->subjectReader->readPayment($buildSubject);
  43. $payment = $paymentDO->getPayment();
  44. $data = [];
  45. if ($payment instanceof Payment) {
  46. $authTransaction = $payment->getAuthorizationTransaction();
  47. $refId = $authTransaction->getAdditionalInformation('real_transaction_id');
  48. $data = [
  49. 'transactionRequest' => [
  50. 'transactionType' => self::REQUEST_TYPE_PRIOR_AUTH_CAPTURE,
  51. 'refTransId' => $refId
  52. ]
  53. ];
  54. $this->passthroughData->setData(
  55. 'transactionType',
  56. $data['transactionRequest']['transactionType']
  57. );
  58. }
  59. return $data;
  60. }
  61. }