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

<?php

class Wechat {

/**

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

* @var array

*/

private $data = array();

/**

* 構(gòu)造方法,用于實(shí)例化微信SDK

* @param string $token 微信開放平臺(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類型

* @param string $type 消息類型

* @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,

);

/* 添加類型數(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ù)音樂信息

* @param string $content 要回復(fù)的音樂

*/

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對象

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

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

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

}

}

}

}

/**

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

* @param string $token 微信開放平臺(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'];

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

sort($data,SORT_STRING);

/* 生成簽名 */

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

return $signature === $sign;

}

}

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:php微信公眾平臺(tái)開發(fā)類實(shí)例
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

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