/** * Validates output data for Order/Status service * Checks non empty response * Checks required items * Checks variables type * Controls status code in code list * * @param $responseData * * @return bool * @throws ExpectedResponseDataException * @throws InvalidStatusTypeException * @throws MissingRequiredDataException */ public function validate($responseData) { if (empty($responseData)) { throw new ExpectedResponseDataException('Response data cannot be null'); } if (!$this->checkRequiredItems($this->requiredItems, $responseData)) { throw new MissingRequiredDataException('Response must contain all required data'); } $this->checkVariableType($responseData[OrderStatusService::KEY_ORDER], self::TYPE_INTEGER); $this->checkVariableType($responseData[OrderStatusService::KEY_STATUS], self::TYPE_INTEGER); if (!$this->orderStatusCodes->isValid($responseData[OrderStatusService::KEY_STATUS])) { throw new InvalidStatusTypeException('Cannot found status in code list'); } return true; }
/** * @return array|null * @throws \Hcapi\Services\ServiceException * @throws \Hcapi\Services\UndefinedCallbackException */ function listenRouteCallbackExample() { /** * Specific url required by Heureka */ $routeUrl = $_SERVER['REQUEST_URI']; /** * Data received from Heureka */ $receiveData = $_POST; if ($routeUrl === '/api/1/products/availability') { $service = new ProductsAvailability(); return $service->processData(['Example\\CallableExample\\ProductsAvailability', 'getActualData'], $receiveData); } if ($routeUrl === '/api/1/payment/delivery') { $service = new PaymentDelivery(); return $service->processData(['Example\\CallableExample\\PaymentDelivery', 'getTransportsPayments'], $receiveData); } if ($routeUrl === '/api/1/order/status') { $service = new OrderStatus(); return $service->processData(['Example\\CallableExample\\OrderStatus', 'checkStatus'], $receiveData); } if ($routeUrl === '/api/1/order/send') { $service = new OrderSend(); return $service->processData(['Example\\CallableExample\\OrderSend', 'processOrder'], $receiveData); } if ($routeUrl === '/api/1/order/cancel') { $service = new OrderCancel(); return $service->processData(['Example\\CallableExample\\OrderCancel', 'cancelOrder'], $receiveData); } if ($routeUrl === '/api/1/payment/status') { $service = new PaymentStatus(); return $service->processData(['Example\\CallableExample\\PaymentStatus', 'setPaymentStatus'], $receiveData); } return null; }