本文实例讲述了php微信公众平台开发类。分享给大家供大家参考。具体分析如下:
ThinkWechat.php类文件如下:
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){
}
}
}
public function request(){
return $this->data;
}
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 = new SimpleXMLElement(' ');
$this->data2xml($xml, $this->data);
exit($xml->asXML());
}
private function text($content){
$this->data['Content'] = $content;
}
private function music($music){
list(
$music['Title'],
$music['Description'],
$music['MusicUrl'],
$music['HQMusicUrl']
) = $music;
$this->data['Music'] = $music;
}
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;
}
private function data2xml($xml, $data, $item = 'item') {
foreach ($data as $key => $value) {
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));
}
}
}
}
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程序设计有所帮助。



