ToOrderPayment.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Quote\Model\Quote\Payment;
  7. use Magento\Quote\Model\Quote\Payment;
  8. use Magento\Sales\Api\OrderPaymentRepositoryInterface as OrderPaymentRepository;
  9. use Magento\Sales\Api\Data\OrderPaymentInterface;
  10. use Magento\Framework\DataObject\Copy;
  11. use Magento\Payment\Model\Method\Substitution;
  12. /**
  13. * Class ToOrderPayment
  14. */
  15. class ToOrderPayment
  16. {
  17. /**
  18. * @var Copy
  19. */
  20. protected $objectCopyService;
  21. /**
  22. * @var OrderPaymentRepository
  23. */
  24. protected $orderPaymentRepository;
  25. /**
  26. * @var \Magento\Framework\Api\DataObjectHelper
  27. */
  28. protected $dataObjectHelper;
  29. /**
  30. * @param OrderPaymentRepository $orderPaymentRepository
  31. * @param Copy $objectCopyService
  32. * @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
  33. */
  34. public function __construct(
  35. OrderPaymentRepository $orderPaymentRepository,
  36. Copy $objectCopyService,
  37. \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
  38. ) {
  39. $this->orderPaymentRepository = $orderPaymentRepository;
  40. $this->objectCopyService = $objectCopyService;
  41. $this->dataObjectHelper = $dataObjectHelper;
  42. }
  43. /**
  44. * @param Payment $object
  45. * @param array $data
  46. * @return OrderPaymentInterface
  47. */
  48. public function convert(Payment $object, $data = [])
  49. {
  50. $paymentData = $this->objectCopyService->getDataFromFieldset(
  51. 'quote_convert_payment',
  52. 'to_order_payment',
  53. $object
  54. );
  55. $orderPayment = $this->orderPaymentRepository->create();
  56. $this->dataObjectHelper->populateWithArray(
  57. $orderPayment,
  58. array_merge($paymentData, $data),
  59. \Magento\Sales\Api\Data\OrderPaymentInterface::class
  60. );
  61. $orderPayment->setAdditionalInformation(
  62. array_merge(
  63. $object->getAdditionalInformation(),
  64. [Substitution::INFO_KEY_TITLE => $object->getMethodInstance()->getTitle()]
  65. )
  66. );
  67. // set directly on the model
  68. $orderPayment->setCcNumber($object->getCcNumber());
  69. $orderPayment->setCcCid($object->getCcCid());
  70. return $orderPayment;
  71. }
  72. }