Code Bye

微信公众平台问题,求助

 

最近在做一个微信公众平台,需要将用户回复的信息分析成特定的数据然后记录到数据库,比如用户回复aa 11,后台需要将aa和11代表的数据以及其它相关信息(如发送的时间,发送者等)都记录到数据库。不过可能是微信服务器的问题,有些数据会发送给后台两遍,结果导致数据库内相同的数据重复输入。

 我基本可以确定不是我程序的问题,因为这个现象不会必然出现,相同的数据再发送一遍也不一定会出现这种情况。

 然后我将微信消息XML里的MsgId做了CRC32校验再记录到数据库作为判断数据唯一的标准,结果今天还是出现重复记录的问题,数据库里可以看到这两个校验值不一样,估计这样重复发送微信也会修改其中的MsgId。

 求助大神给个方法判断消息的唯一性!PS:不知道XML里面的CreateTime行不行?

实在不知道发哪个版块好,先发这里吧。。版主觉得有合适的帮忙转移下,多谢!

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次

关于重试的消息排重,推荐使用msgid排重。

假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

40分
把用户信息和createtime做成唯一索引
引用 1 楼 cdztop 的回复:

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次

关于重试的消息排重,推荐使用msgid排重。

假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

MsgId试过,无效,貌似不是因为服务器无响应而引起的重新发起请求(用的SAE,且数据处理挺少,应该也不会超过5s),微信开发平台的问答系统里也有人反馈过5s内重复post内容,我现在用了FromUserName和CreateTime,但官方文档是推荐事件消息排重用这个,不知道是否适用于普通消息

引用 2 楼 rucypli 的回复:

把用户信息和createtime做成唯一索引

这个适用于普通文本消息嘛?昨天我这么改了,今天没有发生相同问题,不过也还不一定,还得观察观察

我写了一个 微微信.NET:开源的ASP.NET微信公众号应用平台   
大家可以分享代码 互相交流 
CSDN博客:http://blog.csdn.net/weixin_net

http://blog.csdn.net/weixin_net/article/details/23964829 

能说下你做的步骤吗?或者把代码贴出来,怎么做的排重和回复空串

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明微信公众平台问题,求助