예제 #1
0
 /**
  * Check if Cart is Valid for Condition
  *
  * @param Cart $cart
  * @param PriceRule $priceRule
  * @param bool|false $throwException
  * @return bool
  * @throws \Exception
  */
 public function checkCondition(Cart $cart, PriceRule $priceRule, $throwException = false)
 {
     $session = Tool::getSession();
     if ($cart->getUser() instanceof CoreShopUser && $session->user instanceof CoreShopUser) {
         if (!$cart->getUser()->getId() == $session->user->getId()) {
             if ($throwException) {
                 throw new \Exception("You cannot use this voucher");
             } else {
                 return false;
             }
         }
     }
     return true;
 }
예제 #2
0
 /**
  * This Action can be called via Frontend
  * @throws \CoreShop\Exception
  * @throws \CoreShop\Exception\ObjectUnsupportedException
  */
 public function paymentReturnAction()
 {
     $requestData = $this->parseRequestData();
     $this->disableLayout();
     $this->disableViewAutoRender();
     \Pimcore\Logger::notice('OmniPay paymentReturn [Postfinance]. TransactionID: ' . $requestData['transaction'] . ', Status: ' . $requestData['status']);
     $redirectUrl = '';
     if ($requestData['status'] === 5) {
         if (!empty($requestData['transaction'])) {
             $cart = \CoreShop\Model\Cart::findByCustomIdentifier($requestData['transaction']);
             if ($cart instanceof \CoreShop\Model\Cart) {
                 \Pimcore\Logger::notice('OmniPay paymentReturn [Postfinance]: create order with: ' . $requestData['transaction']);
                 $order = $cart->createOrder(\CoreShop\Model\Order\State::getById(\CoreShop\Model\Configuration::get("SYSTEM.ORDERSTATE.PAYMENT")), $this->getModule(), $cart->getTotal(), $this->view->language);
                 $payments = $order->getPayments();
                 foreach ($payments as $p) {
                     $dataBrick = new \Pimcore\Model\Object\Objectbrick\Data\CoreShopPaymentOmnipay($p);
                     $dataBrick->setTransactionId($requestData['transaction']);
                     $p->save();
                 }
                 $redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getConfirmationUrl($order);
             } else {
                 \Pimcore\Logger::notice('OmniPay paymentReturn [Postfinance]: Cart with identifier' . $requestData['transaction'] . 'not found');
                 $redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl('cart with identifier' . $requestData['transaction'] . 'not found');
             }
         } else {
             \Pimcore\Logger::notice('OmniPay paymentReturn [Postfinance]: No valid transaction id given');
             $redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl('no valid transaction id given');
         }
     } else {
         \Pimcore\Logger::notice('OmniPay paymentReturn [Postfinance]: Error Status: ' . $requestData['status']);
         $redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl('Postfinance returned with an error. Error Status: ' . $requestData['status']);
     }
     $this->redirect($redirectUrl);
     exit;
 }
예제 #3
0
 public function paymentReturnAction()
 {
     $returnvalue = $_REQUEST['PROCESSING_RESULT'];
     if ($returnvalue) {
         $transactionIdentification = $_REQUEST['IDENTIFICATION_TRANSACTIONID'];
         $cart = \CoreShop\Model\Cart::findByCustomIdentifier($transactionIdentification);
         if ($cart instanceof \CoreShop\Model\Cart) {
             if (strstr($returnvalue, "ACK")) {
                 $order = $cart->createOrder(\CoreShop\Model\Order\State::getById(\CoreShop\Model\Configuration::get("SYSTEM.ORDERSTATE.PAYMENT")), $this->getModule(), $cart->getTotal(), $this->view->language);
                 $payments = $order->getPayments();
                 foreach ($payments as $p) {
                     $dataBrick = new CoreShopPaymentPayunity($p);
                     $dataBrick->setIdentificationUniqeId($_POST['IDENTIFICATION_UNIQUEID']);
                     $dataBrick->setIdentificationShortId($_POST['IDENTIFICATION_SHORTID']);
                     $p->save();
                 }
                 echo Pimcore\Tool::getHostUrl() . $this->getModule()->getConfirmationUrl($order);
             } else {
                 echo Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl();
             }
         } else {
             echo Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl();
         }
     } else {
         echo Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl();
     }
     exit;
     //We only need to output a URL for Payunity
 }
예제 #4
0
 public function paymentReturnAction()
 {
     $transaction = $_REQUEST['reference'];
     $status = $_REQUEST['transStatus'];
     if ($status === 'Y') {
         if ($transaction) {
             $cart = \CoreShop\Model\Cart::findByCustomIdentifier($transaction);
             if ($cart instanceof \CoreShop\Model\Cart) {
                 $order = $cart->createOrder(\CoreShop\Model\Order\State::getById(\CoreShop\Model\Configuration::get("SYSTEM.ORDERSTATE.PAYMENT")), $this->getModule(), $this->cart->getTotal(), $this->view->language);
                 $payments = $order->getPayments();
                 foreach ($payments as $p) {
                     $dataBrick = new \Pimcore\Model\Object\Objectbrick\Data\CoreShopPaymentOmnipay($p);
                     $dataBrick->setTransactionId($transaction);
                     $p->save();
                 }
                 $this->view->redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getConfirmationUrl($order);
             } else {
                 $this->view->redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl();
             }
         } else {
             $this->view->redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl();
         }
     } else {
         $this->view->redirectUrl = Pimcore\Tool::getHostUrl() . $this->getModule()->getErrorUrl();
     }
     $this->disableLayout();
 }
예제 #5
0
 /**
  * Check if Cart is Valid for Condition
  *
  * @param Cart $cart
  * @param PriceRule $priceRule
  * @param bool|false $throwException
  * @return bool
  * @throws \Exception
  */
 public function checkCondition(Cart $cart, PriceRule $priceRule, $throwException = false)
 {
     //Check Cart Amount
     if ($this->getMinAmount() > 0) {
         $minAmount = $this->getMinAmount();
         $minAmount = Tool::convertToCurrency($minAmount, $this->getCurrency(), Tool::getCurrency());
         $cartTotal = $cart->getSubtotal();
         if ($minAmount > $cartTotal) {
             if ($throwException) {
                 throw new \Exception("You have not reached the minimum amount required to use this voucher");
             } else {
                 return false;
             }
         }
     }
     return true;
 }
예제 #6
0
 /**
  * Check if Cart is Valid for Condition
  *
  * @param Cart $cart
  * @param PriceRule $priceRule
  * @param bool|false $throwException
  * @return bool
  * @throws \Exception
  */
 public function checkCondition(Cart $cart, PriceRule $priceRule, $throwException = false)
 {
     $found = false;
     if ($this->getCategory() instanceof CoreShopCategory) {
         foreach ($cart->getItems() as $i) {
             if ($i->getProduct()->inCategory($this->getCategory())) {
                 $found = true;
             }
         }
     }
     if (!$found) {
         if ($throwException) {
             throw new \Exception("You cannot use this voucher with these products");
         } else {
             return false;
         }
     }
     return true;
 }
예제 #7
0
 /**
  * get payment fee
  *
  * @param Cart $cart
  * @return float
  */
 private function getPaymentFeeForCart(Cart $cart)
 {
     $carrier = $cart->getCarrier();
     if (Configuration::get("COD.CARRIER.PRICE." . $carrier->getId())) {
         return Configuration::get("COD.CARRIER.PRICE." . $carrier->getId());
     }
     return 0;
 }