public function onPaymentDone(PaymentEvent $event)
    {
        $payment = $event->getPayment();
        if (!$payment instanceof OrderPayment) {
            return;
        }

        $order = $payment->getOrder();
        if ($order->getLocked()) {
            $order->setLocked(false);
            $this->updateOrder($order, $event);
        }

        $returnPath = null;
        $details = $payment->getDetails();
        if (array_key_exists('done_redirect_path', $details)) {
            $returnPath = $details['done_redirect_path'];
        } else {
            $type = $order->getType();
            if ($type === OrderTypes::TYPE_CART) {
                $returnPath = $this->urlGenerator->generate('ekyna_cart_payment');
            } elseif ($type === OrderTypes::TYPE_QUOTE) {
                throw new \BadMethodCallException('Not yet implemented');
            } elseif ($type === OrderTypes::TYPE_ORDER) {
                if ($this->authorization->isGranted('ROLE_ADMIN')) {
                    $returnPath = $this->urlGenerator->generate(
                        'ekyna_order_order_admin_show',
                        array('orderId' => $order->getId())
                    );
                } else {
                    $returnPath = $this->urlGenerator->generate(
                        'ekyna_cart_confirmation',
                        array(
                            'orderKey' => $order->getKey(),
                            'paymentId' => $payment->getId(),
                        )
                    );
                }
            }
        }

        if (null === $returnPath) {
            throw new LogicException('Unable to determine return path.');
        }

        $event->setResponse(new RedirectResponse($returnPath));
    }
public function onPaymentDone(PaymentEvent $event)
    {
        $payment = $event->getPayment();
        if (!$payment instanceof OrderPayment) {
            return;
        }

        $order = $payment->getOrder();
        if ($order->getLocked()) {
            $order->setLocked(false);
            $this->updateOrder($order, $event);
        }

        $returnPath = null;
        $details = $payment->getDetails();
        if (array_key_exists('done_redirect_path', $details)) {
            $returnPath = $details['done_redirect_path'];
        } else {
            $type = $order->getType();
            if ($type === OrderTypes::TYPE_CART) {
                $returnPath = $this->urlGenerator->generate('ekyna_cart_payment');
            } elseif ($type === OrderTypes::TYPE_QUOTE) {
                throw new \BadMethodCallException('Not yet implemented');
            } elseif ($type === OrderTypes::TYPE_ORDER) {
                if ($this->authorization->isGranted('ROLE_ADMIN')) {
                    $returnPath = $this->urlGenerator->generate(
                        'ekyna_order_order_admin_show',
                        array('orderId' => $order->getId())
                    );
                } else {
                    $returnPath = $this->urlGenerator->generate(
                        'ekyna_cart_confirmation',
                        array(
                            'orderKey' => $order->getKey(),
                            'paymentId' => $payment->getId(),
                        )
                    );
                }
            }
        }

        if (null === $returnPath) {
            throw new LogicException('Unable to determine return path.');
        }

        $event->setResponse(new RedirectResponse($returnPath));
    }
public function onPaymentDone ( PaymentEvent $ event ) { $ payment = $ event -> getPayment ( ) ; if ( ! $ payment instanceof OrderPayment ) { return ; } $ order = $ payment -> getOrder ( ) ; if ( $ order -> getLocked ( ) ) { $ order -> setLocked ( false ) ; $ this -> updateOrder ( $ order , $ event ) ; } $ returnPath = null ; $ details = $ payment -> getDetails ( ) ; if ( array_key_exists ( 'done_redirect_path' , $ details ) ) { $ returnPath = $ details [ 'done_redirect_path' ] ; } else { $ type = $ order -> getType ( ) ; if ( $ type === OrderTypes :: TYPE_CART ) { $ returnPath = $ this -> urlGenerator -> generate ( 'ekyna_cart_payment' ) ; } elseif ( $ type === OrderTypes :: TYPE_QUOTE ) { throw new \ BadMethodCallException ( 'Not yet implemented' ) ; } elseif ( $ type === OrderTypes :: TYPE_ORDER ) { if ( $ this -> authorization -> isGranted ( 'ROLE_ADMIN' ) ) { $ returnPath = $ this -> urlGenerator -> generate ( 'ekyna_order_order_admin_show' , array ( 'orderId' => $ order -> getId ( ) ) ) ; } else { $ returnPath = $ this -> urlGenerator -> generate ( 'ekyna_cart_confirmation' , array ( 'orderKey' => $ order -> getKey ( ) , 'paymentId' => $ payment -> getId ( ) , ) ) ; } } } if ( null === $ returnPath ) { throw new LogicException ( 'Unable to determine return path.' ) ; } $ event -> setResponse ( new RedirectResponse ( $ returnPath ) ) ; }
Payment done event handler.

@param PaymentEvent $event
@throws LogicException
Payment done event handler .