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;
}
}
}