首页
壁纸
留言
友链
关于
统计
Search
1
武汉理工刷课,武汉理工大学刷课,刷在线作业程序
770 阅读
2
Linux下Golang编译程序在后台运行及开机启动
650 阅读
3
抖音userid怎么获取
588 阅读
4
破解Typora1.1.5最新版
432 阅读
5
[必看]Go语言配置代理
353 阅读
技术
php
Mysql
wechat公众号
git
前端
前端大杂烩
vue2
vue3
Golang
gorm
golang配置
韩昊杰的软件
工具
VMware
其他
docker
kafka
nginx
openwrt
登录
Search
韩昊杰
累计撰写
62
篇文章
累计收到
14
条评论
首页
栏目
技术
php
Mysql
wechat公众号
git
前端
前端大杂烩
vue2
vue3
Golang
gorm
golang配置
韩昊杰的软件
工具
VMware
其他
docker
kafka
nginx
openwrt
页面
壁纸
留言
友链
关于
统计
搜索到
3
篇与
的结果
2022-04-07
微信公众号获取AccessToken,并保存到文件中,且过期前5分钟时再次自动获取
公用获取token,因微信公众号的 AccessToken 有效期是7200秒(两小时),且每日请求次数有限,所以我们可以将第一次请求的 AccessToken 保存到文件中,并且在过期前5分钟时再次自动获取,以减少 AccessToken 的实时请求次数浪费!代码如下//生成accesstoken function getAccessToken() { // 微信公众平台appid及appsecret密钥 $appid = 'wx232b4aa*********'; $appsecret = '6b7f679961e76aa615e6588********'; //储存access_token文件 $logfilename = dirname(dirname(__FILE__)).'/online/accesstoken.txt'; //如果不存在则创建一份文件 if(!file_exists($logfilename)){ file_put_contents($logfilename,''); //system("chmod 777 /data/wwwroot/blog/public/online/accesstoken.txt"); } //读取内容 $tokeninfo = file_get_contents($logfilename); //文件里面有内容 if(!empty($tokeninfo)){ //转换成数组形式 $tokeninfo = json_decode($tokeninfo,true); if($tokeninfo['endtime']-time()<300){ //预留5分钟的网络延迟时间,过期的话重新获取access_token //清空文档里面的内容 file_put_contents($logfilename, ''); $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid.'&secret='.$appsecret; //获取文件内容或获取网络请求的内容 $result = http_Msg($token_url,"GET"); $fresult = $result; //access_token过期时间点 $fresult["endtime"] = $result['expires_in']+time(); $fresult = json_encode($fresult); //将access_token数据存在文件中 file_put_contents($logfilename, $fresult); }else{ //没有过期直接返回存储在文件中的access_token $result = $tokeninfo; } }else{ //第一次获取access_token $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid.'&secret='.$appsecret; //获取文件内容或获取网络请求的内容 $result = http_Msg($token_url,"GET"); $fresult = $result; $fresult["endtime"] = $result['expires_in']+time(); $fresult = json_encode($fresult); //写入文件 file_put_contents($logfilename, $fresult); } return $result; } // CURL模拟get/post请求 function http_Msg($url,$method="GET",$data=array()) { $ch = curl_init(); $wx_data = json_encode($data); //打开 $ch = curl_init(); //请求方法为POST的时候 if($method == "POST"){ curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $wx_data); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $response = curl_exec($ch); //关闭 curl_close($ch); $result = json_decode($response,true); return $result; } // 获取AccessToken $AccessToken = getAccessToken();
2022年04月07日
170 阅读
2 评论
1 点赞
2022-04-07
微信公众号,用户消息接收与回复
当用户在公众号内发送消息时,我们可以在服务器配置完好的前提下,通过相关代码,接收用户发送的信息,并予以相应的回复!代码如下<?php // 接收用户发送消息(二选一) // $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//全局变量 存的用户的发送的信息 $postStr = file_get_contents("php://input"); // 但是有的服务器 如果使用 $GLOBALS 接不到值 使用 // 存储用户发送的消息 file_put_contents('data.txt',$postStr); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);// 数据对象 $fromUsername = $postObj->FromUserName; // 发送者 信息 $toUsername = $postObj->ToUserName; // 接受者 信息 公众号 $msgtype = $postObj->MsgType; // 获取消息的类型 $keyword = trim($postObj->Content); // 接收发送的文本 $EventKey = $postObj->EventKey; // 获取click事件的值 公众号 // 按键回复 if($EventKey == 'music'){ echo '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[我要找到你]]></Title> <Description><![CDATA[《我要找到你》是由陈明演唱的一首歌]]></Description> <MusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></MusicUrl> <HQMusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></HQMusicUrl> </Music> </xml>'; } // 接收消息回复 switch($keyword){ case 1: // 回复文本 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[世界很大,我想去看看]]></Content> </xml>'; break; case 2: // 回复图片消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[image]]></MsgType> <Image> <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的图片id]]></MediaId> </Image> </xml>'; break; case 3: // 回复语音消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <Voice> <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的语音消息id]]></MediaId> </Voice> </xml>'; break; case 4: // 回复视频消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[video]]></MsgType> <Video> <MediaId><![CDATA[通过素材管理中的接口上传多媒体文件,得到的视频消息id]]></MediaId> <Title><![CDATA[那些年]]></Title> <Description><![CDATA[回不去的曾经!]]></Description> </Video> </xml>'; break; case 5: // 回复音乐消息 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[我要找到你]]></Title> <Description><![CDATA[《我要找到你》是由陈明演唱的一首歌]]></Description> <MusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></MusicUrl> <HQMusicUrl><![CDATA[https://music.163.com/outchain/player?type=2&id=212964&auto=1&height=66]]></HQMusicUrl> </Music> </xml>'; break; // 回复图文消息 case 6: $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[图文消息标题:往前走,亦或回头]]></Title> <Description><![CDATA[图文消息描述:一生的旅程]]></Description> <PicUrl><![CDATA[图片链接,支持JPG、PNG格式,较好的效果为大图360200,小图200200]]></PicUrl> <Url><![CDATA[点击图文消息跳转链接]]></Url> </item> </Articles> </xml>'; break; default: // 回复文本 $str = '<xml> <ToUserName><![CDATA['.$fromUsername.']]></ToUserName> <FromUserName><![CDATA['.$toUsername.']]></FromUserName> <CreateTime>'.time().'</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[请回复数字:【1 2 3 4 5 6】以体验不同的功能]]></Content> </xml>'; break; } echo $str;
2022年04月07日
152 阅读
0 评论
0 点赞
2022-04-07
微信公众号推送模板消息,向指定的openID群发
微信作为社交软件,已经渗透到我们每一个人的日常生活当中,所以微信公众号的消息模板功能,可以很好且及时的向用户推送我们想要用户知道的消息,或者是用户本身想要知道的事情。当然,不是所有消息都可以推送,详情查看官方文档!模板消息样例前期准备,添加模板插件注:只有通过“微信认证的服务号”才有推送模板消息接口的权限。第一步,在功能->添加功能插件处申请模板消息使用权限。第二步,选择公众账号服务所处的两个行业,每月可更改一次所选行业。第三步,在所选择行业的模板库中选用已有的模板,添加至我的模板,或申请新模板。代码如下$data = getDataArray('o-tcNt82J11wDhIQ57OOD********');//传入用户的openID,发送消息模板 $json_data = json_encode($data);//转化成json数组让微信可以接收 $res = https_request($url, urldecode($json_data));//请求开始 $res = json_decode($res, true); if ($res['errcode'] == 0 && $res['errcode'] == "ok") { echo "发送成功!<br/>"; var_dump($res); die('end'); }else{ echo 'error'.$res['errcode']; die('end'); } die('end'); //获取发送数据数组 function getDataArray($value) { $data = array( 'touser' => $value, //要发送给用户的openid 'template_id' => "ghKp-eHfi-BgWa0DTbsTpWSppynTpeCfKpgZeoe4ti4",//改成自己的模板id,在微信后台模板消息里查看 'url' => "www.seafarechina.com/", //自己网站链接url 'data' => array( 'first' => array( 'value' => "您好,您已成为微信某某店会员。", 'color' => "#ff3300" ), 'cardNumber' => array( 'value' => "6666666", 'color' => "#f00" ), 'address' => array( 'value' => "北京市海淀区御花园", 'color' => "#173177" ), 'VIPName' => array( 'value' => "Panglj", 'color' => "#3d3d3d" ), 'VIPPhone' => array( 'value' => "1584848****", 'color' => "#3d3d3d" ), 'expDate' => array( 'value' => "2020年1月9日", 'color' => "#3d3d3d" ), 'remark' => array( 'value' => "如有疑问,请咨询1584848****。", 'color' => "#ff3300" ), ) ); return $data; } //curl请求函数,微信都是通过该函数请求 function https_request($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); 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; }
2022年04月07日
151 阅读
0 评论
0 点赞