织梦dedecms微信公众平台插件代码

如何使用织梦和微信公众平台对接呢?首先新建一个weixin.php的文件放在plus目录下,接口配置信息 按下面说明填写,

URL: http://你的域名/plus/weixin.php

Token : weixin (和文件中保持一致)

这里定义为weixin,可以自己自定义。

 

<?php

define("TOKEN", "weixin");

require_once(dirname(__FILE__)."/../include/common.inc.php");                

$dsql = new DedeSql(false);

$wechatObj = new wechatCallback();

$wechatObj->valid();

 

class wechatCallback

{

    private $items = '';

    private $articleCount = 0;

    private $keyword = '';

 

        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(iconv("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 == '小鱼儿博客园' ){

                        $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"];

        $timestamp = $_GET["timestamp"];

        $nonce = $_GET["nonce"];    

 

        $token = TOKEN;

        $tmpArr = array($token, $timestamp, $nonce);

        sort($tmpArr);

        $tmpStr = implode( $tmpArr );

        $tmpStr = sha1( $tmpStr );

 

        if( $tmpStr == $signature ){

            return true;

        }else{

            return false;

        }

    }

}

 

若你的网站的格式是uft-8的话,请将:

$this->keyword = strtolower(trim(iconv("UTF-8","gb2312",$postObj->Content)));

改为
$this->keyword = strtolower(trim($postObj->Content));

要是gb2312的格式:

$this->keyword = strtolower(trim(iconv("UTF-8","gb2312",$postObj->Content)));

支付宝扫码打赏 微信扫码打赏

如果本文对你有帮助,欢迎打赏本站

喜欢 ()or分享
    匿名评论
  • 评论
人参与,条评论