分享

回显微信消息内容 - 傻瓜式微信开发教程11 - 耗子原创

 取经悟能 2015-10-10
虽然我们知道了微信服务器发送给我们的各种消息格式,
但是有时我们需要知道微信服务器发送给我们的各种消息的内容.

那么我们能想到的最简单的方法就是在回复的消息中输出我们接收到的消息的每个字段的内容.
现在我们对`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. }
复制代码


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


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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多