BraintreeAdapterFactory.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Braintree\Model\Adapter;
  7. use Magento\Braintree\Gateway\Config\Config;
  8. use Magento\Framework\ObjectManagerInterface;
  9. /**
  10. * This factory is preferable to use for Braintree adapter instance creation.
  11. */
  12. class BraintreeAdapterFactory
  13. {
  14. /**
  15. * @var ObjectManagerInterface
  16. */
  17. private $objectManager;
  18. /**
  19. * @var Config
  20. */
  21. private $config;
  22. /**
  23. * @param ObjectManagerInterface $objectManager
  24. * @param Config $config
  25. */
  26. public function __construct(ObjectManagerInterface $objectManager, Config $config)
  27. {
  28. $this->config = $config;
  29. $this->objectManager = $objectManager;
  30. }
  31. /**
  32. * Creates instance of Braintree Adapter.
  33. *
  34. * @param int|null $storeId if null is provided as an argument, then current scope will be resolved
  35. * by \Magento\Framework\App\Config\ScopeCodeResolver (useful for most cases) but for adminhtml area the store
  36. * should be provided as the argument for correct config settings loading.
  37. * @return BraintreeAdapter
  38. */
  39. public function create($storeId = null)
  40. {
  41. return $this->objectManager->create(
  42. BraintreeAdapter::class,
  43. [
  44. 'merchantId' => $this->config->getMerchantId($storeId),
  45. 'publicKey' => $this->config->getValue(Config::KEY_PUBLIC_KEY, $storeId),
  46. 'privateKey' => $this->config->getValue(Config::KEY_PRIVATE_KEY, $storeId),
  47. 'environment' => $this->config->getEnvironment($storeId),
  48. ]
  49. );
  50. }
  51. }