PHP微信API的接入和关键字自动回复
https://blog.csdn.net/self_realian/article/details/70849159
公众账号的使用模式分类
1,编辑模式:有微信公众平台,提供给微信公众账号管理者的一个简单的,可视化操作的界面,主要是方便
微信公众账号管理者,能够进行一些简单的微信运营
2,开发者模式:就是调用一些微信的公用接口,来完成一些自身业务
应用中接入API接口步骤
1,填写服务器URL,token(注意:只支持80端口 也就是http服务必须在80端口打开,才能接收发送过来的消息
这里的url就是指第三方服务器的url,它的作用主要是接收微信推送的消息
这里的token是开发者与微信公众平台之间约定的口令,主要是用来验证第三方服务器真正的合法性
2,验证服务器地址的有效性,加密/校验流程如下:
(1)将token、timestamp、nonce三个参数进行字典序排序(这三个都是微信通过get方法传送过来的三个参数,通过这三个参数可以来验证请求是否来自于微信)
(2)将三个参数字符串拼接成一个字符串进行sha1加密
(3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
3,关于access_token
(1)access_token与appid,appsecred的关系
当你在微信公众平台注册微信公众账号时,微信公众平台为你生成了一个appid和appsecred,这两个值就是你在微信公众平台上的一个唯一标识
appid和appsecred(edd7d19a4d8c625ed1244d17f78a9165)就是用来产生access_token,access_token其实就是一个动态口令,它有时间性,一段时间内有效
也可以将access_token理解成调用微信公众平台的一些接口的钥匙
特点:(1)唯一有效性(2)全局有效性 (至于access_token的详解,可以进入微信,查看“开发者文档”)
微信开放接口
1,获取access_token
2,获取微信服务器地址
说完这些之后,下边就是代码部分。首先提醒大家,要想添加自己的这些功能,首先要有一个自己的公网可以访问的域名,没有的可以在腾讯云或阿里云上申请一个(我用的框架是ThinkPHP3.2.2的)
[php] view plain copy
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ $timestamp = $_GET['timestamp'];//timestamp其实就是一个时间戳 $nonce = $_GET['nonce'];//nonce是一个随机参数 $token = "weixin";//这个token填写你在微信公众平台上写的那个值 $signature = $_GET['signature'];//这个signature其实就是在微信公众平台已经加密好的字符串 $echostr = $_GET['echostr']; $array = array( $timestamp, $nonce, $token); sort($array); $tmpstr = implode('', $array); $tmpstr = sha1($tmpstr); if( $tmpstr == $signature && $echostr){ echo $echostr; exit; }else{ $this->reponseMsg(); } } public function reponseMsg(){ $postArr = $GLOBALS['HTTP_RAW_POST_DATA']; $postObj = simplexml_load_string( $postArr ); if( strtolower( $postObj->MsgType) == 'event'){ //如果是关注事件(subscribe) if( strtolower($postObj->Event == 'subscribe') ){ //回复用户消息 $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $time = time(); $msgType = 'text'; $content = '欢迎关注 书旅and良玉 微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName; $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content); echo $info; } } //回复纯文本或单图文消息 if(($postObj->MsgType) == 'text' && trim($postObj->Content) == '夏目友人帐'){ $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $arr = array( array( 'title'=>'夏目友人帐', 'description'=>"此生无悔入夏目", 'picUrl'=>'http://img4.duitang.com/uploads/item/201508/16/20150816015528_X8dKY.jpeg', 'url'=>'http://www.shulvchen.cn', ), ); $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>".count($arr)."</ArticleCount> <Articles>"; foreach($arr as $k=>$v){ $template .="<item> <Title><![CDATA[".$v['title']."]]></Title> <Description><![CDATA[".$v['description']."]]></Description> <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl> <Url><![CDATA[".$v['url']."]]></Url> </item>"; } $template .="</Articles> </xml> "; echo sprintf($template, $toUser, $fromUser, time(), 'news'); }else{ switch( trim($postObj->Content) ){ case 'bb': $content = '我喜欢你'; break; case '良玉': $content = '我喜欢你'; break; case '书旅': $content = '加油'; break; case 'dsdf': $content = '不愿错过他'; break; case '垒哥': $content = '垒哥已死,有事儿烧纸'; break; case '书旅and良玉': $content = 'Forever with you'; break; case '学弟': $content = '书旅是你学长'; break; default: $content = "<a href='http://www.baidu.com'>百度一下,你就知道(点击文字,进入百度)</a>"; } $template1 = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $fromUser = $postObj->ToUserName;//消息从哪里来 $toUser = $postObj->FromUserName;//发送给谁 $time = time(); //$content = '我喜欢你'; $msgType = 'text'; echo sprintf($template1, $toUser, $fromUser,$time, $msgType, $content); } } }
希望这篇博客对跟我一样喜欢微信开发的小菜鸟们有所帮助
相关推荐:
实例详解Python+Slack API 如何实现聊天机器人
以上就是PHP微信API的接入和关键字自动回复的详细内容,更多请关注其它相关文章!
上一篇: 数据库相关的增删改查操作——SQL语句及演示(Mysql学习系列一)
下一篇: 数据库11:运算符
推荐阅读
-
如何设置微信公众号关键字自动回复?微信公告平台关键词自动回复粉丝的方法
-
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
-
PHP微信开发之微信消息自动回复下所遇到的坑_PHP
-
微信接入图灵机api,实现机器人自动回复
-
PHP微信开发之微信消息自动回复下所遇到的坑,php自动回复_PHP教程
-
微信接入图灵机api,实现机器人自动回复
-
PHP微信开发之微信消息自动回复下所遇到的坑,php自动回复
-
PHP微信API的接入和关键字自动回复
-
如何设置微信公众号关键字自动回复?微信公告平台关键词自动回复粉丝的方法
-
微信公众平台 - 今天弄微信服务号的消息回复自定义php,发现用公司的服务号不能正常运行,但是用自己的公众号却可以自动回复消息