|
放到dede程序的plus目录下即可.
接口配置信息 按下面说明填写,
URL http://你的域名/plus/weixin.php
Token weixin (和文件中保持一致)
代码如下
代码如下
- <?php
-
- define("TOKEN", "weixin");
- require_once(dirname(__FILE__)."/..//common.inc.php");
- $dsql = new DedeSql(false);
- $wechatObj = new wechatCallback();
- $wechatObj->valid();
-
- class wechatCallback
- {
- private $items = '';
- private $articleCount = 0;
- private $key = '';
-
- public function valid()
- {
- $echoStr = $_GET["echostr"];
-
- //valid signature , option
- if($this->checkSignature()){
- echo $echoStr;
- $this->responseMsg();
-
- exit;
- }
- }
-
- public function responseMsg()
- {
- //get post data, May be due to the different environments
- $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
-
- //extract post data
- if (!empty($postStr)){
-
- $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
- $fromUsername = $postObj->FromUserName;
- $toUsername = $postObj->ToUserName;
- $this->keyword = strtolower(trim(("UTF-8","gb2312",$postObj->Content)));
-
- $time = time();
- $textTpl = "<xml>
- <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
- <FromUserName><![CDATA[".$toUsername."]]></FromUserName>
- <CreateTime>".$time."</CreateTime>
- <MsgType><![CDATA[text]]></MsgType>
- <Content><![CDATA[%s]]></Content>
- <FuncFlag>0</FuncFlag>
- </xml>";
- $picTpl = "<xml>
- <ToUserName><![CDATA[".$fromUsername."]]></ToUserName>
- <FromUserName><![CDATA[".$toUsername."]]></FromUserName>
- <CreateTime>".$time."</CreateTime>
- <MsgType><![CDATA[news]]></MsgType>
- <Content><![CDATA[]]></Content>
- <ArticleCount>%d</ArticleCount>
- <Articles>
- %s
- </Articles>
- <FuncFlag>1</FuncFlag>
- </xml>";
- if($this->keyword == 'hi' || $this->keyword == '您好' || $this->keyword == '你好' ||$this->keyword == 'hello2bizuser' ){
- $contentStr = "输入关键字开始搜索!";//自定义欢迎回复;
- echo sprintf($textTpl, $contentStr);
- }else if( !empty( $this->keyword )){
- $this->search();
- if($this->articleCount == 0){
- $contentStr = "抱歉,没有找到与【{$this->keyword}】相关的文章,要不你更换一下关键字,可能就有结果了哦 :-) ";
- echo sprintf($textTpl, $contentStr);
- }else{
- echo sprintf($picTpl,$this->articleCount,$this->items);
- }
- }
-
- }else {
- echo "";
- exit;
- }
- }
-
- private function search(){
- global $dsql;
- $weixin_posts = $dsql->SetQuery("Select * From `dede_archives` where title like '%".$this->keyword."%' order by id desc LIMIT 0, 5");
- $items = '';
- $dsql->Execute();
-
- while($weixin_post=$dsql->GetObject()){
- $title =$weixin_post->title;
- $excerpt = $weixin_post->description ;//获取摘要
- $thumb = $weixin_post->litpic ;//获取;
- $link = '/plus/view.php?aid='.$weixin_post->id;
- $items = $items . $this->get_item($title, $excerpt, $thumb, $link);
- $this->articleCount++;
- }
- if($this->articleCount > 5) $this->articleCount = 5;
-
- $this->items = $items;
- }
-
- private function get_item($title, $description, $picUrl, $url){
- if(!$description) $description = $title;
-
- return
- '
- <item>
- <Title><![CDATA['.$title.']]></Title>
- <Discription><![CDATA['.$description.']]></Discription>
- <PicUrl><![CDATA[http://'.$_SERVER['HTTP_HOST'].$picUrl.']]></PicUrl>
- <Url><![CDATA[http://'.$_SERVER['HTTP_HOST'].$url.']]></Url>
- </item>
- ';
- }
-
- private function checkSignature()
- {
- $signature = $_GET["signature"];
- $times**p = $_GET["times**p"];
- $nonce = $_GET["nonce"];
-
- $token = TOKEN;
- $tmpArr = array($token, $times**p, $nonce);
- sort($tmpArr);
- $tmpStr = implode( $tmpArr );
- $tmpStr = sha1( $tmpStr );
-
- if( $tmpStr == $signature ){
- return true;
- }else{
- return false;
- }
- }
- }
复制代码
|
|