// +---------------------------------------------------------------------- namespace app\culture\controller; use think\captcha\Captcha; use think\Session; use think\Log; class Common extends Base{ public function _initialize(){ parent::_initialize(); $this->assign('current',[['title'=>'文化金融服务项目']]); } public function verify(){ $key=request()->param('key'); if(empty($key))$this->error('缺少参数'); return $this->verify_build($key); } protected function verify_build($id=''){ ob_end_clean(); $verify = new Captcha (config('verify')); return $verify->entry($id); } /** * 登录页面 * @return mixed|string */ public function login(){ $apitoken=session('api_token'); if(!empty($apitoken)){ $this->redirect(url('culture/user/index')); } $this->assign('current',[['title'=>'用户登录']]); return $this->fetch(':login'); } /** * 退出 */ public function logout(){ Session::delete('api_token'); $this->success("登出成功",url('culture/common/login')); } /** * 注册小程序用户 */ public function register(){ $token=md5('szcaee_culture'); $options = array( 'token'=>$token, //填写你设定的key 'appid'=>'wx5cf3b72f956ecbe1', //填写高级调用功能的app id, 请在微信开发模式后台查询 'appsecret'=>'281ad0e4de4c56fe39893d05c1222357', //填写高级调用功能的密钥 ); $we_obj = new \Wechat($options); $code =input('code'); if ($code) { Log::write($code); try { $json = $we_obj->getOauthAccessToken(); }catch (\Exception $e){ $this->redirect(url('culture/common/login')); } Log::write($json); if (!$json) { $this->redirect(url('culture/common/login')); } $openid=$json["openid"]; $unionid=$json["unionid"]; $access_token = $json['access_token']; $wxuser=['open_id'=>$openid]; //缓存获取用户资料 $cache=cache($openid); $nickname=$avatar=''; if($cache){ try { $userinfo=json_decode($cache,true); $nickname=$userinfo['nickname']; $avatar=$userinfo['avatar']; }catch (\Exception $e){} }else{ $userinfo=$we_obj->getOauthUserinfo($access_token,$openid); if ($userinfo && !empty($userinfo['nickname'])) { $nickname=$userinfo['nickname']; $avatar=$userinfo['headimgurl']; } $params=['nickname'=>$nickname,'avatar'=>$avatar]; cache($openid,json_encode($params)); } if($nickname)$wxuser['nickname']=$nickname; if($avatar)$wxuser['avatar']=$avatar; $wxuser['unionid']=$unionid; $wxuser['timestamp']=time(); $url=$this->hostpath."/api/auth/register"; $secret="098f6bcd4621d373cade4e832627b4f6"; $token=$this->getSign($secret, $wxuser); $wxuser['token']=$token; $result=['status'=>0]; Log::write($wxuser); try { $res=go_curl($url,'POST',$wxuser,['Accept'=>'application/json']); Log::write($res); $res=json_decode($res,true); if(isset($res['status'])&&$res['status']){ $result['status']=$res['status']; Session::delete('api_token'); session('api_token',$res['access_token']); } }catch (\Exception $e){ } if($result['status']){ $this->redirect(url('culture/user/index')); }else{ $this->redirect(url('culture/common/login')); } } } // 获取sign protected function getSign($secret, $data) { if (isset($data['token'])) unset($data['token']); // 对数组的值按key排序 ksort($data); // 生成url的形式 $params = http_build_query($data); // 生成sign $sign = md5($params . $secret); return $sign; } }