public function service() { $paypalManager = PaypalManager::getInstance(); $order_id = $_REQUEST['order_id']; $ordersManager = OrdersManager::getInstance($this->config, $this->args); list($paymentAmount, $shippingUsd) = $ordersManager->getOrderTotalUsdToPay($order_id); $currencyCodeType = "USD"; $paymentType = "Sale"; $returnURL = "https://pcstore.am/dyn/main_checkout_paypal/do_order_confirm"; $cancelURL = "https://pcstore.am/dyn/main_checkout_paypal/do_order_cancel"; $items = array(); $items[] = array('name' => 'Pcstore Order Number #' . $order_id, 'amt' => $paymentAmount, 'qty' => 1); $_SESSION["Payment_Amount"] = $paymentAmount + $shippingUsd; $resArray = $paypalManager->CallShortcutExpressCheckout($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL, $items, $shippingUsd); $ack = strtoupper($resArray["ACK"]); if ($ack == "SUCCESS" || $ack == "SUCCESSWITHWARNING") { $ordersManager->updateTextField($order_id, '3rd_party_payment_token', $resArray["TOKEN"]); $paypalManager->RedirectToPayPal($resArray["TOKEN"]); } else { //Display a user friendly Error on the page using any of the following error information returned by PayPal $ErrorCode = urldecode($resArray["L_ERRORCODE0"]); $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]); $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); echo "SetExpressCheckout API call failed. "; echo "Detailed Error Message: " . $ErrorLongMsg; echo "Short Error Message: " . $ErrorShortMsg; echo "Error Code: " . $ErrorCode; echo "Error Severity Code: " . $ErrorSeverityCode; } }
/** * Returns an singleton instance of this class * * @param object $config * @param object $args * @return */ public static function getInstance($config, $args) { if (self::$instance == null) { self::$instance = new OrdersManager($config, $args); } return self::$instance; }
public function service() { $token = urlencode($_SESSION['TOKEN']); $ordersManager = OrdersManager::getInstance($this->config, $this->args); $orderBy3rdPartyToken = $ordersManager->getOrderBy3rdPartyToken($token); if (!isset($orderBy3rdPartyToken)) { $_SESSION['error_message'] = $this->getPhrase(595); $this->redirect('orders'); } $paypalTransactionsManager = PaypalTransactionsManager::getInstance($this->config, $this->args); $orderId = $orderBy3rdPartyToken->getId(); $res = $this->getPaypalShippingDetails(); if ($res === true) { $res = $this->confirmOrder(); if ($res === true) { $_SESSION['success_message'] = sprintf($this->getPhrase(593), $orderId); $ordersManager->updateNumericField($orderId, '3rd_party_payment_received', 1); $paypalTransactionsManager->setOrderCompleted($orderId); } else { $paypalTransactionsManager->setOrderPaymentError($orderId, $res); $_SESSION['error_message'] = $res; } } else { $paypalTransactionsManager->setOrderPaymentError($orderId, $res); $_SESSION['error_message'] = $res; } $this->redirect('orders'); }
public function load() { $ordersManager = OrdersManager::getInstance($this->config, $this->args); $orderId = $this->secure($_REQUEST['order_id']); $this->addParam('order_id', $orderId); $orderDto = $ordersManager->selectByPK($orderId); $this->addParam('orderDto', $orderDto); if (isset($orderDto)) { $metadataJson = $orderDto->getMetadataJson(); $metadata = json_decode($metadataJson); $this->addParam('metadata', $metadata); } }
public function load() { $ordersManager = OrdersManager::getInstance($this->config, $this->args); if ($this->getUserLevel() === UserGroups::$ADMIN) { $showOnlyOrdersValues = array_merge(array(-1), $ordersManager->orderStatusesValues); $this->addParam('showOnlyOrdersValues', $showOnlyOrdersValues); $orderStatusesDisplayNames = array_merge(array($this->getPhrase(153)), $ordersManager->getOrderStatusesDisplayNamesPhrases()); $showOnlyOrdersDisplayNamesPphraseIdsArray = array_merge(array(153), $ordersManager->orderStatusesDisplayNamesIds); $this->addParam('showOnlyOrdersDisplayNames', $orderStatusesDisplayNames); $this->addParam('showOnlyOrdersDisplayNamesPphraseIdsArray', $showOnlyOrdersDisplayNamesPphraseIdsArray); $show_only = $showOnlyOrdersValues[1]; if (isset($_REQUEST['show_only'])) { $so = $this->secure($_REQUEST['show_only']); if (in_array($so, $showOnlyOrdersValues)) { $show_only = $so; } } $this->addParam('showOnlyOrdersSelected', $show_only); $customerOrders = $ordersManager->getAllOrdersJoinedWithDetails($show_only); } else { $customer = $this->getCustomer(); $customerEmail = strtolower($customer->getEmail()); $customerOrders = $ordersManager->getCustomerOrderJoinedWithDetails($customerEmail); } $groupedOrders = $this->groupCustomerOrders($customerOrders); $groupOrdersByOrderIdAndBundleId = $this->groupOrdersByOrderIdAndBundleId($customerOrders); $pv = $this->getPriceVariety($groupedOrders); $this->addParam('groupOrdersByOrderIdAndBundleId', $groupOrdersByOrderIdAndBundleId); $this->addParam('priceVariety', $pv); if (isset($_REQUEST['order_id'])) { $order_id = $_REQUEST['order_id']; $mess1 = $this->getPhrase(301); $mess2 = $this->getPhrase(329) . $order_id; $mess3 = $this->getPhrase(360); $this->addParam('customerMessages', array($mess1, $mess2, $mess3)); } if (isset($_SESSION['success_message'])) { $this->addParam('customerMessages', array($_SESSION['success_message'])); unset($_SESSION['success_message']); } if (isset($_SESSION['error_message'])) { $this->addParam('customerErrorMessages', array($_SESSION['error_message'])); unset($_SESSION['error_message']); } $this->addParam('itemManager', ItemManager::getInstance($this->config, $this->args)); $this->addParam('userManager', UserManager::getInstance($this->config, $this->args)); $this->addParam('orderManager', OrdersManager::getInstance($this->config, $this->args)); $this->addParam("orderStatusesValues", $ordersManager->orderStatusesValues); $this->addParam("orderStatusesDisplayNames", $ordersManager->getOrderStatusesDisplayNamesPhrases()); }
public function service() { $order_id = $this->secure($_REQUEST['order_id']); $ordersManager = OrdersManager::getInstance($this->config, $this->args); $order = $ordersManager->selectByPK($order_id); if (isset($order)) { //TODO remove order $jsonArr = array('status' => "ok"); echo json_encode($jsonArr); return true; } else { $jsonArr = array('status' => "err", "errText" => "System Error: Order does not exist!"); echo json_encode($jsonArr); return false; } }
public function service() { $order_id = $_REQUEST['order_id']; $token = $_REQUEST['stripeToken']; $userManager = UserManager::getInstance($this->config, $this->args); $ordersManager = OrdersManager::getInstance($this->config, $this->args); $orderTotalUsdToPay = $ordersManager->getOrderTotalUsdToPay($order_id, true); Stripe::setApiKey($this->getCmsVar('stripe_secret_key')); $email = $userManager->getRealEmailAddressByUserDto($this->getCustomer()); try { $charge = Stripe_Charge::create(array("card" => $token, "description" => $email . ' (order #' . $order_id . ')', 'amount' => $orderTotalUsdToPay * 100, 'currency' => 'usd')); } catch (Exception $e) { $this->error(array('message' => $e->getMessage())); } $ordersManager->updateTextField($order_id, '3rd_party_payment_token', $token); $ordersManager->updateTextField($order_id, '3rd_party_payment_received', 1); $this->ok(); }
private function initManagers() { $this->itemManager = ItemManager::getInstance($this->config, $this->args); $this->customerCartManager = CustomerCartManager::getInstance($this->config, $this->args); $this->ordersManager = OrdersManager::getInstance($this->config, $this->args); $this->bundleItemsManager = BundleItemsManager::getInstance($this->config, $this->args); $this->specialFeesManager = SpecialFeesManager::getInstance($this->config, $this->args); $this->orderDetailsManager = OrderDetailsManager::getInstance($this->config, $this->args); $this->checkoutManager = CheckoutManager::getInstance($this->config, $this->args); }
public function service() { $only_refresh = $this->secure($_REQUEST["only_refresh"]); if ($only_refresh == 1) { $jsonArr = array('status' => "ok", "message" => "ok"); echo json_encode($jsonArr); return true; } $this->ordersManager = OrdersManager::getInstance($this->config, $this->args); $this->userManager = UserManager::getInstance($this->config, $this->args); $orderId = $this->secure($_REQUEST["order_id"]); $orderDto = $this->ordersManager->selectByPK($orderId); $status = intval($this->secure($_REQUEST["status"])); if (!in_array($status, $this->ordersManager->orderStatusesValues)) { $jsonArr = array('status' => "err", "errText" => "unknown order status:'" . $status, "'"); echo json_encode($jsonArr); return false; } $orderOldStatus = $this->ordersManager->getOrderStatus($orderId); $this->ordersManager->setOrderStatus($orderId, $status); if ($orderOldStatus == 2 && $status != 2) { //then used bonuses should be subtract $userDto = $this->getUserByUserOrderId($orderId); if ($userDto) { $userId = $userDto->getId(); $usedPoints = $orderDto->getUsedPoints(); $description = "Order number {$orderId} canceled. Used points restored!"; $this->userManager->subtractUserPoints($userId, $usedPoints, $description); } } if ($orderOldStatus != 1 && $status == 1) { $parentId = $this->getUserParentIdByUserOrderId($orderId); $totalAmd = $orderDto->getOrderTotalAmd(); //bonus to parent if ($parentId > 0) { $isParentVip = $this->userManager->isVip($parentId); if ($isParentVip) { $vip_user_profit_percent_from_subuser_order = intval($this->getCmsVar('vip_user_profit_percent_from_subuser_order')); $orderProfitAmd = $this->ordersManager->calcOrderProfitAmd($orderId); $description = $vip_user_profit_percent_from_subuser_order . "% percent from profit of order number " . $orderId . " (" . $orderDto->getCustomerEmail() . "). special for VIP parent users. Order total profit:" . $orderProfitAmd . ' Դր.'; $points = intval($orderProfitAmd * $vip_user_profit_percent_from_subuser_order / 100); $this->userManager->addUserPoints($parentId, $points, $description); } else { $user_points_from_subusers_purchase_percent = intval($this->getCmsVar('user_profit_percent_from_subuser_order')); $orderProfitAmd = $this->ordersManager->calcOrderProfitAmd($orderId); $description = $user_points_from_subusers_purchase_percent . "% percent from profit of order number " . $orderId . " (" . $orderDto->getCustomerEmail() . "). Order total profit:" . $orderProfitAmd . ' Դր.'; $points = intval($orderProfitAmd * $vip_user_profit_percent_from_subuser_order / 100); $this->userManager->addUserPoints($parentId, $points, $description); //subuser first order pintont to parent $userDto = $this->getUserByUserOrderId($orderId); $ordersCount = $this->ordersManager->getCustomerTotalConfirmedOrdersCount($userDto->getEmail()); if ($ordersCount === 1) { $user_points_from_subusers_first_order = $this->getCmsVar('user_points_from_subusers_first_order'); $description = $user_points_from_subusers_first_order . ' points from first order of sub user (' . $userDto->getEmail() . ')'; $this->userManager->addUserPoints($parentId, $user_points_from_subusers_first_order, $description); } } } else { //TODO help children } $this->ordersManager->setOrderDeliverDateTime($orderId, date('Y-m-d H:i:s')); } if ($orderOldStatus == 1 && $status != 1) { //bonus to parent subtract $parentId = $this->getUserParentIdByUserOrderId($orderId); $isParentVip = $this->userManager->isVip($parentId); if ($parentId > 0) { if ($isParentVip) { $vip_user_profit_percent_from_subuser_order = intval($this->getCmsVar('vip_user_profit_percent_from_subuser_order')); $orderProfitAmd = $this->ordersManager->calcOrderProfitAmd($orderId); $description = "Order number {$orderId} canceled. Inviter VIP user points reduced. Order total profit:" . $orderProfitAmd . ' Դր. (' . $vip_user_profit_percent_from_subuser_order . "%)"; $points = intval($orderProfitAmd * $vip_user_profit_percent_from_subuser_order / 100); $this->userManager->subtractUserPoints($parentId, $points, $description); } else { $user_profit_percent_from_subuser_order = intval($this->getCmsVar('user_profit_percent_from_subuser_order')) / 100; $orderProfitAmd = $this->ordersManager->calcOrderProfitAmd($orderId); $description = "Order number {$orderId} canceled. Inviter user points reduced. Order total profit:" . $orderProfitAmd . ' Դր. (' . $user_profit_percent_from_subuser_order . "%)"; $points = intval($orderProfitAmd * $user_profit_percent_from_subuser_order / 100); $this->userManager->subtractUserPoints($parentId, $points, $description); //subuser first order pintont to parent $userDto = $this->getUserByUserOrderId($orderId); $ordersCount = $this->ordersManager->getCustomerTotalConfirmedOrdersCount($userDto->getEmail()); if ($ordersCount === 0) { $user_points_from_subusers_first_order = $this->getCmsVar('user_points_from_subusers_first_order'); $description = $user_points_from_subusers_first_order . ' points subtracted due to cancel first order of sub user (' . $userDto->getEmail() . ')'; $this->userManager->subtractUserPoints($parentId, $user_points_from_subusers_first_order, $description); } } } } if ($status == 2) { $cencel_reason = $this->secure($_REQUEST["cencel_reason"]); if (!empty($cencel_reason)) { $this->ordersManager->setOrderCancelReasonText($orderId, $cencel_reason); } //if was NOT CENCELED now it's CENCELED //used bonuses should be restore $userDto = $this->getUserByUserOrderId($orderId); if ($userDto) { $userId = $userDto->getId(); $usedPoints = $orderDto->getUsedPoints(); $description = "User used bonuses restored from order number " . $orderId; $this->userManager->addUserPoints($userId, $usedPoints, $description); } } $jsonArr = array('status' => "ok", "message" => "ok"); echo json_encode($jsonArr); return true; }