php微信公众平台开发类实例
本文实例讲述了php微信公众平台开发类。分享给大家供大家参考。具体分析如下:
ThinkWechat.php类文件如下:
<?php classWechat{ /** *微信推送过来的数据或响应数据 *@vararray */ private$data=array(); /** *构造方法,用于实例化微信SDK *@paramstring$token微信开放平台设置的TOKEN */ publicfunction__construct($token){ $this->auth($token)||exit; if(!empty($_GET['echostr'])){ exit($_GET['echostr']); }else{ try { $xml=file_get_contents("php://input"); $xml=newSimpleXMLElement($xml); $xml||exit; foreach($xmlas$key=>$value){ $this->data[$key]=strval($value); } }catch(Exception$e){ } } } /** *获取微信推送的数据 *@returnarray转换为数组后的数据 */ publicfunctionrequest(){ return$this->data; } /** **响应微信发送的信息(自动回复) *@paramstring$to接收用户名 *@paramstring$from发送者用户名 *@paramarray$content回复信息,文本信息为string类型 *@paramstring$type消息类型 *@paramstring$flag是否新标刚接受到的信息 *@returnstringXML字符串 */ publicfunctionresponse($content,$type='text',$flag=0){ /*基础数据*/ $this->data=array( 'ToUserName'=>$this->data['FromUserName'], 'FromUserName'=>$this->data['ToUserName'], 'CreateTime'=>time(), 'MsgType'=>$type, ); /*添加类型数据*/ $this->$type($content); /*添加状态*/ $this->data['FuncFlag']=$flag; /*转换数据为XML*/ $xml=newSimpleXMLElement('<xml></xml>'); $this->data2xml($xml,$this->data); exit($xml->asXML()); } /** *回复文本信息 *@paramstring$content要回复的信息 */ privatefunctiontext($content){ $this->data['Content']=$content; } /** *回复音乐信息 *@paramstring$content要回复的音乐 */ privatefunctionmusic($music){ list( $music['Title'], $music['Description'], $music['MusicUrl'], $music['HQMusicUrl'] )=$music; $this->data['Music']=$music; } /** *回复图文信息 *@paramstring$news要回复的图文内容 */ privatefunctionnews($news){ $articles=array(); foreach($newsas$key=>$value){ list( $articles[$key]['Title'], $articles[$key]['Description'], $articles[$key]['PicUrl'], $articles[$key]['Url'] )=$value; if($key>=9){break;}//最多只允许10调新闻 } $this->data['ArticleCount']=count($articles); $this->data['Articles']=$articles; } /** *数据XML编码 *@paramobject$xmlXML对象 *@parammixed$data数据 *@paramstring$item数字索引时的节点名称 *@returnstring */ privatefunctiondata2xml($xml,$data,$item='item'){ foreach($dataas$key=>$value){ /*指定默认的数字key*/ is_numeric($key)&&$key=$item; /*添加子元素*/ if(is_array($value)||is_object($value)){ $child=$xml->addChild($key); $this->data2xml($child,$value,$item); }else{ if(is_numeric($value)){ $child=$xml->addChild($key,$value); }else{ $child=$xml->addChild($key); $node=dom_import_simplexml($child); $node->appendChild($node->ownerDocument->createCDATASection($value)); } } } } /** *对数据进行签名认证,确保是微信发送的数据 *@paramstring$token微信开放平台设置的TOKEN *@returnbooleantrue-签名正确,false-签名错误 */ privatefunctionauth($token){ if(empty($_GET['signature']))return; /*获取数据*/ $data=array($_GET['timestamp'],$_GET['nonce'],$token); $sign=$_GET['signature']; /*对数据进行字典排序*/ sort($data,SORT_STRING); /*生成签名*/ $signature=sha1(implode($data)); return$signature===$sign; } }
希望本文所述对大家的php程序设计有所帮助。