/** * @param Request $request * @return Response */ public function processNotification(Request $request) { if ($this->logger) { $this->logger->info(print_r($request->query->all(), true)); } if (!$request->query->has('transactionid')) { return new Response('Failed: No transactionid'); } try { $financialTransaction = $this->entityManager->getRepository('JMS\\Payment\\CoreBundle\\Entity\\FinancialTransaction')->findOneByTrackingId($request->query->get('transactionid')); /** * @var \JMS\Payment\CoreBundle\Entity\Payment $payment */ if (null !== $financialTransaction) { /** * @var \JMS\Payment\CoreBundle\Entity\FinancialTransaction $financialTransaction */ $payment = $financialTransaction->getPayment(); if ($payment->getState() === PaymentInterface::STATE_APPROVING) { $instruction = $payment->getPaymentInstruction(); $result = $this->pluginController->approveAndDeposit($payment->getId(), $financialTransaction->getRequestedAmount()); if ($this->logger) { $status = array(null, 'STATUS_FAILED', 'STATUS_PENDING', 'STATUS_SUCCESS', 'STATUS_UNKNOWN'); $this->logger->info('Result -> ' . $status[$result->getStatus()]); } if (Result::STATUS_SUCCESS === $result->getStatus()) { $this->pluginController->closePaymentInstruction($instruction); if ($this->logger) { $this->logger->info('closePaymentInstruction'); } } } else { if ($this->logger) { $states = array(null, 'STATE_APPROVED', 'STATE_APPROVING', 'STATE_CANCELED', 'STATE_EXPIRED', 'STATE_FAILED', 'STATE_NEW', 'STATE_DEPOSITING', 'STATE_DEPOSITED'); $this->logger->info('Payment state is not STATE_APPROVING but -> ' . $states[$payment->getState()]); } } } return new Response('OK', 201); } catch (\Exception $e) { if ($this->logger) { $this->logger->info($e->getMessage()); } return new Response('[failed]', 500); } }
public function createPayment($instructionId, $amount) { $payment = parent::createPayment($instructionId, $amount); $this->entityManager->persist($payment); $this->entityManager->flush(); return $payment; }