找回密码
 立即注册

QQ登录

只需一步,快速开始

微信公众号开发资源

关注:783

所属分类: 微信开发 微信公众号开发资源

本版块为微信公众号开发教程与公众号开发相关技术分享板块,技术提问请到其他对应的问答板块发帖:)

[公众号开发博客] 回显微信消息内容 - 傻瓜式微信开发教程11 - 耗子原创

  [复制链接]
查看: 27723|回复: 153
最佳答案
91 

57

主题

231

帖子

2112

积分

超级版主

Rank: 8Rank: 8

积分
2112
QQ
 楼主| 发表于 2015-8-19 14:05:12 | 显示全部楼层 |阅读模式
虽然我们知道了微信服务器发送给我们的各种消息格式,
但是有时我们需要知道微信服务器发送给我们的各种消息的内容.

那么我们能想到的最简单的方法就是在回复的消息中输出我们接收到的消息的每个字段的内容.
现在我们对`Wechat-php`框架做简单的修改.

我们查看`Wechat.php`中的`savePostData`函数,
这个函数中我们可以看到,从解密和读取xml数据后,
接收到的数据被作为一个`array`储存在`$this->request`字段中.

我们要做的就是把`$this->request`字段遍历出来并拼接成一个字符串,
提供给需要的地方使用就可以了.

  1. private function savePostData() {
  2.   $xml = '';

  3.   if ($this->encrypted) {
  4.     $errCode = $this->msgCryptor->decryptMsg($_GET['msg_signature'], $_GET['timestamp'], $_GET['nonce'], $GLOBALS['HTTP_RAW_POST_DATA'], $xml);

  5.     if ($errCode != 0) exit($errCode);

  6.   } else {
  7.     $xml = $GLOBALS['HTTP_RAW_POST_DATA'];
  8.   }

  9.   $xml = (array) simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);

  10.   // 微信服务器发送过来的数据被存在$this->request中
  11.   // 之前的代码查看是否需要对POST数据进行解密操作
  12.   $this->request = array_change_key_case($xml, CASE_LOWER);
  13.   // 将数组键名转换为小写,提高健壮性,减少因大小写不同而出现的问题
  14. }
复制代码


我们新写一个函数,实现把`$this->request`转换为字符串的功能:
游客,如果您要查看本帖隐藏内容请回复

现在我们在`index.php`中处理所以消息类型和事件类型的回调函数,
所有的处理都是一样的,返回微信服务器发送过来的内容.

  1. protected function onSubscribe() {
  2.     $this->responseText($this->getRequestTxt());
  3. }
  4. protected function onUnsubscribe() {
  5.     $this->responseText($this->getRequestTxt());
  6. }
  7. protected function onText() {
  8.     $this->responseText($this->getRequestTxt());
  9. }
  10. protected function onImage() {
  11.     $this->responseText($this->getRequestTxt());
  12. }
  13. protected function onLocation() {
  14.     $this->responseText($this->getRequestTxt());
  15. }
  16. protected function onLink() {
  17.     $this->responseText($this->getRequestTxt());
  18. }
  19. protected function onClick() {
  20.     $this->responseText($this->getRequestTxt());
  21. }
  22. protected function onEventLocation() {
  23.     $this->responseText($this->getRequestTxt());
  24. }
  25. protected function onVoice() {
  26.     $this->responseText($this->getRequestTxt());
  27. }
  28. protected function onScan() {
  29.     $this->responseText($this->getRequestTxt());
  30. }
  31. protected function onUnknown() {
  32.     $this->responseText($this->getRequestTxt());
  33. }
复制代码


修改完成后上传到我们的公众号服务器,然后在微信中向公众号发送消息,
就可以看见每种消息的回显了.
1-消息回显.png

附件中有全部工程代码.
游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

最佳答案
0 

0

主题

41

帖子

68

积分

新人求带

积分
68
发表于 2015-8-19 15:13:30 | 显示全部楼层
good samples
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

27

帖子

35

积分

新人求带

积分
35
发表于 2015-8-24 11:02:55 | 显示全部楼层
使用中。。。
回复

使用道具 举报

最佳答案
0 

0

主题

3

帖子

4

积分

新人求带

积分
4
发表于 2015-9-16 09:41:55 | 显示全部楼层
开发者模式的自定义菜单已经完成了。继续跟着LZ学习后期的知识。
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

10

帖子

10

积分

新人求带

积分
10
发表于 2015-9-17 13:53:46 | 显示全部楼层
刚回家快乐;「」
回复 支持 反对

使用道具 举报

最佳答案
0 

5

主题

47

帖子

152

积分

略知一二

积分
152
发表于 2015-9-19 20:49:12 | 显示全部楼层
学习学习,谢谢
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

23

帖子

17

积分

新人求带

积分
17
发表于 2015-9-20 20:27:10 | 显示全部楼层
感谢楼主的无私奉献
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

17

帖子

21

积分

新人求带

积分
21
发表于 2015-9-23 16:36:12 | 显示全部楼层
继续学习中
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

17

帖子

24

积分

新人求带

积分
24
发表于 2015-9-23 17:02:10 | 显示全部楼层
谢谢lz分享
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

18

帖子

10

积分

新人求带

积分
10
发表于 2015-9-25 15:23:31 | 显示全部楼层
111才踩踩踩从踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


易域网-您身边的域名管家

henkuai.com是专业的第三方微信开发者平台,为生态而生。


本站为第三方微信开发者平台,非腾讯官方网站。

天津市滨海新区
中新生态城中成大道生态建设公寓9号楼3层301

欢迎来这里一起喝喝茶,
聊聊你的产品。

微信公众号gongzhongkaifa

工作日12小时内回复。

网站业务
zhongcong@henkuai.com

工作日12小时内回复。

市场合作
songchang@henkuai.com