找回密码
 注册帐号
查看: 4150|回复: 5

PHP对接微信公众号源码 帝国CMS对接微信公众号PHP接口文件[任意CMS均可]

[复制链接]

1400

主题

46

回帖

6880

积分

版主

发表于 2017-6-13 23:06:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册帐号

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



测试接口:http://51zhuangbi.cn/api/api.php   (该接口经常调整,如果不能正常回复请私聊我)
默认token:weixin

效果图:



本代码已经是成品,复制源代码,新建php文件粘贴进去,替换你的数据库链接信息,与需要查询的表名,上传至你的网站空间,然后微信公众号后台登录,Url填写该php地址,token默认是weixin.   然后就OK了。
以下是代码
  1. <?php
  2. define("TOKEN", "weixin");//自己定义的token 就是个通信的私钥
  3. $wechatObj = new wechatCallbackapiTest();
  4. //$wechatObj->valid();    //验证  初次对接时不能注释掉 否则不能通过
  5. $wechatObj->responseMsg();
  6. class wechatCallbackapiTest
  7. {
  8.     public function valid()
  9.     {
  10.         $echoStr = $_GET["echostr"];
  11.         if($this->checkSignature()){
  12.             echo $echoStr;
  13.             exit;
  14.         }
  15.     }
  16.    
  17.    
  18.    public function responseMsg()
  19.     {

  20.                 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];


  21.                 if (!empty($postStr)){

  22.                 libxml_disable_entity_loader(true);
  23.                       $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  24.                 $fromUsername = $postObj->FromUserName;
  25.                 $toUsername = $postObj->ToUserName;
  26.                 $keyword = trim($postObj->Content);

  27.                                 $event = $postObj->Event;                        
  28.                 $time = time();
  29.                 $textTpl = "<xml>
  30.                                                         <ToUserName><![CDATA[%s]]></ToUserName>
  31.                                                         <FromUserName><![CDATA[%s]]></FromUserName>
  32.                                                         <CreateTime>%s</CreateTime>
  33.                                                         <MsgType><![CDATA[%s]]></MsgType>
  34.                                                         <Content><![CDATA[%s]]></Content>
  35.                                                         <FuncFlag>0</FuncFlag>
  36.                                                         </xml>";   
  37.                                  


  38.                                 switch($postObj->MsgType)
  39.                                 {
  40.                                         case 'event':

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


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

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

  54.                                                         $newsTplHeader = "<xml>
  55.                                                         <ToUserName><![CDATA[%s]]></ToUserName>
  56.                                                         <FromUserName><![CDATA[%s]]></FromUserName>
  57.                                                         <CreateTime>%s</CreateTime>
  58.                                                         <MsgType><![CDATA[news]]></MsgType>
  59.                                                         <ArticleCount>%s</ArticleCount>
  60.                                                         <Articles>";

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

  76.                                                                         $result = mysql_query($sql);
  77.                                                                         $itemCount = 0;
  78.                                                                 if(mysql_num_rows($result)>0){
  79.                                                                 while($row = mysql_fetch_assoc($result))
  80.                                                                 {

  81.                                                                         $title = "".$row['title']."";
  82.                                                                         $des ="";
  83.                                                                         $url ="http://51zhuangbi.cn".$row['titleurl'];
  84.                                                                         $picUrl1 ="http://51zhuangbi.cn".$row['titlepic']."";
  85.                                                                         $contentStr .= sprintf($newsTplItem, $title, $des, $picUrl1, $url);                                                                                                                                                                                                                                       
  86.                                                                         ++$itemCount;        
  87.                                                                 }                                                        
  88.                                                                 $newsTplHeader = sprintf($newsTplHeader, $fromUsername, $toUsername, $time, $itemCount);
  89.                                                                 $resultStr =  $newsTplHeader. $contentStr. $newsTplFooter;
  90.                                                                 echo $resultStr;
  91.                                                                 }
  92.                                                                 else
  93.                                                                 {
  94.                                                                         $newsTpl = "<xml>
  95.                                                                                 <ToUserName><![CDATA[%s]]></ToUserName>
  96.                                                                                 <FromUserName><![CDATA[%s]]></FromUserName>
  97.                                                                                 <CreateTime>%s</CreateTime>
  98.                                                                                 <MsgType><![CDATA[news]]></MsgType>
  99.                                                                                 <ArticleCount>1</ArticleCount>
  100.                                                                                 <Articles>
  101.                                                                                 <item>
  102.                                                                                 <Title><![CDATA[%s]]></Title>
  103.                                                                                 <Description><![CDATA[%s]]></Description>
  104.                                                                                 <PicUrl><![CDATA[%s]]></PicUrl>
  105.                                                                                 <Url><![CDATA[%s]]></Url>
  106.                                                                                 </item>                                                        
  107.                                                                                 </Articles>
  108.                                                                                 </xml>";                                                
  109.                                                                  
  110.                                                                 //没有查找到的时候的回复
  111.                                                                                 $title = '未找到结果,请确认有无错别字,或尝试精简搜索字(如您回复的是【速度与激情10】,请尝试【速度与激情】),此外,依次点击两次右上角,选择推荐给朋友,此后,你将可享受神秘特权哦!';
  112.                                                                                  
  113.                                                                                 $des1 ="";
  114.                                                                                  
  115.                                                                                 $picUrl1 ="http://51zhuangbi.cn/d/weizhaodao.jpg";
  116.                                                                                  
  117.                                                                                 $url="http://51zhuangbi.cn/misc/message/";

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

  121.                                                                 }
  122.                                                                                 mysql_close($con);
  123.                                                                         
  124.                                                                 }                                                                                                                                                
  125.                                                 else
  126.                                                 {
  127.                                                         $newsTpl = "<xml>
  128.                                                         <ToUserName><![CDATA[%s]]></ToUserName>
  129.                                                         <FromUserName><![CDATA[%s]]></FromUserName>
  130.                                                         <CreateTime>%s</CreateTime>
  131.                                                         <MsgType><![CDATA[news]]></MsgType>
  132.                                                         <ArticleCount>1</ArticleCount>
  133.                                                         <Articles>
  134.                                                         <item>
  135.                                                         <Title><![CDATA[%s]]></Title>
  136.                                                         <Description><![CDATA[%s]]></Description>
  137.                                                         <PicUrl><![CDATA[%s]]></PicUrl>
  138.                                                         <Url><![CDATA[%s]]></Url>
  139.                                                         </item>                                                        
  140.                                                         </Articles>
  141.                                                         </xml>";        
  142.                                                  if($keyword=="help")
  143.                                                 {
  144.                                                                                 $title = '输入你要找的电影名,或点击进入寻片网主页';
  145.                                                                                  
  146.                                                                                 $des1 ="";
  147.                                                                                 //图片地址
  148.                                                                                 $picUrl1 ="http://51zhuangbi.cn/help.jpg";
  149.                                                                                 //跳转链接
  150.                                                                                 $url="http://51zhuangbi.cn";

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

  164.                                                                                 $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
  165.                                                                         
  166.                                                                                 echo $resultStr;         
  167.                                                 }
  168.                                                 if($keyword=="联系客服")
  169.                                                 {
  170.                                                                                 $title = '联系客服';
  171.                                                                                  
  172.                                                                                 $des1 ="";
  173.                                                                                 //图片地址
  174.                                                                                 $picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
  175.                                                                                 //跳转链接
  176.                                                                                 $url="http://51zhuangbi.cn/misc/message/";

  177.                                                                                 $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
  178.                                                                         
  179.                                                                                 echo $resultStr;         
  180.                                                 }
  181.                                                 if($keyword=="自助更新")
  182.                                                 {
  183.                                                                                 $title = '自助更新入口';
  184.                                                                                  
  185.                                                                                 $des1 ="";
  186.                                                                                 //图片地址
  187.                                                                                 $picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
  188.                                                                                 //跳转链接
  189.                                                                                 $url="http://51zhuangbi.cn/misc/message/";

  190.                                                                                 $resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
  191.                                                                         
  192.                                                                                 echo $resultStr;         
  193.                                                 }
  194.                                                 if($keyword=="留言")
  195.                                                 {
  196.                                                                                 $title = '看片留言:点击进入';
  197.                                                                                  
  198.                                                                                 $des1 ="";
  199.                                                                                 //图片地址
  200.                                                                                 $picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
  201.                                                                                 //跳转链接
  202.                                                                                 $url="http://51zhuangbi.cn/misc/message/";

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


  208.                                                         $msgType = 'text';
  209.                                                         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  210.                                                         echo $resultStr;
  211.                                                 }                                       
  212.                                                 
  213.                                                 
  214.                                                 break;
  215.                                         default:
  216.                                                 break;
  217.                                 }                                                

  218.         }else {
  219.                 echo "你好!欢迎进微信公众号";
  220.                 exit;
  221.         }
  222.     }

  223.     private function checkSignature()
  224.     {
  225.         $signature = $_GET["signature"];
  226.         $timestamp = $_GET["timestamp"];
  227.         $nonce = $_GET["nonce"];
  228.         $token =TOKEN;
  229.         $tmpArr = array($token, $timestamp, $nonce);
  230.         sort($tmpArr);
  231.         $tmpStr = implode( $tmpArr );
  232.         $tmpStr = sha1( $tmpStr );

  233.         if( $tmpStr == $signature ){
  234.             return true;
  235.         }else{
  236.             return false;
  237.         }
  238.     }
  239. }
  240. ?>
复制代码


哎...今天够累的,签到来了1...

0

主题

144

回帖

337

积分

筑基

发表于 2017-6-23 20:23:35 | 显示全部楼层
楼主是超人
欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦
发表于 2017-6-23 20:24:19 | 显示全部楼层
真心顶
欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦

1

主题

146

回帖

349

积分

筑基

发表于 2017-6-23 20:53:39 | 显示全部楼层
很好哦
欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦

0

主题

140

回帖

327

积分

筑基

发表于 2017-6-23 20:04:43 | 显示全部楼层
不错不错
欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦

0

主题

155

回帖

364

积分

筑基

发表于 2017-6-23 20:29:21 | 显示全部楼层
给力
欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

Archiver|sitemap|小黑屋|手机版原版|安全之家

GMT+8, 2025-4-4 19:03 , Processed in 0.105297 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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