Exemple #1
0
 /**
  * @param Order $order
  * @param PaymentOperation $operation
  * @param mixed $transactionType
  */
 protected function processPaymentOperation($order, $operation, $transactionType)
 {
     $this->pixie->dispatcher->dispatch(Events::PAYMENT_OPERATION_SUCCEEDED, new PaymentOperationSucceededEvent($order->payment, $operation, $this->request));
     if ($transactionType == PaymentOperation::TR_TYPE_IMMEDIATE_PAYMENT) {
         if ($order->payment->isPayable()) {
             $order->payment->status = PaymentModel::STATUS_PAYED;
             $order->payment->save();
             $this->pixie->dispatcher->dispatch(Events::PAYMENT_PAYED, new PaymentPayedEvent($order->payment));
         }
         if ($order->isPayable()) {
             $order->status = Order::STATUS_PROCESSING;
             $order->save();
             $this->pixie->dispatcher->dispatch(Events::ORDER_STATUS_CHANGED, new OrderStatusChangedEvent($order, $order->status));
             $this->pixie->dispatcher->dispatch(Events::ORDER_PAYED, new OrderPayedEvent($order, $order->payment));
         }
         $this->redirect('/checkout/order/' . $order->uid);
     } else {
         if ($transactionType == PaymentOperation::TR_TYPE_REFUND) {
             if ($order->payment->isRefundable()) {
                 $order->payment->status = PaymentModel::STATUS_REFUNDED;
                 $order->payment->save();
                 $this->pixie->dispatcher->dispatch(Events::PAYMENT_REFUNDED, new PaymentRefundedEvent($order->payment));
             }
             if ($order->isRefundable()) {
                 $order->status = Order::STATUS_REFUNDED;
                 $order->save();
                 $this->pixie->dispatcher->dispatch(Events::ORDER_STATUS_CHANGED, new OrderStatusChangedEvent($order, $order->status));
                 $this->pixie->dispatcher->dispatch(Events::ORDER_REFUNDED, new OrderRefundedEvent($order, $order->payment));
             }
             $this->redirect('/account/orders/' . $order->uid);
         }
     }
 }