php微信公众平台开发类实例

本文实例讲述了php微信公众平台开发类。分享给大家供大家参考。具体分析如下:

ThinkWechat.php类文件如下:

  <?php  class Wechat {   /**   * 微信推送过来的数据或响应数据   * @var array   */   private $data = array();   /**   * 构造方法,用于实例化微信SDK   * @param string $token 微信开放平台设置的TOKEN   */   public function __construct($token) {   $this->auth($token) || exit;   if(!empty($_GET['echostr'])){    exit($_GET['echostr']);   } else {    try    {    $xml = file_get_contents("php://input");    $xml = new SimpleXMLElement($xml);    $xml || exit;    foreach ($xml as $key => $value) {     $this->data[$key] = strval($value);    }    }catch(Exception $e){    }   }   }   /**   * 获取微信推送的数据   * @return array 转换为数组后的数据   */   public function request(){   return $this->data;   }   /**   * * 响应微信发送的信息(自动回复)   * @param string $to 接收用户名   * @param string $from 发送者用户名   * @param array $content 回复信息,文本信息为string类型   * @param string $type 消息类型   * @param string $flag 是否新标刚接受到的信息   * @return string  XML字符串   */   public function response($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 = new SimpleXMLElement('<xml></xml>');   $this->data2xml($xml, $this->data);   exit($xml->asXML());   }   /**   * 回复文本信息   * @param string $content 要回复的信息   */   private function text($content){   $this->data['Content'] = $content;   }   /**   * 回复音乐信息   * @param string $content 要回复的音乐   */   private function music($music){   list(    $music['Title'],     $music['Description'],     $music['MusicUrl'],     $music['HQMusicUrl']   ) = $music;   $this->data['Music'] = $music;   }   /**   * 回复图文信息   * @param string $news 要回复的图文内容   */   private function news($news){   $articles = array();   foreach ($news as $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编码   * @param object $xml XML对象   * @param mixed $data 数据   * @param string $item 数字索引时的节点名称   * @return string   */   private function data2xml($xml, $data, $item = 'item') {   foreach ($data as $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));    }    }   }   }   /**   * 对数据进行签名认证,确保是微信发送的数据   * @param string $token 微信开放平台设置的TOKEN   * @return boolean true-签名正确,false-签名错误   */   private function auth($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程序设计有所帮助。

php微信公众平台开发类实例

郑重声明:本网站发布的内容(图片、视频和文字)以及用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注