php微信公眾平臺開發(fā)類實例
來源:易賢網(wǎng) 閱讀:1147 次 日期:2015-04-03 09:57:23
溫馨提示:易賢網(wǎng)小編為您整理了“php微信公眾平臺開發(fā)類實例”,方便廣大網(wǎng)友查閱!

<?php

class Wechat {

/**

* 微信推送過來的數(shù)據(jù)或響應數(shù)據(jù)

* @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){

}

}

}

/**

* 獲取微信推送的數(shù)據(jù)

* @return array 轉換為數(shù)組后的數(shù)據(jù)

*/

public function request(){

return $this->data;

}

/**

* * 響應微信發(fā)送的信息(自動回復)

* @param string $to 接收用戶名

* @param string $from 發(fā)送者用戶名

* @param array $content 回復信息,文本信息為string類型

* @param string $type 消息類型

* @param string $flag 是否新標剛接受到的信息

* @return string XML字符串

*/

public function response($content, $type = 'text', $flag = 0){

/* 基礎數(shù)據(jù) */

$this->data = array(

'ToUserName' => $this->data['FromUserName'],

'FromUserName' => $this->data['ToUserName'],

'CreateTime' => time(),

'MsgType' => $type,

);

/* 添加類型數(shù)據(jù) */

$this->$type($content);

/* 添加狀態(tài) */

$this->data['FuncFlag'] = $flag;

/* 轉換數(shù)據(jù)為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 要回復的圖文內(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對象

* @param mixed $data 數(shù)據(jù)

* @param string $item 數(shù)字索引時的節(jié)點名稱

* @return string

*/

private function data2xml($xml, $data, $item = 'item') {

foreach ($data as $key => $value) {

/* 指定默認的數(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));

}

}

}

}

/**

* 對數(shù)據(jù)進行簽名認證,確保是微信發(fā)送的數(shù)據(jù)

* @param string $token 微信開放平臺設置的TOKEN

* @return boolean true-簽名正確,false-簽名錯誤

*/

private function auth($token){

if(empty($_GET['signature'])) return;

/* 獲取數(shù)據(jù) */

$data = array($_GET['timestamp'], $_GET['nonce'], $token);

$sign = $_GET['signature'];

/* 對數(shù)據(jù)進行字典排序 */

sort($data,SORT_STRING);

/* 生成簽名 */

$signature = sha1(implode($data));

return $signature === $sign;

}

}

更多信息請查看IT技術專欄

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:php微信公眾平臺開發(fā)類實例

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)