最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php微信公眾平臺(tái)開(kāi)發(fā)類(lèi)實(shí)例

 更新時(shí)間:2015年04月01日 10:01:03   作者:xialeistudio  
這篇文章主要介紹了php微信公眾平臺(tái)開(kāi)發(fā)類(lèi),實(shí)例分析了針對(duì)微信消息的響應(yīng)、回復(fù)、編碼等相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了php微信公眾平臺(tái)開(kāi)發(fā)類(lèi)。分享給大家供大家參考。具體分析如下:

ThinkWechat.php類(lèi)文件如下:

<?php
class Wechat {
 /**
 * 微信推送過(guò)來(lái)的數(shù)據(jù)或響應(yīng)數(shù)據(jù)
 * @var array
 */
 private $data = array();
 /**
 * 構(gòu)造方法,用于實(shí)例化微信SDK
 * @param string $token 微信開(kāi)放平臺(tái)設(shè)置的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){
  }
 }
 }
 /**
 * 獲取微信推送的數(shù)據(jù)
 * @return array 轉(zhuǎn)換為數(shù)組后的數(shù)據(jù)
 */
 public function request(){
 return $this->data;
 }
 /**
 * * 響應(yīng)微信發(fā)送的信息(自動(dòng)回復(fù))
 * @param string $to 接收用戶名
 * @param string $from 發(fā)送者用戶名
 * @param array $content 回復(fù)信息,文本信息為string類(lèi)型
 * @param string $type 消息類(lèi)型
 * @param string $flag 是否新標(biāo)剛接受到的信息
 * @return string  XML字符串
 */
 public function response($content, $type = 'text', $flag = 0){
 /* 基礎(chǔ)數(shù)據(jù) */
 $this->data = array(
  'ToUserName' => $this->data['FromUserName'],
  'FromUserName' => $this->data['ToUserName'],
  'CreateTime' => time(),
  'MsgType' => $type,
 );
 /* 添加類(lèi)型數(shù)據(jù) */
 $this->$type($content);
 /* 添加狀態(tài) */
 $this->data['FuncFlag'] = $flag;
 /* 轉(zhuǎn)換數(shù)據(jù)為XML */
 $xml = new SimpleXMLElement('<xml></xml>');
 $this->data2xml($xml, $this->data);
 exit($xml->asXML());
 }
 /**
 * 回復(fù)文本信息
 * @param string $content 要回復(fù)的信息
 */
 private function text($content){
 $this->data['Content'] = $content;
 }
 /**
 * 回復(fù)音樂(lè)信息
 * @param string $content 要回復(fù)的音樂(lè)
 */
 private function music($music){
 list(
  $music['Title'], 
  $music['Description'], 
  $music['MusicUrl'], 
  $music['HQMusicUrl']
 ) = $music;
 $this->data['Music'] = $music;
 }
 /**
 * 回復(fù)圖文信息
 * @param string $news 要回復(fù)的圖文內(nèi)容
 */
 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調(diào)新聞
 }
 $this->data['ArticleCount'] = count($articles);
 $this->data['Articles'] = $articles;
 }
 /**
 * 數(shù)據(jù)XML編碼
 * @param object $xml XML對(duì)象
 * @param mixed $data 數(shù)據(jù)
 * @param string $item 數(shù)字索引時(shí)的節(jié)點(diǎn)名稱(chēng)
 * @return string
 */
 private function data2xml($xml, $data, $item = 'item') {
 foreach ($data as $key => $value) {
  /* 指定默認(rèn)的數(shù)字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));
  }
  }
 }
 }
 /**
 * 對(duì)數(shù)據(jù)進(jìn)行簽名認(rèn)證,確保是微信發(fā)送的數(shù)據(jù)
 * @param string $token 微信開(kāi)放平臺(tái)設(shè)置的TOKEN
 * @return boolean true-簽名正確,false-簽名錯(cuò)誤
 */
 private function auth($token){
 if(empty($_GET['signature'])) return;
 /* 獲取數(shù)據(jù) */
 $data = array($_GET['timestamp'], $_GET['nonce'], $token);
 $sign = $_GET['signature'];
 /* 對(duì)數(shù)據(jù)進(jìn)行字典排序 */
 sort($data,SORT_STRING);
 /* 生成簽名 */
 $signature = sha1(implode($data));
 return $signature === $sign;
 }
}

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

化隆| 依安县| 吉安市| 乐清市| 新巴尔虎左旗| 图们市| 罗城| 白河县| 庆安县| 迁西县| 永康市| 彰化县| 祁东县| 永安市| 长宁区| 云龙县| 缙云县| 三都| 灵璧县| 鄂尔多斯市| 田东县| 衢州市| 湘西| 房产| 平湖市| 合江县| 漯河市| 晋中市| 四川省| 泰州市| 甘南县| 红桥区| 句容市| 时尚| 竹北市| 昔阳县| 南岸区| 磴口县| 探索| 黑河市| 吉林市|