wechat = new Wechat(); } /** * 获取component token 一般为系统token * * @return mixed */ public function token_api() { return $this->wechat->token(); } /** * 获取预授权码 开始用户授权 * * @return mixed */ public function test_api() { $link = $this->wechat->login('component/auth.oauth', false, false); echo '第三方平台授权';die; } /** * 获取预授权码 开始用户授权 * * @return mixed */ public function get_api() { $this->wechat->login('component/auth.oauth'); } /** * 获取oauth的token 用户token * * @return mixed */ public function oauth_api() { $param['auth_code'] = Dever::input('auth_code'); $param['expires_in'] = Dever::input('expires_in'); if ($param['auth_code']) { $data = $this->wechat->oauth($param); } else { $param = Dever::input('id', 1); $data = $this->wechat->oauth($param, 2000, true); } if ($data && isset($data['openid'])) { $result = $this->wechat->curl('user', $data); if ($result) { # 初始化操作 $param = array(); $qrcode = Dever::load('upload/save.copy', $result['authorizer_info']['qrcode_url']); $param['project_id'] = $data['project_id']; $param['oauth_id'] = $data['id']; $param['name'] = $result['authorizer_info']['nick_name']; $param['principal_name'] = $result['authorizer_info']['principal_name']; $param['pic'] = $result['authorizer_info']['head_img']; $param['qrcode'] = $qrcode['url']; $param['username'] = $result['authorizer_info']['user_name']; //$param['desc'] = '1'; $param['mdate'] = time(); if (isset($result['authorizer_info']['MiniProgramInfo'])) { $param['type'] = 1; } else { if ($result['authorizer_info']['service_type_info'] == 2) { $param['type'] = 3; } else { $param['type'] = 2; } } $id = Dever::upinto('component/user', array('option_oauth_id' => $data['id']), $param); $domain = Dever::db('component/domain')->one(array('option_project_id' => $param['project_id'])); //自动设置域名 if ($domain) { $param['id'] = $id; Dever::load('component/domain.set', $param, $domain['id']); } $tester = Dever::db('component/domain')->state(array('option_project_id' => $param['project_id'])); if ($tester) { $param['id'] = $id; foreach ($tester as $k => $v) { //自动设置体验者 Dever::load('component/tester.set', $param, $v['id']); } } } } return '绑定成功'; } /** * wechat回调,直接将数据回写到该方法中 * * @return mixed */ public function saveOauthInfo($oauth_id, $data, $project_id) { echo 1; # 这里用于记录权限集func_info,先不记录了 return; } /** * 业务推送接口 微信服务器会将所有请求都推送到这里 * * @return mixed */ public function main() { $this->output = ''; # 获取微信消息 $this->request(); # 对消息进行验证,并根据类型得到本平台的配置数据 //$this->response(); # 输出 $this->output(); } /** * 输出 * * @return mixed */ private function output() { if (!$this->output) { $this->output = 'success'; } echo $this->output;die; } /** * 获取微信发送的内容 * * @return mixed */ private function request() { $data = $_GET ? $_GET : $_POST; /* $data = array(); $data['signature'] = '9474754223130bc1c820537b8113b590ef3cbf8e'; $data['timestamp'] = '1525915492'; $data['nonce'] = '1211005377'; $data['encrypt_type'] = 'aes'; $data['msg_signature'] = 'f17b5c2d2cf1592e07803f190048289ff468ef2b'; */ $xml = file_get_contents('php://input'); Dever::log(json_encode($data) . $xml); /* $xml = " "; */ if (!empty($xml)) { libxml_disable_entity_loader(true); $result = (array) simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $result = $this->wechat->decode($data['msg_signature'], $data['timestamp'], $data['nonce'], $result['Encrypt']); if (isset($result['ComponentVerifyTicket'])) { $this->wechat->ticket($result['ComponentVerifyTicket'], 600, 100); } return true; } else { return false; } } }