function setReqvs($sbr_id, $params) { $objResponse = new xajaxResponse(); //@todo: запрещаем изменять финансы в старой СБР #29196 $objResponse->alert('Прекращена поддержка СБР.'); return $objResponse; $objResponse->script("\$('finance-update-btn').removeClass('b-button_disabled');"); $sbr_id = intval($sbr_id); if (!$sbr_id) { return $objResponse; } $uid = get_uid(0); if (!$uid) { $objResponse->redirect('/'); return $objResponse; } $reqvs = sbr_meta::getUserReqvs($uid); $sbr = sbr_meta::getInstance(); $sbr->initFromId($sbr_id); if ($sbr->status == sbr::STATUS_CANCELED) { ob_start(); include $_SERVER['DOCUMENT_ROOT'] . '/sbr/freelancer/tpl.sbr_refuse.php'; $html = ob_get_clean(); $objResponse->assign('master_content', 'innerHTML', $html); $objResponse->script('$$(".b-master").destroy();'); } $form_type = intval($params['form_type']); $rez_type = intval($params['rez_type']); if (!$rez_type) { $rez_type = $reqvs['rez_type']; } if (!$form_type || !$rez_type) { return $objResponse; } $oreqvs = $reqvs; $error = array(); $reqvs1 = array(); foreach ($params as $k => $v) { if (!array_key_exists($k, $reqvs[$form_type])) { continue; } $reqvs1[$k] = $v; $reqvs[$form_type][$k] = $v; } //if($err = sbr_meta::setUserReqv($uid, $rez_type, $form_type, $reqvs1)) { // $error = $err; //} //@todo: запрещаем изменять финансы в старой СБР #29196 $error = 'Прекращена поддержка СБР.'; if (empty($error) && ($reqvs1['mob_phone'] != $oreqvs[$form_type]['mob_phone'] && !($_SESSION['is_verify'] == 't') || $oreqvs['is_activate_mob'] == 'f')) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; if ($params['mob_phone'] != '') { $ureqv = $reqvs1; $sms_gate = new sms_gate_a1($ureqv['mob_phone']); $info = $sms_gate->getInfoSend(); $success = false; if (!$sms_gate->isNextSend()) { $success = $sms_gate->sendAuthCellCode(); if (SMS_GATE_DEBUG) { $code_debug = $sms_gate->getAuthCode(); } } if (SMS_GATE_DEBUG && !$code_debug) { $code_debug = $info['data']; } $callback_js = 'a_sms_act'; $limitIsExceed = $sms_gate->limitSmsOnNumberIsExceed($params['mob_phone'], $recordId, $count, $message); $linkText = 'СМС не пришло'; $linkStyle = sms_gate_a1::$enable_link_css; if ($message) { $linkText = "СМС не пришло ({$message})"; } if ($limitIsExceed) { $linkText = sms_gate_a1::LIMIT_EXCEED_LINK_TEXT; $linkStyle = sms_gate_a1::$disable_link_css; } if ($success) { $limitIsExceed = false; } ob_start(); include $_SERVER['DOCUMENT_ROOT'] . '/sbr/tpl.auth_sms_popup.php'; $out = ob_get_clean(); $objResponse->assign('auth_popup', 'innerHTML', $out); $objResponse->script("\$('auth_popup').show(); \$('auth_popup').removeClass('b-shadow_hide'); shadow_popup();"); $objResponse->script("\$('send_btn').removeClass('b-button_rectangle_color_disable');\n \$('send_btn').getElement('.b-button__txt').removeClass('b-button__txt_hide');\n \$('send_btn').getElement('.b-button__load').hide();"); return $objResponse; } } elseif ($oreqvs['is_activate_mob'] == 't' && $reqvs1['mob_phone'] != $oreqvs[$form_type]['mob_phone']) { $error['mob_phone'] = 'У вас привязка к другому номеру'; } //Проверка наличия и идентификации веб-кошелька только для физиков! if (!$error && !is_emp()) { $phone = $oreqvs[$form_type]['mob_phone']; $pskb = new pskb(); $res = $pskb->checkOrCreateWallet($phone); if (empty($res)) { $error['mob_phone'] = 'Ошибка соединения с Веб-кошельком.'; } else { $res = json_decode($res, 1); if (empty($res['state']) || in_array($res['state'], array('COMPLETE'))) { //'EXIST' $error['mob_phone'] = ' Веб-кошелек с указанным номером отсутствует. Для проведения сделки зарегистрируйте и идентифицируйте Веб-кошелек на указанный номер.'; } elseif (!$res['identified']) { $error['mob_phone'] = ' Ваш Веб-кошелек не идентифицирован. Для проведения сделки укажите другой номер телефона и кошелька или идентифицируйте текущий Веб-кошелек.'; } } } if (!$error) { //$_SESSION['users.setup.fin_success'] = 1; if (!hasPermissions('users')) { $smail = new smail(); $smail->FinanceChanged($_SESSION['login']); } } if ($error) { $objResponse->call('finance_err_set', $error, $form_type); return $objResponse; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/pskb.php'; $pskb_frl = new pskb_user($reqvs, intval(is_emp()), $sbr->getTotalCost()); $psystems = $pskb_frl->getPsystems(); $objResponse->script('psysDisabled = ' . json_encode($psystems['disabled']) . ';'); $objResponse->script('psysHidden = ' . json_encode($psystems['hidden']) . ';'); $objResponse->script('if(finance_check(null, true)) finance_prepare();'); // $objResponse->call('finance_spinn_hide'); return $objResponse; }
/** * Верификация через веб-кошелек ПСКБ. * Требуется заполненность ФИО, пасспорта и активированного номера телефона * * @param integer $uid uid пользователя * @return boolean результат операции */ public function pskb($uid) { global $DB; if (empty($uid)) { $this->error = 'Вы не авторизованы.'; return false; } $logId = $DB->insert('verify_pskb', array('user_id' => $uid), 'id'); // используем проверку на заполненость полей от яндекса, она подходит if (empty($this->aUserReqvs)) { if (!$this->ydCheckUserReqvs($uid)) { return false; } } $phone = $this->aUserReqvs[1]['mob_phone']; $pskb = new pskb(); $res = $pskb->checkOrCreateWallet($phone); $DB->update('verify_pskb', array('phone' => $phone, 'log' => $res), "id = ?", $logId); if (empty($res)) { $this->error = 'Ошибка соединения с Веб-кошельком.'; return false; } $res = json_decode(iconv('cp1251', 'utf8', $res), 1); if (empty($res['state']) || !in_array($res['state'], array('EXIST', 'COMPLETE'))) { $this->error = 'Веб-кошелек не создан.'; return false; } if (!$res['verified']) { $this->error = 'Для верификации у вас должен быть идентифицированный кошелек.'; return false; } $aFields = array('fio', 'birthday', 'idcard_name', 'idcard', 'idcard_from', 'idcard_by', 'mob_phone'); $this->data = array(); foreach ($aFields as $sField) { $this->data[$sField] = $this->aUserReqvs[1][$sField]; } if ($this->verify($uid)) { $DB->update('verify_pskb', array('result' => true), "id = ?", $logId); return true; } return false; }