setError("缺少回调参数code"); return false; } if (empty($state)) { $this->setError("缺少回调参数state"); return false; } // 获取access token $wxopenobj = new mWeixinOpen(); $res = $wxopenobj->getAccessToken($code); if (!$res) { $this->setError($wxopenobj->getError()); return false; } // 获取扫码登录用户信息 $userinfo = $wxopenobj->getUserInfo($res['access_token'], $res['openid']); if (!$userinfo) { $this->setError($wxopenobj->getError()); return false; } $uobj = new mUser(); $agent_login_info = $uobj->getAdminUserByOpenid($res['openid']); if (empty($agent_login_info)) { $this->setError("账号不存在"); return false; } if ($agent_login_info['status'] == 0) { $this->setError("账号已被禁用"); return false; } $jwttoken = $this->getJwtToken(array('openid' => $res['openid'])); if (empty($jwttoken)) { $this->setError($this->getError()); return false; } $data = array(); $data['jwttoken'] = $jwttoken; $data['openid'] = $userinfo['openid']; $data['nickname'] = $userinfo['nickname']; return $data; } private function getJwtToken($jwtdata) { $jwtobj = new mJwt(); $jwtobj->expire = 30 * 24 * 60 * 60; $jwttoken = $jwtobj->getJwtEncode($jwtdata); if (empty($jwttoken)) { $this->setError("登录失败|jwt"); return false; } return $jwttoken; } public function weixinBind($code, $state) { if (empty($code)) { $this->setError("缺少回调参数code"); return false; } if (empty($state)) { $this->setError("缺少回调参数state"); return false; } // 获取access token $wxopenobj = new mWeixinOpen(); $res = $wxopenobj->getAccessToken($code); if (!$res) { $this->setError($wxopenobj->getError()); return false; } // 获取扫码登录用户信息 $userinfo = $wxopenobj->getUserInfo($res['access_token'], $res['openid']); if (!$userinfo) { $this->setError($wxopenobj->getError()); return false; } $aid = explode('-', $state)[1]; $uobj = new mUser(); $admin_user_info = $uobj->getAdminUserByOpenid($res['openid']); if (!empty($admin_user_info) && $admin_user_info['aid'] == $aid) { $this->setError("账号已存在"); return false; } if (!empty($admin_user_info)) { $uobj->updateAdminUser($admin_user_info['id'], array('aid' => $aid)); return true; } $data = array( 'aid' => $aid, 'nickname' => $userinfo['nickname'], 'openid' => $userinfo['openid'], 'is_super_admin' => ADMIN_USER_NOT_SUPER, 'status' => ADMIN_USER_OPEN, ); $id = $uobj->addAdminUser($data); if (!$id) { $this->setError("绑定失败"); return false; } return $id; } /** * 微信扫码登录 * @param unknown $code * @param unknown $state * @return boolean|string[]|number[] */ public function weixinMpLogin($code) { if (empty($code)) { $this->setError("缺少回调参数code"); return false; } $obj = new mWeixinMp(); $openid = $obj->getOpenid($code); if (!$openid) { $this->setError('登录失败'); return false; } $uobj = new mUser(); $agent_login_info = $uobj->getAdminUserByOpenid($openid); if (empty($agent_login_info)) { $this->setError("账号不存在"); return false; } $jwttoken = $this->getJwtToken(array('openid' => $openid)); if (empty($jwttoken)) { $this->setError($this->getError()); return false; } $data = array(); $data['jwttoken'] = $jwttoken; $data['openid'] = $agent_login_info['openid']; return $data; } }