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

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:PHP生成指定随机字符串的简单实现方法
具体分析如下: 这是一个简单的函数,没有对生成的内容作强制设定。所以在生成的字符串长度较少的时候,会出现没有指定类型字符的情况。当然,修改起来也很简单,这里就不做添加了。

这篇文章主要介绍了php微信公众平台开发类,实例分析了针对微信消息的响应、回复、编码等相关技巧,非常具有实用价值,需要的朋友可以参考下

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

ThinkWechat.php类文件如下:

  1. <?php 
  2. class Wechat { 
  3.   /** 
  4.    * 微信推送过来的数据或响应数据 
  5.    * @var array 
  6.    */ 
  7.   private $data = array(); 
  8.   /** 
  9.    * 构造方法,用于实例化微信SDK 
  10.    * @param string $token 微信开放平台设置的TOKEN 
  11.    */ 
  12.   public function __construct($token) { 
  13.     $this->auth($token) || exit
  14.     if(!emptyempty($_GET['echostr'])){ 
  15.       exit($_GET['echostr']); 
  16.     } else { 
  17.       try 
  18.       { 
  19.         $xml = file_get_contents("php://input"); 
  20.         $xml = new SimpleXMLElement($xml); 
  21.         $xml || exit
  22.         foreach ($xml as $key => $value) { 
  23.           $this->data[$key] = strval($value); 
  24.         } 
  25.       }catch(Exception $e){ 
  26.       } 
  27.     } 
  28.   } 
  29.   /** 
  30.    * 获取微信推送的数据 
  31.    * @return array 转换为数组后的数据 
  32.    */ 
  33.   public function request(){ 
  34.     return $this->data; 
  35.   } 
  36.   /** 
  37.    * * 响应微信发送的信息(自动回复) 
  38.    * @param string $to   接收用户名 
  39.    * @param string $from  发送者用户名 
  40.    * @param array $content 回复信息,文本信息为string类型 
  41.    * @param string $type  消息类型 
  42.    * @param string $flag  是否新标刚接受到的信息 
  43.    * @return string     XML字符串 
  44.    */ 
  45.   public function response($content$type = 'text'$flag = 0){ 
  46.     /* 基础数据 */ 
  47.     $this->data = array
  48.       'ToUserName'  => $this->data['FromUserName'], 
  49.       'FromUserName' => $this->data['ToUserName'], 
  50.       'CreateTime'  => time(), 
  51.       'MsgType'   => $type
  52.     ); 
  53.     /* 添加类型数据 */ 
  54.     $this->$type($content); 
  55.     /* 添加状态 */ 
  56.     $this->data['FuncFlag'] = $flag
  57.     /* 转换数据为XML */ 
  58.     $xml = new SimpleXMLElement('<xml></xml>'); 
  59.     $this->data2xml($xml$this->data); 
  60.     exit($xml->asXML()); 
  61.   } 
  62.   /** 
  63.    * 回复文本信息 
  64.    * @param string $content 要回复的信息 
  65.    */ 
  66.   private function text($content){ 
  67.     $this->data['Content'] = $content
  68.   } 
  69.   /** 
  70.    * 回复音乐信息 
  71.    * @param string $content 要回复的音乐 
  72.    */ 
  73.   private function music($music){ 
  74.     list( 
  75.       $music['Title'],  
  76.       $music['Description'],  
  77.       $music['MusicUrl'],  
  78.       $music['HQMusicUrl'
  79.     ) = $music
  80.     $this->data['Music'] = $music
  81.   } 
  82.   /** 
  83.    * 回复图文信息 
  84.    * @param string $news 要回复的图文内容 
  85.    */ 
  86.   private function news($news){ 
  87.     $articles = array(); 
  88.     foreach ($news as $key => $value) { 
  89.       list( 
  90.         $articles[$key]['Title'], 
  91.         $articles[$key]['Description'], 
  92.         $articles[$key]['PicUrl'], 
  93.         $articles[$key]['Url'
  94.       ) = $value
  95.       if($key >= 9) { break; } //最多只允许10调新闻 
  96.     } 
  97.     $this->data['ArticleCount'] = count($articles); 
  98.     $this->data['Articles'] = $articles
  99.   } 
  100.   /** 
  101.    * 数据XML编码 
  102.    * @param object $xml XML对象 
  103.    * @param mixed $data 数据 
  104.    * @param string $item 数字索引时的节点名称 
  105.    * @return string 
  106.    */ 
  107.   private function data2xml($xml$data$item = 'item') { 
  108.     foreach ($data as $key => $value) { 
  109.       /* 指定默认的数字key */ 
  110.       is_numeric($key) && $key = $item
  111.       /* 添加子元素 */ 
  112.       if(is_array($value) || is_object($value)){ 
  113.         $child = $xml->addChild($key); 
  114.         $this->data2xml($child$value$item); 
  115.       } else { 
  116.         if(is_numeric($value)){ 
  117.           $child = $xml->addChild($key$value); 
  118.         } else { 
  119.           $child = $xml->addChild($key); 
  120.           $node = dom_import_simplexml($child); 
  121.           $node->appendChild($node->ownerDocument->createCDATASection($value)); 
  122.         } 
  123.       } 
  124.     } 
  125.   } 
  126.   /** 
  127.    * 对数据进行签名认证,确保是微信发送的数据 
  128.    * @param string $token 微信开放平台设置的TOKEN 
  129.    * @return boolean    true-签名正确,false-签名错误 
  130.    */ 
  131.   private function auth($token){ 
  132.     if(emptyempty($_GET['signature'])) return
  133.     /* 获取数据 */ 
  134.     $data = array($_GET['timestamp'], $_GET['nonce'], $token); 
  135.     $sign = $_GET['signature']; 
  136.     /* 对数据进行字典排序 */ 
  137.     sort($data,SORT_STRING); 
  138.     /* 生成签名 */ 
  139.     $signature = sha1(implode($data)); 
  140.     return $signature === $sign
  141.   } 

分享:php使用Image Magick将PDF文件转换为JPG文件的方法
这是一个非常简单的格式转换代码,可以把.PDF文件转换为.JPG文件,代码要起作用,服务器必须要安装Image Magick 扩展。

来源:模板无忧//所属分类:PHP教程/更新时间:2015-04-02
相关PHP教程