TransferFactory.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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\Http;
  8. use Magento\Payment\Gateway\Http\TransferBuilder;
  9. use Magento\Payment\Gateway\Http\TransferFactoryInterface;
  10. use Magento\Payment\Gateway\Http\TransferInterface;
  11. use Magento\AuthorizenetAcceptjs\Gateway\Http\Payload\FilterInterface;
  12. /**
  13. * Can create a transfer object
  14. */
  15. class TransferFactory implements TransferFactoryInterface
  16. {
  17. /**
  18. * @var TransferBuilder
  19. */
  20. private $transferBuilder;
  21. /**
  22. * @var array
  23. */
  24. private $payloadFilters;
  25. /**
  26. * @param TransferBuilder $transferBuilder
  27. * @param FilterInterface[] $payloadFilters
  28. */
  29. public function __construct(
  30. TransferBuilder $transferBuilder,
  31. array $payloadFilters = []
  32. ) {
  33. $this->transferBuilder = $transferBuilder;
  34. $this->payloadFilters = $payloadFilters;
  35. }
  36. /**
  37. * Builds gateway transfer object
  38. *
  39. * @param array $request
  40. * @return TransferInterface
  41. */
  42. public function create(array $request)
  43. {
  44. foreach ($this->payloadFilters as $filter) {
  45. $request = $filter->filter($request);
  46. }
  47. return $this->transferBuilder
  48. ->setBody($request)
  49. ->build();
  50. }
  51. }