首页 > php教程 > php手册 > 正文

微信类

php中文网
发布: 2016-06-07 11:42:22
原创
1371人浏览过

总是想写点儿对大家有用的东西,微信这个东西最近火的很,到处都是公众账号,微营销等等。这段时间专门研究了一些关于微信公众平台的东西,也做过一些小的项目,所以分享一些关于微信公众平台的东西
<?php <br /><br> class Wechat{<br><br>     //签名<br>     private $token = '';<br><br>     //消息类型<br>     private $msgtype;<br><br>     //消息内容<br>     private $msgobj;<br><br>     //事件类型<br>     private $eventtype;<br><br>     //事件key值<br>     private $eventkey;<br><br>     #{服务号才可得到<br>     //AppId<br>     private $appid = "";<br>     //AppSecret<br>     private $secret = "";<br>     #}<br>     <br>     private $_isvalid = false;<br>     <br>     public function __construct($token,$isvalid = false){<br>         $this-&gt;token = $token;<br>         $this-&gt;_isvalid = $isvalid;<br>     }<br>     <br>     /**<br>      *    执行程序入口<br>      */<br>     public function index(){<br>         if($this-&gt;_isvalid){<br>             $this-&gt;valid();<br>         }<br>         $this-&gt;getMsg();<br>         $this-&gt;responseMsg();<br>     }<br><br>     /**<br>      *  初次校验<br>      */<br>     private function valid(){<br>         $echoStr = $_GET["echostr"];<br><br>         if($this-&gt;checkSignature()){<br>             echo $echoStr;<br>             exit();<br>         }<br>     }<br><br>     /**<br>      *  创建自定义菜单<br>      */<br>     private function createMenu(){<br>         $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$this-&gt;getAccessToken();<br>         $menujson = '{<br>             "button":[<br>                 {<br>                     "type":"click",<br>                     "name":"NAME1",<br>                     "key":"V1001_NEW"<br>                 },<br>                 {<br>                     "type":"view",<br>                     "name":"NAME2",<br>                     "url":"http://www.zhangenrui.cn"<br>                 },<br>                 {<br>                     "type":"view",<br>                     "name":"NAME3",<br>                     "url":"http://www.zhangenrui.cn"<br>                 }<br>             ]<br>         }';<br><br>         $ch = curl_init($url);<br><br>         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");<br>         curl_setopt($ch, CURLOPT_POSTFIELDS,$menujson);<br>         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br><br>         $info = curl_exec($ch);<br><br>         if (curl_errno($ch)) {<br>             echo 'Errno'.curl_error($ch);<br>         }<br><br>         curl_close($ch);<br><br>         var_dump($info);<br>     }<br><br>     /**<br>      *  删除自定义菜单<br>      */<br>     private function deleteMenu(){<br>         $url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$this-&gt;getAccessToken();<br><br>         $ch = curl_init($url);<br><br>         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br><br>         $info = curl_exec($ch);<br><br>         if (curl_errno($ch)) {<br>             echo 'Errno'.curl_error($ch);<br>         }<br><br>         curl_close($ch);<br><br>         var_dump($info);<br><br>     }<br><br>     /**<br>      *  获取消息<br>      */<br>     private function getMsg(){<br>         //验证消息的真实性<br>         if(!$this-&gt;checkSignature()){<br>             exit();<br>         }<br><br>         //接收消息<br>         $poststr = $GLOBALS["HTTP_RAW_POST_DATA"];<br>         if(!empty($poststr)){<br>             $this-&gt;msgobj = simplexml_load_string($poststr,'SimpleXMLElement',LIBXML_NOCDATA);<br>             $this-&gt;msgtype = strtolower($this-&gt;msgobj-&gt;MsgType);<br>         }<br>         else{<br>             $this-&gt;msgobj = null;<br>         }<br>     }<br><br>     /**<br>      *  回复消息<br>      */<br>     private function responseMsg(){<br>         switch ($this-&gt;msgtype) {<br>             case 'text':<br>                 $data = $this-&gt;getData($this-&gt;msgobj-&gt;Content);<br>                 if(empty($data) || !is_array($data)){<br>                     $content = "ruiblog";<br>                     $this-&gt;textMsg($content);//查询不到记录返回提示信息<br>                 }<br>                 else{<br>                     $this-&gt;newsMsg($data);<br>                 }<br>                 break;<br>             case 'event':<br>                 $this-&gt;eventOpt();<br>                 break;<br>             default:<br>                 # code...<br>                 break;<br>         }<br>     }<br><br>     /**<br>      *  回复文本消息<br>      */<br>     private function textMsg($content=''){<br>         $textxml = "<xml><tousername>msgobj-&gt;FromUserName}]]&gt;</tousername><fromusername>msgobj-&gt;ToUserName}]]&gt;</fromusername><createtime>".time()."</createtime><msgtype></msgtype><content></content></xml>";<br>         <br>         //做搜索处理<br>         if(empty($content)){<br>             $content = "查询功能正在开发中...";<br>         }<br>         $resultstr = sprintf($textxml,$content);<br>         echo $resultstr;<br>     }<br><br>     /**<br>      *  回复图文消息<br>      */<br>     private function newsMsg($data){<br>         if(!is_array($data)){<br>             exit();<br>         }<br>         $newscount = (count($data) &gt; 10)?10:count($data);<br>         $newsxml = "<xml><tousername>msgobj-&gt;FromUserName}]]&gt;</tousername><fromusername>msgobj-&gt;ToUserName}]]&gt;</fromusername><createtime>".time()."</createtime><msgtype></msgtype><articlecount>{$newscount}</articlecount><articles>%s</articles></xml>";<br>         $itemxml = "";<br>         foreach ($data as $key =&gt; $value) {<br>             $itemxml .= "<item>";<br>             $itemxml .= "<title></title> <description></description><picurl></picurl><url></url>";<br>             $itemxml .= "</item>";<br>         }<br>         $resultstr = sprintf($newsxml,$itemxml);<br>         echo $resultstr;<br>     }<br><br>     /**<br>      *  事件处理<br>      */<br>     private function eventOpt(){<br>         $this-&gt;eventtype = strtolower($this-&gt;msgobj-&gt;Event);<br>         switch ($this-&gt;eventtype) {<br>             case 'subscribe':<br><br>                 //做用户绑定处理<br><br>                 $content = "ruiblog";<br>                 $this-&gt;textMsg($content);<br>                 break;<br>             case 'unsubscribe':<br>                 <br>                 //做用户取消绑定的处理<br><br>                 break;<br>             case 'click':<br>                 $this-&gt;menuClick();<br>                 break;<br>             default:<br>                 # code...<br>                 break;<br>         }<br>     }<br><br>     /**<br>      *  自定义菜单事件处理<br>      */<br>     private function menuClick(){<br>         $this-&gt;eventkey = $this-&gt;msgobj-&gt;EventKey;<br>         switch ($this-&gt;eventkey) {<br>             case 'V1001_NEW':<br>                 $data = $this-&gt;getData();<br>                 $this-&gt;newsMsg($data);<br>                 break;<br>             default:<br>                 # code...<br>                 break;<br>         }<br>     }<br><br>     /**<br>      *    获取本地数据<br>      */<br>     private function getData($key='ruiblog'){<br>         $data = $key;<br>         //写你自己相关的程序<br>         return $data;<br>     }<br>     <br>     /**<br>      *  校验签名<br>      */<br>     private function checkSignature(){<br>         $signature = $_GET["signature"];<br>         $timestamp = $_GET["timestamp"];<br>         $nonce = $_GET["nonce"];    <br>                 <br>         $token = $this-&gt;token;<br>         $tmpArr = array($token, $timestamp, $nonce);<br>         sort($tmpArr);<br>         $tmpStr = implode( $tmpArr );<br>         $tmpStr = sha1( $tmpStr );<br>         <br>         return ($tmpStr == $signature)?true:false;<br>     }<br><br>     /**<br>      *  获取access token<br>      */<br>     private function getAccessToken(){<br>         $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&amp;appid=$this-&gt;appid&amp;secret=$this-&gt;secret";<br>         $atjson=file_get_contents($url);<br>         $result=json_decode($atjson,true);//json解析成数组<br>         if(!isset($result['access_token'])){<br>             exit( '获取access_token失败!' );<br>         }<br>         return $result["access_token"];<br>     }<br> }<br><br> ?&gt;详细点这里:http://www.appryan.com/2015/05/17/php-wechart/

附件 Wechat.class.zip ( 2.3 KB 下载:429 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号