Esempio n. 1
0
 public function createPayment(OrderInterface $order, $moduleName, $methodName, array $details = [])
 {
     try {
         $this->entityManager->beginTransaction();
         $payment = new Payment();
         $payment->setOrder($order);
         $payment->setCurrency($order->getCurrency());
         $payment->setAmount($order->getPrice());
         $payment->setPaymentModule($this->entityManager->getReference("AgitOrderBundle:PaymentModule", $moduleName));
         $payment->setPaymentMethod($this->entityManager->getReference("AgitOrderBundle:PaymentMethod", $methodName));
         $payment->setCode(StringHelper::createRandomString(8, "un"));
         $payment->setCreated(new DateTime());
         $payment->setDetails($details);
         $payment->setStatus(Payment::STATUS_OPEN);
         $order->addPayment($payment);
         $this->persistPayment($payment);
         $this->eventDispatcher->dispatch("agit.payment.created", new PaymentEvent($payment));
         $this->entityManager->commit();
     } catch (Exception $e) {
         $this->entityManager->rollback();
         throw $e;
     }
     return $payment;
 }