<?php /** * Created by PhpStorm. * User: dbag */ class Wx_model extends CI_Model{ public $APPID = \'\'; public $APPSECRET = \'\'; function __construct(){ $this->load->database(); } /* * 用户授权登录 */ function userLogin(){ $redirect_uri = urlencode(\'http://****/wxOpenid\'); //跳转到下面调用这个方法的地址 $url = \'https://open.weixin.qq.com/connect/oauth2/authorize?appid=\'.$this->APPID.\'&redirect_uri=\'.$redirect_uri.\'&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect\'; header(\'Location:\'.$url); } /* * code获取openid */ function CodegetOpenid($code){ $url = \'https://api.weixin.qq.com/sns/oauth2/access_token?appid=\'.$this->APPID.\'&secret=\'.$this->APPSECRET.\'&code=\'.$code.\'&grant_type=authorization_code\'; $res = file_get_contents($url); $res = json_decode($res,true); if($res[\'openid\']){ return $res[\'openid\']; }else{ return false; } } /** * 生成token 每2个生成一次 脚本执行 * */ function access_token(){ $url = \'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=\'.$this->APPID.\'&secret=\'.$this->APPSECRET; $res = file_get_contents($url); $res = json_decode($res,true); if($res[\'access_token\']){ file_put_contents(\'access_token.json\', $res[\'access_token\']); }else{ $error = file_get_contents(\'access_token_error.json\'); file_put_contents(\'access_token_error.json\', $error.\'获取token失败\'.date(\'Y-m-d H:i:s\',time())."\r\n"); } } /** * 获取token */ function gain_token(){ $token = file_get_contents(\'access_token.json\'); if($token){ return [\'code\'=>0,\'token\'=>$token]; }else{ return [\'code\'=>1,\'msg\'=>\'获取失败\']; } } /** * 微信消息推送 * @param $openid 用户opendID * @param $url 跳转地址 * @param $title 推送标题 * @param $realname 用户姓名 * @param $starttime 开始时间 * @param $content 推送内容 * @param string $remarks 备注 * @return $arr; */ function postNews($openid,$url,$title,$realname,$starttime,$content,$remarks=\'\'){ $token = $this->gain_token(); $wx_url = \'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=\'.$token[\'token\']; $data = [ \'touser\'=>$openid, \'template_id\'=>\'-dq0w-Orz0XRcQvvdse-BdNlwny1qU5i24gePpRsE6s\', \'url\'=>$url, \'topcolor\'=>\'#FF0000\', \'data\'=>[ \'first\'=>[ \'value\'=>$title, \'color\'=>\'#173177\' ], \'keyword1\'=>[ \'value\'=>$realname, \'color\'=>\'#173177\' ], \'keyword2\'=>[ \'value\'=>$starttime, \'color\'=>\'#173177\' ], \'keyword3\'=>[ \'value\'=>$content, \'color\'=>\'#173177\' ], \'remark\'=>[ \'value\'=>$remarks, \'color\'=>\'#173177\' ] ] ]; $res = $this->https_post($wx_url,json_encode($data)); return $res; } /** * @param $url * @param null $data * @return mixed */ function https_post($url, $data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); //curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER[\'HTTP_USER_AGENT\']); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); $output = curl_exec($curl); curl_close($curl); return $output; } }
//CI 控制器调用方法
/*
* 微信导航跳转地址
*/
function wxLogin(){
$this->load->model(\'Wx_model\');
$this->Wx_model->userLogin();
}
function wxOpenid(){
$this->load->model(\'Wx_model\');
$openid = $this->Wx_model->CodegetOpenid($_GET[\'code\']);
if($openid){
//查询数据库中是否存在
//不存在携带ID跳转登录 登录后绑定该ID
//存在获取信息直接登录
}else{
//未获取到
//走正常登录
}
}
//消息推送
$this->load->model(\'Wx_model\');
$this->Wx_model->postNews(\'用户opendID\',\'跳转地址URL\',\'推送标题\',\'用户姓名\',\'开始时间\',\'推送内容\',\'备注\');