微信公众平台开发案例


微信公众平台消息接口PHP版开发教

微信公众平台开发PHP教程

<CreateTime>{$CreateTime}</CreateTime> 

<MsgType><![CDATA[text]]></MsgType> 

<Content><![CDATA[%s]]></Content> 

<FuncFlag>%s</FuncFlag> 

</xml>"; 

return sprintf($textTpl,$text,$FuncFlag); 

}<br>

 

 

 

 

 //

根据数组参数回复图文消息

 

public function makeNews($newsData=array()) 

$CreateTime = time(); 

$FuncFlag = $this->setFlag ? 1 : 0; 

$newTplHeader = "<xml> 

<ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName> 

<FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName> 

<CreateTime>{$CreateTime}</CreateTime> 

<MsgType><![CDATA[news]]></MsgType> 

<Content><![CDATA[%s]]></Content> 

<ArticleCount>%s</ArticleCount><Articles>"; 

$newTplItem = "<item> 

<Title><![CDATA[%s]]></Title> 

<Description><![CDATA[%s]]></Description> 

<PicUrl><![CDATA[%s]]></PicUrl> 

<Url><![CDATA[%s]]></Url> 

</item>"; 

$newTplFoot = "</Articles> 

<FuncFlag>%s</FuncFlag> 

</xml>"; 

$Content = ''; 

$itemsCount = count($newsData['items']); 

$itemsCount = $itemsCount< 10 ? $itemsCount : 10;//

微信公众平台图文回复的消息一次最多

10

 

if ($itemsCount) { 

foreach ($newsData['items'] as $key => $item) { 

if ($key<=9) { 

$Content .= sprintf($newTplItem,$item['title'],$item['description'],$item['picurl'],$item['url']); 

$header = sprintf($newTplHeader,$newsData['content'],$itemsCount); 

$footer = sprintf($newTplFoot,$FuncFlag); 

return $header . $Content . $footer; 

public function reply($data) 

if ($this->debug) { 

$this->write_log($data); 

echo $data; 

public function valid() 

if ($this->checkSignature()) { 

if( $_SERVER['REQUEST_METHOD']=='GET' ) 

echo $_GET['echostr']; 

exit; 

}else{ 

write_log('

认证失败

'); 

exit; 

private function checkSignature() 

$signature = $_GET["signature"]; 

$timestamp = $_GET["timestamp"]; 

$nonce = $_GET["nonce"]; 

 

$tmpArr = array($this->token, $timestamp, $nonce); 

sort($tmpArr); 

$tmpStr = implode( $tmpArr ); 

$tmpStr = sha1( $tmpStr ); 

 

if( $tmpStr == $signature ){ 

return true; 

}else{ 

return false; 

private function write_log($log){<br>

 

 

 

 

 

 

 

//

这里是你记录调试信息的地方请自行完善

以便中间调试

<br>

 

 

 

 

?> 

调用

weixin.class.php

 

把你的微信公众平台主接口文件(如前面定义的

http://www.yourdomain.com/weixin.php

中,修改代码为:

 

<?php 

include_once('weixin.class.php');//

引用刚定义的微信消息处理类

<br>define("TOKEN", 

"mmhelper");<br>define('DEBUG', true); 

$weixin = new Weixin(TOKEN,DEBUG);//

实例化

 

$weixin->getMsg(); 

$type = $weixin->msgtype;//

消息类型

 

$username = $weixin->msg['FromUserName'];//

哪个用户给你发的消息

,

这个

$username

是微信加

密之后的,但是每个用户都是一一对应的

 

if ($type==='text') { 

if ($weixin->msg['Content']=='Hello2BizUser') {//

微信用户第一次关注你的账号的时候,你的公

众账号就会受到一条内容为

'Hello2BizUser'

的消息

 

$reply = $weixin->makeText('

欢迎你关注妈妈助手哦,屌丝

'); 

}else{//

这里就是用户输入了文本信息

 

$keyword = $weixin->msg['Content']; //

用户的文本消息内容

 

include_once("chaxun.php");//

文本消息调用查询程序

 

$chaxun= new chaxun(DEBUG,$keyword,$username); 

$results['items'] =$chaxun->search();//

查询的代码

 

 

$reply = $weixin->makeNews($results); 

}elseif ($type==='location') { 

//

用户发送的是位置信息稍后的文章中会处理

 

}elseif ($type==='image') { 

//

用户发送的是图片稍后的文章中会处理

 

}elseif ($type==='voice') {  

//

用户发送的是声音稍后的文章中会处理

 

$weixin->reply($reply); 

?> 

查询代码

 

还需要将数据库里面的查询结果格式化为特定的形式

 

<?php 

public function search(){ 

$record=array(); //

定义返回结果的数组

 

$list = $this->search($this->keyword);//

普通的根据关键词查询数据库的操作代码就不用分享了

 

 

 

 

 

if(is_array($list)&&!empty($list)){  

foreach($list as $msg){  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$record[]=array(//

以下代码,将数据库中查询返回的数组

格式化为微信返回消息能接收的数组形式,即

title

description

picurl

url

详见微信官方的文

档描述

 

'title' =>$msg['title'], 

'description' =>$msg['discription'], 

'picurl' => $msg['pic_url'], 

'url' =>$msg['url'] 

); 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

return $record; 

?> 

关注妈妈助手

你可能感兴趣的:(微信公众平台开发案例)