CaptureDataBuilder.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Braintree\Gateway\Request;
  7. use Magento\Framework\Exception\LocalizedException;
  8. use Magento\Braintree\Gateway\SubjectReader;
  9. use Magento\Payment\Gateway\Request\BuilderInterface;
  10. use Magento\Payment\Helper\Formatter;
  11. /**
  12. * Class CaptureDataBuilder
  13. */
  14. class CaptureDataBuilder implements BuilderInterface
  15. {
  16. use Formatter;
  17. const TRANSACTION_ID = 'transaction_id';
  18. /**
  19. * @var SubjectReader
  20. */
  21. private $subjectReader;
  22. /**
  23. * Constructor
  24. *
  25. * @param SubjectReader $subjectReader
  26. */
  27. public function __construct(SubjectReader $subjectReader)
  28. {
  29. $this->subjectReader = $subjectReader;
  30. }
  31. /**
  32. * @inheritdoc
  33. */
  34. public function build(array $buildSubject)
  35. {
  36. $paymentDO = $this->subjectReader->readPayment($buildSubject);
  37. $payment = $paymentDO->getPayment();
  38. $transactionId = $payment->getCcTransId();
  39. if (!$transactionId) {
  40. throw new LocalizedException(__('No authorization transaction to proceed capture.'));
  41. }
  42. return [
  43. self::TRANSACTION_ID => $transactionId,
  44. PaymentDataBuilder::AMOUNT => $this->formatPrice($this->subjectReader->readAmount($buildSubject))
  45. ];
  46. }
  47. }