• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    dedecms增加微信公众号平台发布插件
    POST TIME:2021-05-23 02:25

    现在微信公众号很火,基本是个网站都会再运营一个公众号,因此我们用DEDECMS建站也需要与时俱进对接进入公众号功能,在公众号发布文章,提高用户粘度

    1. 把以下代码保存为winxin.php放到dede程序的plus目录下.

    代码如下   

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

    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!