VaultCaptureDataBuilder.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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\Braintree\Gateway\SubjectReader;
  8. use Magento\Framework\Exception\LocalizedException;
  9. use Magento\Payment\Gateway\Command\CommandException;
  10. use Magento\Payment\Gateway\Request\BuilderInterface;
  11. use Magento\Payment\Helper\Formatter;
  12. /**
  13. * Class VaultCaptureDataBuilder
  14. */
  15. class VaultCaptureDataBuilder implements BuilderInterface
  16. {
  17. use Formatter;
  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. $extensionAttributes = $payment->getExtensionAttributes();
  39. $paymentToken = $extensionAttributes->getVaultPaymentToken();
  40. if ($paymentToken === null) {
  41. throw new CommandException(__('The Payment Token is not available to perform the request.'));
  42. }
  43. return [
  44. 'amount' => $this->formatPrice($this->subjectReader->readAmount($buildSubject)),
  45. 'paymentMethodToken' => $paymentToken->getGatewayToken()
  46. ];
  47. }
  48. }