MerchantAccountDataBuilder.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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\Braintree\Gateway\Request;
  8. use Magento\Braintree\Gateway\Config\Config;
  9. use Magento\Braintree\Gateway\SubjectReader;
  10. use Magento\Payment\Gateway\Request\BuilderInterface;
  11. /**
  12. * Adds Merchant Account ID to the request if it was specified in the configuration.
  13. */
  14. class MerchantAccountDataBuilder implements BuilderInterface
  15. {
  16. /**
  17. * The merchant account ID used to create a transaction.
  18. * Currency is also determined by merchant account ID.
  19. * If no merchant account ID is specified, Braintree will use your default merchant account.
  20. */
  21. private static $merchantAccountId = 'merchantAccountId';
  22. /**
  23. * @var Config
  24. */
  25. private $config;
  26. /**
  27. * @var SubjectReader
  28. */
  29. private $subjectReader;
  30. /**
  31. * Constructor
  32. *
  33. * @param Config $config
  34. * @param SubjectReader $subjectReader
  35. */
  36. public function __construct(Config $config, SubjectReader $subjectReader)
  37. {
  38. $this->config = $config;
  39. $this->subjectReader = $subjectReader;
  40. }
  41. /**
  42. * @inheritdoc
  43. */
  44. public function build(array $buildSubject): array
  45. {
  46. $paymentDO = $this->subjectReader->readPayment($buildSubject);
  47. $order = $paymentDO->getOrder();
  48. $result = [];
  49. $merchantAccountId = $this->config->getMerchantAccountId($order->getStoreId());
  50. if (!empty($merchantAccountId)) {
  51. $result[self::$merchantAccountId] = $merchantAccountId;
  52. }
  53. return $result;
  54. }
  55. }