吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22405|回复: 56
收起左侧

[其他转载] [分享]PHP对接微信公众号源码 帝国CMS对接微信公众号PHP接口文件[任意CMS均可]

[复制链接]
582716403 发表于 2017-6-6 11:37
本帖最后由 wushaominkk 于 2018-7-6 11:16 编辑

勿喷,不会PHP代码,但是大概看懂了一些。我在之前论坛里有人提供的接口原基础上做了修改。完成了对帝国CMS基础对接功能,
目前已知的问题是,关键字不能回复,本来应该是先判断关键字,再查库的。  这里代码是先查库再判断了,但我技术太烂,尝试修改的时候一直出现报错,所以PHP大神来完善下吧。



测试接口:http://51zhuangbi.cn/api/api1.php   (如果异常,该尾数1,可以变换为1-10.示例:http://51zhuangbi.cn/api/api7.php  ,如果不能正常回复请私聊我)
默认token:weixin

效果图:



本代码已经是成品,复制源代码,新建php文件粘贴进去,替换你的数据库链接信息,与需要查询的表名,上传至你的网站空间,然后微信公众号后台登录,Url填写该php地址,token默认是weixin.   然后就OK了。




[PHP] 纯文本查看 复制代码
<?php
define("TOKEN", "weixin");//自己定义的token 就是个通信的私钥
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();    //验证  初次对接时不能注释掉 否则不能通过
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }
  
  
   public function responseMsg()
    {

                $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];


                if (!empty($postStr)){

                libxml_disable_entity_loader(true);
                      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);

                                $event = $postObj->Event;                        
                $time = time();
                $textTpl = "<xml>
                                                        <ToUserName><![CDATA[%s]]></ToUserName>
                                                        <FromUserName><![CDATA[%s]]></FromUserName>
                                                        <CreateTime>%s</CreateTime>
                                                        <MsgType><![CDATA[%s]]></MsgType>
                                                        <Content><![CDATA[%s]]></Content>
                                                        <FuncFlag>0</FuncFlag>
                                                        </xml>";    
                                


                                switch($postObj->MsgType)
                                {
                                        case 'event':

                                                if($event == 'subscribe')
                                                {
                                                //关注后的回复
                                                                                                $contentStr = "谢谢关注[寻片]公众号!本公众号提供各种资源搜索。输入电影名,我将回复你电影观看或下载地址。例:【速度与激情】
";


                                                        $msgType = 'text';
                                                        $textTpl = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                                                        echo $textTpl;

                                                }
                                                break;
                                        case 'text':
                                                if(preg_match('/[\x{4e00}-\x{9fa5}]+/u',$keyword))
                                                {        

                                                        $newsTplHeader = "<xml>
                                                        <ToUserName><![CDATA[%s]]></ToUserName>
                                                        <FromUserName><![CDATA[%s]]></FromUserName>
                                                        <CreateTime>%s</CreateTime>
                                                        <MsgType><![CDATA[news]]></MsgType>
                                                        <ArticleCount>%s</ArticleCount>
                                                        <Articles>";

                                                        $newsTplItem = "<item>
                                                        <Title><![CDATA[%s]]></Title> 
                                                        <Description><![CDATA[%s]]></Description>
                                                        <PicUrl><![CDATA[%s]]></PicUrl>
                                                        <Url><![CDATA[%s]]></Url>
                                                        </item>";
                                                        $newsTplFooter="</Articles>
                                                        </xml>";
 
                                                                        $con = mysql_connect("xxxxx数据库地址:5506","你的数据库","你的数据库密码");                                                                
                                                                        mysql_query("SET NAMES UTF8");
                                                                        mysql_query("set character_set_client=utf8"); 
                                                                        mysql_query("set character_set_results=utf8");
                                                                        mysql_select_db("你的数据库表名", $con);
                                                                        $sql = "SELECT * FROM `phome_ecms_news` WHERE `title` like '%".$keyword."%'  LIMIT 0 , 1";

                                                                        $result = mysql_query($sql);
                                                                        $itemCount = 0;
                                                                if(mysql_num_rows($result)>0){
                                                                while($row = mysql_fetch_assoc($result))
                                                                {

                                                                        $title = "".$row['title']."";
                                                                        $des ="";
                                                                        $url ="http://51zhuangbi.cn".$row['titleurl'];
                                                                        $picUrl1 ="http://51zhuangbi.cn".$row['titlepic']."";
                                                                        $contentStr .= sprintf($newsTplItem, $title, $des, $picUrl1, $url);                                                                                                                                                                                                                                        
                                                                        ++$itemCount;        
                                                                }                                                        
                                                                $newsTplHeader = sprintf($newsTplHeader, $fromUsername, $toUsername, $time, $itemCount);
                                                                $resultStr =  $newsTplHeader. $contentStr. $newsTplFooter;
                                                                echo $resultStr; 
                                                                }
                                                                else
                                                                {
                                                                        $newsTpl = "<xml>
                                                                                <ToUserName><![CDATA[%s]]></ToUserName>
                                                                                <FromUserName><![CDATA[%s]]></FromUserName>
                                                                                <CreateTime>%s</CreateTime>
                                                                                <MsgType><![CDATA[news]]></MsgType>
                                                                                <ArticleCount>1</ArticleCount>
                                                                                <Articles>
                                                                                <item>
                                                                                <Title><![CDATA[%s]]></Title> 
                                                                                <Description><![CDATA[%s]]></Description>
                                                                                <PicUrl><![CDATA[%s]]></PicUrl>
                                                                                <Url><![CDATA[%s]]></Url>
                                                                                </item>                                                        
                                                                                </Articles>
                                                                                </xml>";                                                
                                                                
                                                                //没有查找到的时候的回复
                                                                                $title = '未找到结果,请确认有无错别字,或尝试精简搜索字(如您回复的是【速度与激情10】,请尝试【速度与激情】),此外,依次点击两次右上角,选择推荐给朋友,此后,你将可享受神秘特权哦!';
                                                                                
                                                                                $des1 ="";
                                                                                
                                                                                $picUrl1 ="http://51zhuangbi.cn/d/weizhaodao.jpg";
                                                                                
                                                                                $url="http://51zhuangbi.cn/misc/message/";

                                                                                $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
                                                                        
                                                                                echo $resultStr;         

                                                                }
                                                                                mysql_close($con);
                                                                        
                                                                }                                                                                                                                                
                                                else
                                                {
                                                        $newsTpl = "<xml>
                                                        <ToUserName><![CDATA[%s]]></ToUserName>
                                                        <FromUserName><![CDATA[%s]]></FromUserName>
                                                        <CreateTime>%s</CreateTime>
                                                        <MsgType><![CDATA[news]]></MsgType>
                                                        <ArticleCount>1</ArticleCount>
                                                        <Articles>
                                                        <item>
                                                        <Title><![CDATA[%s]]></Title> 
                                                        <Description><![CDATA[%s]]></Description>
                                                        <PicUrl><![CDATA[%s]]></PicUrl>
                                                        <Url><![CDATA[%s]]></Url>
                                                        </item>                                                        
                                                        </Articles>
                                                        </xml>";        
                                                 if($keyword=="help")
                                                {
                                                                                $title = '输入你要找的电影名,或点击进入寻片网主页';
                                                                                
                                                                                $des1 ="";
                                                                                //图片地址
                                                                                $picUrl1 ="http://51zhuangbi.cn/help.jpg";
                                                                                //跳转链接
                                                                                $url="http://51zhuangbi.cn";

                                                                                $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
                                                                        
                                                                                echo $resultStr;         
                                                }
                                                if($keyword=="菜单")
                                                {
                                                                                $title = '点击进入主页,右边 点击 菜单图标 “三” 选择你想看的栏目';
                                                                                
                                                                                $des1 ="";
                                                                                //图片地址
                                                                                $picUrl1 ="http://51zhuangbi.cn/help.jpg";
                                                                                //跳转链接
                                                                                $url="http://51zhuangbi.cn";

                                                                                $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
                                                                        
                                                                                echo $resultStr;         
                                                }
                                                if($keyword=="联系客服")
                                                {
                                                                                $title = '联系客服';
                                                                                
                                                                                $des1 ="";
                                                                                //图片地址
                                                                                $picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
                                                                                //跳转链接
                                                                                $url="http://51zhuangbi.cn/misc/message/";

                                                                                $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
                                                                        
                                                                                echo $resultStr;         
                                                }
                                                if($keyword=="自助更新")
                                                {
                                                                                $title = '自助更新入口';
                                                                                
                                                                                $des1 ="";
                                                                                //图片地址
                                                                                $picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
                                                                                //跳转链接
                                                                                $url="http://51zhuangbi.cn/misc/message/";

                                                                                $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
                                                                        
                                                                                echo $resultStr;         
                                                }
                                                if($keyword=="留言")
                                                {
                                                                                $title = '看片留言:点击进入';
                                                                                
                                                                                $des1 ="";
                                                                                //图片地址
                                                                                $picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
                                                                                //跳转链接
                                                                                $url="http://51zhuangbi.cn/misc/message/";

                                                                                $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
                                                                        
                                                                                echo $resultStr;         
                                                }
                                                                                                $contentStr = "\r\n 输入电影名如:速度与激情7 如果没有具体想看的,请点击进入主页:51zhuangbi.cn";


                                                        $msgType = 'text';
                                                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                                                        echo $resultStr;
                                                }                                        
                                                
                                                
                                                break;
                                        default:
                                                break;
                                }                                                

        }else {
                echo "你好!欢迎进微信公众号";
                exit;
        }
    }

    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;
        }
    }
}
?>

免费评分

参与人数 15吾爱币 +15 热心值 +12 收起 理由
htyp007 + 1 用心讨论,共获提升!
SuperVIP + 1 + 1 安装后 一直验证失败 怎么破
469164323 + 1 + 1 来一些php微信的课程,韩xx公开课已看过,求深入课程
cuijiwei + 1 + 1 编辑器有点像vsc哦,
天辰666 + 1 + 1 我很赞同!
回忆是暮色渐浓 + 1 + 1 谢谢@Thanks!
hlink1021 + 1 + 1 热心回复!
小树丶 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
yzhzhp + 1 + 1 牛逼作者,给您动力,这个东西不错不错
caijinqi1998 + 1 + 1 我很赞同!
zdnyp + 1 谢谢@Thanks!
小叔叔 + 1 dedecms也可以用吗
ycc714 + 1 + 1 我很赞同!
卡布奇诺R + 1 + 1 小白一枚,虽然看不懂,还是支持一下,辛苦了
l377076312 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

beyondandsoul 发表于 2018-2-11 14:54
582716403 发表于 2017-6-8 14:23
有,目前还在修改中,一个完美更加强化版本马上快好了。等更新

楼主  我用的是飞飞cms   输入正确的电影名字   但是返回的是未找到该电影名字。  数据库账号密码,数据库用户名 都是对的
 楼主| 582716403 发表于 2017-6-8 14:23
采蘑菇的小提莫 发表于 2017-6-7 10:57
楼主 是不是你上面 那个还没完善? 搜不到关键词? 有没有完美版的?

有,目前还在修改中,一个完美更加强化版本马上快好了。等更新
E式丶男孩 发表于 2017-6-6 12:15
唯爱不朽 发表于 2017-6-6 12:58
具体有什么功能了?
头像被屏蔽
卡布奇诺R 发表于 2017-6-6 13:07
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 582716403 发表于 2017-6-6 13:15
卡布奇诺R 发表于 2017-6-6 13:07
需要网站和域名吗?小白一名

需要的哦
 楼主| 582716403 发表于 2017-6-6 13:27
唯爱不朽 发表于 2017-6-6 12:58
具体有什么功能了?

单纯的做了对接。
ycc714 发表于 2017-6-6 13:30
感谢楼主分享
小叔叔 发表于 2017-6-6 13:33
看着好像很不错的啊
飞的低一点 发表于 2017-6-6 18:44
谢谢分享~~~明天试一试
平淡哥 发表于 2017-6-6 19:54

不错,学习中,射谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 22:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表