/** * Получаем код * @return array * @throws SmsException */ public function getCode() { //todo не сделан reset return $this->service->getCode(); }
/** @inheritdoc */ public function getCode() { $time = time(); while (true) { if (time() - $time > 60 * 15) { return [false, null]; //throw new SmsException('Превышенно время ожидания смс', 300); } $result = parent::getCode(); $result = explode(':', $result); $result[] = null; $request = array_shift($result); $code = []; foreach ($result as $resultRow) { $code[] = $resultRow; } $code = implode(':', $code); switch ($request) { case 'STATUS_WAIT_RETRY': case 'STATUS_WAIT_CODE': sleep(10); break; case 'STATUS_WAIT_RESEND': return [false, null]; //$this->setStatus(self::$METHOD_COMPLETE); //return ['RETURN', null]; //$this->setStatus(self::$METHOD_COMPLETE); //return ['RETURN', null]; case 'STATUS_OK': return [true, $code]; default: return [false, null]; //throw new SmsException($request); } } }
/** @inheritdoc */ public function getCode() { $time = time(); while (true) { if (time() - $time > 60 * 9.5) { return [false, null]; //throw new SmsException('Превышенно время ожидания смс', 300); } $result = parent::getCode(); if (self::isJson($result)) { $result = Json::decode($result); if (isset($result['response'])) { switch ($result['response']) { case 1: return [true, $result['sms']]; case 2: sleep(10); break; default: throw new SmsException(Json::encode($result)); } continue; } } throw new SmsException(Json::encode($result)); } }