/** * Orders endpoint */ protected function orders($args) { // Manage informations $datas = $this->data; if (is_null($datas)) { $error = PowaTagErrorType::$BAD_REQUEST; return PowaTagAPI::powaError($error); } if ($this->verb == 'costs') { if (isset($datas->order)) { $customer = $datas->order->customer; } else { $customer = current($datas->orders)->customer; } if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process calculate Costs', PowaTagLogs::IN_PROGRESS, 'Customer : ' . $customer->firstName . ' ' . $customer->lastName); } if (PowaTagAPI::requestLog()) { PowaTagLogs::initRequestLog('Process calculate Costs', PowaTagLogs::IN_PROGRESS, $datas); } $powatagcosts = new PowaTagCosts($datas); if ($error = $powatagcosts->getError()) { $message = $error['message']; if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process order', PowaTagLogs::ERROR, $message); } return PowaTagAPI::powaError($error); } if ($value = $powatagcosts->getSummary()) { if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process calculate Costs', PowaTagLogs::SUCCESS, 'Customer : ' . $customer->firstName . ' ' . $customer->lastName); } if (PowaTagAPI::requestLog()) { PowaTagLogs::initRequestLog('Process calculate Costs', PowaTagLogs::SUCCESS, $value); } return $value; } else { $error = $powatagcosts->getError(); if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process calculate Costs', PowaTagLogs::ERROR, $error['message']); } return PowaTagAPI::powaError($error); } } else { if (count($args) == 2 && Validate::isInt($args[0]) && ($args[1] = 'confirm-payment')) { //Three step payment confirmation if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process payment', PowaTagLogs::IN_PROGRESS, 'Order ID : ' . $args[0]); } if (PowaTagAPI::requestLog()) { PowaTagLogs::initRequestLog('Create payment', PowaTagLogs::IN_PROGRESS, $datas); } $payment = new PowaTagPayment($datas, (int) $args[0]); if ($id_order = $payment->confirmPayment()) { if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process payment', PowaTagLogs::SUCCESS, 'ID Order : ' . $id_order); } if (PowaTagAPI::requestLog()) { PowaTagLogs::initRequestLog('Process payment', PowaTagLogs::SUCCESS, $id_order); } $data = array('providerTxCode' => isset($datas->paymentResult->providerTxCode) ? $datas->paymentResult->providerTxCode : 'providerTxCode Empty', 'message' => 'Authorization success order ' . $id_order . ' created'); if ($payment->checkOrderState($id_order, $data) == 'error') { $this->setResponse($data['response']); } return $data; } else { $error = $payment->getError(); if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process payment', PowaTagLogs::ERROR, $error['message']); } return PowaTagAPI::powaError($error); } } else { if (!count($args)) { //Two step payment or three step payment if (isset($datas->order)) { $customer = $datas->order->customer; } else { $customer = current($datas->orders)->customer; } if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process order 123', PowaTagLogs::IN_PROGRESS, 'Customer : ' . $customer->firstName . ' ' . $customer->lastName); } if (PowaTagAPI::requestLog()) { PowaTagLogs::initRequestLog('Create order', PowaTagLogs::IN_PROGRESS, $datas); } $order = new PowaTagOrders($datas); if ($error = $order->getError()) { $message = $error['message']; if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process order', PowaTagLogs::ERROR, $message); } return PowaTagAPI::powaError($error); } list($id_cart, $id_order, $message) = $order->validateOrder(); if ($id_order || $id_cart) { if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process order', PowaTagLogs::SUCCESS, 'Order has been created : ' . $id_order); } $link = new Link(); $cart = new Cart($id_cart); $data = array('orderResults' => array(array('orderId' => $id_order ? $id_order : $id_cart, 'message' => $message, 'redirectUrl' => $link->getModuleLink('powatag', 'confirmation', array('id_cart' => (int) $id_cart, 'id_customer' => (int) $cart->id_customer))))); if ($error = $order->getError()) { return PowaTagAPI::powaError($error); } if ($order->checkOrderState($id_order, $data)) { $this->setResponse($data['response']); } return $data; } else { $message = ''; $errorCode = ''; if ($error = $order->getError()) { $message = $error['message']; } if (PowaTagAPI::apiLog()) { PowaTagLogs::initAPILog('Process order', PowaTagLogs::ERROR, $message); } return PowaTagAPI::powaError($error); } } } } }