/** * Completes the payment process when the payment.order.success event is raised. * * This means that we can change the order state to ACCEPTED * * @param AbstractPaymentEvent $event */ public function setOrderToPaid(AbstractPaymentEvent $event) { $order = $event->getPaymentBridge()->getOrder(); if (!$order instanceof OrderInterface) { throw new \LogicException('Cannot retrieve Order from PaymentBridge'); } /** * We create the new entry in the payment state machine */ $stateLineStack = $this->paymentMachineManager->transition($order, $order->getPaymentStateLineStack(), 'pay', 'Order paid using ' . $event->getPaymentMethod()->getPaymentName()); $order->setPaymentStateLineStack($stateLineStack); /** * We save all the data */ $this->stateLineObjectManager->persist($stateLineStack->getLastStateLine()); $this->stateLineObjectManager->flush($stateLineStack->getLastStateLine()); $this->stateLineObjectManager->flush($order); }
/** * Create order given current cart. This event is only for pushing the new * Order to the payment infrastructure * * @param AbstractPaymentEvent $event Event */ public function transformCartToOrder(AbstractPaymentEvent $event) { $cart = $this->cartWrapper->get(); $order = $this->cartOrderTransformer->createOrderFromCart($cart); $event->getPaymentBridge()->setOrder($order); }