OrderOperation.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Order\Payment\Operations;
  7. use Magento\Sales\Api\Data\OrderPaymentInterface;
  8. use Magento\Sales\Model\Order\Payment;
  9. use Magento\Sales\Model\Order\Payment\Transaction;
  10. /**
  11. * Class Order
  12. */
  13. class OrderOperation extends AbstractOperation
  14. {
  15. /**
  16. * @param OrderPaymentInterface $payment
  17. * @param string|float $amount
  18. * @return OrderPaymentInterface
  19. */
  20. public function order(OrderPaymentInterface $payment, $amount)
  21. {
  22. /**
  23. * @var $payment Payment
  24. */
  25. // update totals
  26. $amount = $payment->formatAmount($amount, true);
  27. // do ordering
  28. $order = $payment->getOrder();
  29. $method = $payment->getMethodInstance();
  30. $method->setStore($order->getStoreId());
  31. $method->order($payment, $amount);
  32. if ($payment->getSkipOrderProcessing()) {
  33. return $payment;
  34. }
  35. $message = $this->stateCommand->execute($payment, $amount, $order);
  36. // update transactions, order state and add comments
  37. $transaction = $payment->addTransaction(Transaction::TYPE_ORDER);
  38. $message = $payment->prependMessage($message);
  39. $payment->addTransactionCommentsToOrder($transaction, $message);
  40. return $payment;
  41. }
  42. }