经过多次测试,从网上找的微信自动回复PHP代码终于可以正常使用了。欢迎大家的关注:
燕骏工控博客[环宇工控博客]–www.yanjuntech.cn 专注于工业自动化领域,分享工控相关经验与教程,分享收集的百度云盘工控资料资源,记录个人生活读书感悟。期待与您相遇~~
下面记录一下微信自动回复功能的调试过程:
首先要申请一个微信公众号,其次要有自己的网站服务器,然后网站服务器必须配置好PHP环境,这里我使用的PHPstudy集成环境进行安装的,环境装好之后。要配置自己的域名指向自己的网站根目录,微信后台目前的URL认证仅支持80端口(HTTP默认端口)或者443端口(HTTPS默认端口)。
然后到微信后台->基本配置,token那里自己填一个,然后在程序中将 这个token填到程序中
代码如下:
第一步要先验证token,登陆微信公众号后台 服务器配置选项:url为下面代码.php文件放在网站根目录的地址。
第二步:将下面完整的代码:解开相应部分的代码注释:然后把$wechatObj->responseMsg();先注释掉
1 2 3 4 5 6 7 8 9 10 11 |
$wechatObj->valid(); /* public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } }*/ |
第三步:微信后台点击 验证(token必须一致)
如果验证成功,则将验证部分的代码注释掉,然后打开信息发布的代码注释即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
<?php /** * wechat php test */ //define your token define("TOKEN", "zhuziwen"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->responseMsg(); //$wechatObj->valid(); class wechatCallbackapiTest { /* public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; 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); $RX_TYPE = trim($postObj->MsgType); switch($RX_TYPE) { case "text": $resultStr = $this->handleText($postObj); break; case "event": $resultStr = $this->handleEvent($postObj); break; default: $resultStr = "Unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }else { echo ""; exit; } } public function handleText($postObj) { $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $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>"; if(!empty( $keyword )) { $msgType = "text"; if($keyword=="你好"){ $contentStr = "Hello,friends,欢迎您关注【工控博客】微信号:gongkongboke"; }elseif($keyword=="苏州"){ $contentStr = "上有天堂,下有苏杭"; }else{ // $contentStr = "1.".'<a href="http://www.yanjuntech.cn/search/'.$keyword.'">'.'['.$keyword.']'."工控--相关搜索信息已获取,可点击查看".'</a>'."\n\n"."2.目前仅支持查询本站拥有的各种资源信息,如[汇川技术]、[三菱PLC]、[西门子PLC]等相关资料查询"."\n\n"."3.感谢您关注[环宇工控博客]!如果您感觉本号不错,欢迎推荐给朋友使用~~"; $contentStr = "1.".'<a href = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=54002054_dg&wd='.$keyword.'%20燕骏博客&oq='.$keyword.'%20燕骏博客&rsv_pq=f804aaf40004a8c5&rsv_t=df4bK2xceUD%2BrKqE4bSwLvuEWi4hb1zf220UyUWoBfaf48F%2FxSxUEILvEnQTd48npr0&rqlang=cn&rsv_enter=1&si=www.yanjuntech.cn&ct=2097152">'.'['.$keyword.']'."工控--相关搜索信息已获取,可点击查看".'</a>'."\n\n"."2.目前仅支持查询本站拥有的工控相关资源信息,如[汇川技术]、[三菱PLC]、[西门子PLC]等相关资料查询"."\n\n"."3.感谢您关注[环宇工控博客]!如果您感觉本号不错,欢迎推荐给朋友使用~~"; } $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something..."; } } public function handleEvent($object) { $contentStr = ""; switch ($object->Event) { case "subscribe": $contentStr = "感谢您关注[工控博客]--微信号:gongkongboke"."\n\n"."您可以发送工控相关的信息,本公众号会返回[www.yanjuntech.cn]网站上拥有的资料或者资源信息。感谢您的支持"; break; default : $contentStr = "Unknow Event: ".$object->Event; break; } $resultStr = $this->responseText($object, $contentStr); return $resultStr; } public function responseText($object, $content, $flag=0) { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>%d</FuncFlag> </xml>"; $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag); return $resultStr; } 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; } } } ?> |
转载请注明:燕骏博客 » hiahiahia~本站的微信公众号已经搞好了,可以自动回复啦~
赞赏作者微信赞赏支付宝赞赏