框架简介
更新日志
准备工作
安装使用
基础支持
接收消息
发送消息
用户管理
自定义菜单
实例演示
多客服功能
智能接口
推广支持
安全性
序
快速开始
接口
链接
定时器
协议
测试
建议
更新日志
流程分析:
1、我们给微信服务器发送了一条“hello world”的文本消息。
2、微信服务器收到我们的消息后,查找该公众账号所配置的服务器信息中的URL(如何安装部分 - 第5步)。
3、微信服务器向第二步获取的URL发送请求,参数是微信服务器自己拼接过的XML格式。
4、根目录下的wechat.php,引入了我们的配置文件和所需的类后,进入了类WeChat的方法run()。该类位于core/wechat.lib.php。微信的XML数据此时已经被解析为数组,变量名为$request。
5、然后,我们进入了类WechatRequest的方法switchType(),根据不同的消息类型,给予不同的响应。比如用户发送文本消息和关注事件,给出的返回应该是不同的。当然,你要给出同样的提示也不能说是错的。
6、在第5步中的方法中,是一个switch,根据消息类型(此时是文本类型,微信服务器给我的是text)选择了一个处理文本消息的方法,类WechatRequest中的方法text()。该方法的功能是发送文本消息,文本内容是“收到文本”。
7、此时,我们return了一个数据返回给了上层调用,层层return,就到了我们根目录的下的唯一入口文件wechat.php,此时我们返回的数据被echo出来了。
8、微信服务器拿到了输出的数据,微信服务器进行分析和处理,将文本发送给了用户的微信客户端。我们就在手机上看到了微信输出的“收到文本”。
9、流程结束,这就是发送“hello world”,然后返回给用户“收到文本”。
Reply: Carlos Huang On 2015-08-07 10:20:59
public static function text($fromusername, $tousername, $content, $funcFlag=0){ $template = <<<XML <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>%s</FuncFlag> </xml> XML; return sprintf($template, $fromusername, $tousername, time(), $content, $funcFlag); } 这段代码里为什么在XML里和sprintf里 ---$fromusername, $tousername--对应的位置相反了?为什么?
Reply: jujumao On 2015-05-11 17:27:58
二维码扫描关注返回的是查找公众号关注,发送位置弹出位置选择器返回的位置,不知道这两个是不是BUG
回复