失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信公众平台 – php开发微信公众号 用户发送消息后 公众号没响应 怎么调试呢?

微信公众平台 – php开发微信公众号 用户发送消息后 公众号没响应 怎么调试呢?

时间:2020-04-07 18:22:07

相关推荐

微信公众平台 – php开发微信公众号 用户发送消息后 公众号没响应 怎么调试呢?

后端开发|php教程

php,微信公众平台,调试

后端开发-php教程

我是用thinkphp开发的,这是消息推送地址的代码:

小程序拼团 后台源码,ubuntu 时间管理,tomcat7不好使,菊花爬虫图片大全,关于php语法正确的是,怎么建设seolzw

sReqTimeStamp = I ( get.timestamp ); $this->sReqNonce = I ( get.nonce ); $this->sEncryptMsg = I ( get.msg_signature ); $this->wxcpt = new \WXBizMsgCrypt ( $token, $encodingaeskey, $appid); $sMsg = ""; // 解析之后的明文 $errCode = $this->wxcpt->DecryptMsg ( $this->sEncryptMsg, $this->sReqTimeStamp, $this->sReqNonce, $content, $sMsg ); if ($errCode != 0) {exit (); } else {// 解密成功,sMsg即为xml格式的明文$content = $sMsg; } } $data = new \SimpleXMLElement ( $content ); // $data || die ( 参数获取失败 ); foreach ( $data as $key => $value ) { $this->data [$key] = safe ( strval ( $value ) ); } $this->replyText("好好学习"); } /* 回复文本消息 */ public function replyText($content) { $msg [Content] = $content; $this->_replyData ( $msg, ext ); } /* 发送回复消息到微信平台 */ private function _replyData($msg, $msgType) { $msg [ToUserName] = $this->data [FromUserName]; $msg [FromUserName] = $this->data [ToUserName]; $msg [CreateTime] = NOW_TIME; $msg [MsgType] = $msgType; if ($_REQUEST [doNotInit]) { dump ( $msg ); exit (); } $xml = new \SimpleXMLElement ( \ ); $this->_data2xml ( $xml, $msg ); $str = $xml->asXML (); if ($_GET [encrypt_type] == aes) { $sEncryptMsg = ""; // xml格式的密文 $errCode = $this->wxcpt->EncryptMsg ( $str, $this->sReqTimeStamp, $this->sReqNonce, $sEncryptMsg ); if ($errCode == 0) {$str = $sEncryptMsg; } else { } } echo ($str); } /* 组装xml数据 */ public function _data2xml($xml, $data, $item = item) { foreach ( $data as $key => $value ) { is_numeric ( $key ) && ($key = $item); if (is_array ( $value ) || is_object ( $value )) {$child = $xml->addChild ( $key );$this->_data2xml ( $child, $value, $item ); } else {if (is_numeric ( $value )) { $child = $xml->addChild ( $key, $value );} else { $child = $xml->addChild ( $key ); $node = dom_import_simplexml ( $child ); $node->appendChild ( $node->ownerDocument->createCDATASection ( $value ) );} } } }}

其实我是想知道怎么去调试,代码肯定是有问题的。。。

中英企业网站源码,vscode输入中文出错,ubuntu vbox卡死,node跟tomcat异同,web爬虫知识,php 发送qq消息,吉林推荐的seo优化排行,唧唧帝以前的网站,shopex 模板变量lzw

微快客源码,如何配置ubuntu软件,爬虫前奏指什么,php 5.5.25,无锡seo基础lzw

回复内容:

我是用thinkphp开发的,这是消息推送地址的代码:

sReqTimeStamp = I ( get.timestamp ); $this->sReqNonce = I ( get.nonce ); $this->sEncryptMsg = I ( get.msg_signature ); $this->wxcpt = new \WXBizMsgCrypt ( $token, $encodingaeskey, $appid); $sMsg = ""; // 解析之后的明文 $errCode = $this->wxcpt->DecryptMsg ( $this->sEncryptMsg, $this->sReqTimeStamp, $this->sReqNonce, $content, $sMsg ); if ($errCode != 0) {exit (); } else {// 解密成功,sMsg即为xml格式的明文$content = $sMsg; } } $data = new \SimpleXMLElement ( $content ); // $data || die ( 参数获取失败 ); foreach ( $data as $key => $value ) { $this->data [$key] = safe ( strval ( $value ) ); } $this->replyText("好好学习"); } /* 回复文本消息 */ public function replyText($content) { $msg [Content] = $content; $this->_replyData ( $msg, ext ); } /* 发送回复消息到微信平台 */ private function _replyData($msg, $msgType) { $msg [ToUserName] = $this->data [FromUserName]; $msg [FromUserName] = $this->data [ToUserName]; $msg [CreateTime] = NOW_TIME; $msg [MsgType] = $msgType; if ($_REQUEST [doNotInit]) { dump ( $msg ); exit (); } $xml = new \SimpleXMLElement ( \ ); $this->_data2xml ( $xml, $msg ); $str = $xml->asXML (); if ($_GET [encrypt_type] == aes) { $sEncryptMsg = ""; // xml格式的密文 $errCode = $this->wxcpt->EncryptMsg ( $str, $this->sReqTimeStamp, $this->sReqNonce, $sEncryptMsg ); if ($errCode == 0) {$str = $sEncryptMsg; } else { } } echo ($str); } /* 组装xml数据 */ public function _data2xml($xml, $data, $item = item) { foreach ( $data as $key => $value ) { is_numeric ( $key ) && ($key = $item); if (is_array ( $value ) || is_object ( $value )) {$child = $xml->addChild ( $key );$this->_data2xml ( $child, $value, $item ); } else {if (is_numeric ( $value )) { $child = $xml->addChild ( $key, $value );} else { $child = $xml->addChild ( $key ); $node = dom_import_simplexml ( $child ); $node->appendChild ( $node->ownerDocument->createCDATASection ( $value ) );} } } }}

其实我是想知道怎么去调试,代码肯定是有问题的。。。

可以通过写文件或者数据库的方式调试,我一般是写文件!比如代码的入口开始写文件,记录用户openid以及发送内容,然后以此类推,最极端的情况是每行代码后面都跟上调试信息,当然,这没必要哈!只需要在你感兴趣的有疑问的地方加就好了!如果前一个调试信息有了,后一个调试信息没出来,肯定是中间的代码有问题!另外记得检查下代码有没有语法错误之类的,在编辑器里打开看看

微信公众号开发文档里又个php的例子,先把那个例子跑起来。然后对照那个例子一点一点地调试你的代码,先保证你和微信对接没问题。

然后,我是自己做了个客户端模拟微信用户给后台发消息,测试自己的逻辑对不对。

信信通

关注事件

<![CDATA[toUser]]><![CDATA[mocker]]>1348831865<![CDATA[event]]><![CDATA[subscribe]]>

文本消息

菜单消息

位置事件

<![CDATA[toUser]]><![CDATA[mocker]]> 1351776365 <![CDATA[location]]> 23.134521 113.358803 209876543210123456

二维码关注

场景二维码

完成微信群发

执行结果

var textmsg = \; textmsg += <![CDATA[toUser]]>; textmsg += <![CDATA[mocker]]>; textmsg += \ + Math.round((new Date()).getTime()/1000) + \; textmsg += <![CDATA[text]]>; textmsg += <![CDATA[test]]>; textmsg += 9876543210123456; textmsg += \; var eventmsg = \; eventmsg += <![CDATA[toUser]]>; eventmsg += <![CDATA[mocker]]>; eventmsg += \ + Math.round((new Date()).getTime()/1000) + \; eventmsg += <![CDATA[event]]>; eventmsg += <![CDATA[CLICK]]>; eventmsg += <![CDATA[/display/ti]]>; eventmsg += \; eventmsg += \; var qrscene = <![CDATA[toUser]]>; qrscene += <![CDATA[mocker]]>; qrscene += \ + Math.round((new Date()).getTime()/1000) + \; qrscene += <![CDATA[event]]>; qrscene += <![CDATA[subscribe]]>; qrscene += <![CDATA[qrscene_123]]>; qrscene += <![CDATA[TICKET]]>; qrscene += \; var qrscene2 = \; qrscene2 += <![CDATA[toUser]]>; qrscene2 += <![CDATA[mocker]]>; qrscene2 += \ + Math.round((new Date()).getTime()/1000) + \; qrscene2 += <![CDATA[event]]>; qrscene2 += <![CDATA[scan]]>; qrscene2 += <![CDATA[SCENE_VALUE]]>; qrscene2 += <![CDATA[TICKET]]>; qrscene2 += \; var masssendjobfinish = \; masssendjobfinish += <![CDATA[toUser]]>; masssendjobfinish += <![CDATA[mocker]]>; masssendjobfinish += \ + Math.round((new Date()).getTime()/1000) + \; masssendjobfinish += <![CDATA[event]]>; masssendjobfinish += <![CDATA[MASSSENDJOBFINISH]]>; masssendjobfinish += <![CDATA[1988]]>; masssendjobfinish += <![CDATA[sendsuccess]]>; masssendjobfinish += 100; masssendjobfinish += 80; masssendjobfinish += 75; masssendjobfinish += 5; masssendjobfinish += \; $(function(){ $(#text).html(textmsg); $(#event).html(eventmsg); $(#qrscene).html(qrscene); $(#qrscene2).html(qrscene2); $(#MASSSENDJOBFINISH).html(masssendjobfinish); $(utton.send).click(function(){ $.ajax({type: POST,url: /rest/mi/api?mpid= + $(#mpid).val() + &src= + $(#src).val(),data: $(this).parent().prev().val(),success: function(rsp) { $(#response).val(rsp);} }); }); });

我经常这么干的

1、在电脑上建立共享wifi

2、手机通过共享wifi上网,使用微信

3、在电脑上开Wireshark,然后抓你建立的共享wifi中的数据

4、在wireshark中跟踪请求和响应

还有个小事情可以处理下,就是设置你的服务器不启用gzip

最近微信官方提供了两个调试途径

登录你的微信公众号,找到开发者中心。

开启调试日志就能捕捉到微信服务器和你的服务器之间的异常和错误。

找到微信网页调试工具,这是一个结合了微信内置浏览器与chrome浏览器开发者工具的软件,windows和mac都有版本

附上最近基于微信高级接口开发的活动工具

链接

我提供两个方案,楼主自己看看你适不适合自己。

一是,把请求的数据写到log文件,一开始就从接受数据的位置,然后慢慢的往下推,到无法记录数据的时候就问题就在刚刚跳过的那里了,当然,语法错误真方法就无效了,语法错误的时候,你可以把微信授权的操作关掉(无授权请忽略),然后浏览器直接访问链接,看看报错位置。

第二,就是用微信官方给出的微信开发者工具进行调试,工具可以在微信呢开发者文档那里下载,位置大概是:开始开发->开发者调试工具

以上是个人微信呢开发时里面使用的调试方式,因为个人刚刚毕业不久,如果说错了,还请各位大神指正

可以试试用这个工具调试:

软件下载地址 是windows版的

先用将自己的openid打印在日志中,再复制到本地测试,发送消息可以本地测试;或者用qq浏览器有个微信调试工具 选择服务器调试 启动你本地的项目 将生成的外部链接配置在微信公众号里 就可以本地测试

如果觉得《微信公众平台 – php开发微信公众号 用户发送消息后 公众号没响应 怎么调试呢?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。