微信开发中怎样将处理后的结果提交到微信原来的易语言服务器与客户端上去,并显示在微信的客户端,使用户可以看得到!

跪求解答,做过微信公众平台的请进_百度知道
跪求解答,做过微信公众平台的请进
有些数据会发送给后台两遍。不过可能是微信服务器的问题。我基本可以确定不是我程序的问题最近在做一个微信公众平台,需要将用户回复的信息分析成特定的数据然后记录到数据库,结果导致数据库内相同的数据重复输入,结果今天还是出现重复记录的问题!PS,比如用户回复aa 11:不知道XML里面的CreateTime行不行,估计这样重复发送微信也会修改其中的MsgId,发送者等)都记录到数据库,相同的数据再发送一遍也不一定会出现这种情况,数据库里可以看到这两个校验值不一样。然后我将微信消息XML里的MsgId做了CRC32校验再记录到数据库作为判断数据唯一的标准。求助大神给个方法判断消息的唯一性,后台需要将aa和11代表的数据以及其它相关信息(如发送的时间,因为这个现象不会必然出现
提问者采纳
总共重试三次关于重试的消息排重,并且重新发起请求。
查看原帖&gt。各消息类型的推送XML数据包结构如下。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,并且不会发起重试,微信服务器不会对此作任何处理。微信服务器在五秒内收不到响应会断掉连接当普通微信用户向公众账号发消息时;&gt,微信服务器将POST消息的XML数据包到开发者填写的URL上,推荐使用msgid排重
其他类似问题
为您推荐:
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁12345678910
12345678910
关于本站 本站以分享运维技术为主,欢迎大家参与技术分享,同时也欢迎大家吐槽,本站提供以下交流圈:QQ群①:*****(满)QQ群②:6690706 QQ群③: QQ群④:(新) 微信公众号:ttlsacom 商务合作QQ:C#开发微信门户及应用(9)-微信门户菜单管理及提交到微信服务器 - 伍华聪 - 博客园
随笔 - 471, 文章 - 20, 评论 - 7038, 引用 - 20
微信公众号(包括服务号和订阅号)都可以对菜单进行自定义设置,我们为了方便管理,一般先把菜单数据在本地管理维护,需要更新的时候,把它们更新到微信服务器上就可以了。本文基于这个方式,介绍我的微信门户平台管理系统中菜单提交到微信服务器上的操作。微信门户应用管理系统,采用基于MVC+EasyUI的路线,由于多数域名服务器上都只能支持.NET4.0,所以以MVC3,C#4.0作为开发基础,基本上能够部署在任何.NET服务器上。
1、微信菜单的要求及相关界面设计
微信公众号的菜单我们可以通过网站进行本地的管理,维护好它们之间的层级关系,由于微信对自定义的菜单要求比较严格,以下是微信对自定义菜单的要求:
目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以&...&代替。
因此我们自己根据约定,不要越界即可,否则提交菜单到服务器,可能会返回一些错误,这些细节,我们在创建本地菜单管理的时候,注意一下就可以了。我在早期的一篇文章也介绍了自定义菜单的一些内容,需要可以进行回顾一下《》,本篇主要是介绍在我的平台管理系统里面,调用前面介绍的菜单接口API,实现菜单提交到服务器的操作。
根据微信的自定义菜单要求,我在管理系统里面,对微信的菜单几个基础性的界面设计如下。
主菜单管理界面如下所示。
添加菜单的界面设计如下所示
微信菜单的修改界面如下所示
微信菜单定义是存储在数据库里面,如果需要提交到微信服务器上并生效,则需要调用微信API接口进行处理,我在页面的Controller控制器里增加一个提交到服务器的处理方法。
2、提交菜单到微信服务器的操作
上面几个界面,主要就是根据微信菜单的属性,对菜单进行维护管理,我们最终的目的是把它们放到服务器上去,供我们处理客户的相关事件操作的。
提交菜单的操作,我们在MVC的View页面里面,使用JQuery的Ajax提交即可(前提是我们在控制器里面添加相应的处理,后面介绍),界面脚本代码如下所示。
//绑定提交按钮的的点击事件
function BindSubmitEvent() {
$("#btnSubmit").click(function () {
$.messager.confirm("提交菜单确认", "您确认需要提交菜单到微信服务器吗?", function (action) {
if (action) {
//提交数据
url: '/Menu/UpdateWeixinMenu',
type: 'post',
dataType: 'json',
success: function (data) {
if (data.Success) {
$.messager.alert("提示", "提交微信菜单成功");
$.messager.alert("提示", "提交微信菜单失败:" + data.ErrorMessage);
上面红色的代码,就是我们在MVC的控制器里面定义的方法,我们只需要通过POST方法,对控制器方法调用,就能实现菜单提交到微信服务器上,至于具体里面的细节,我们可以把它挪到控制器或者更底层进行处理就是了,页面不需要涉及太多的逻辑就是了。
上面那个Menu控制器的UpdateWeixinMenu的方法代码如下所示(主要就是根据我前面介绍过的开发模型进行处理就是了)。
/// &summary&
///更新微信菜单
/// &/summary&
/// &returns&&/returns&
public ActionResult UpdateWeixinMenu()
string token = base.GetAccessToken();
MenuListJson menuJson = GetWeixinMenu();
IMenuApi menuApi = new MenuApi();
CommonResult result = menuApi.CreateMenu(token, menuJson);
return ToJsonContent(result);
上面的几个方法这里逐一介绍一下。GetAccessToken主要就是获得当前操作的访问令牌,这里的操作可以用缓存进行缓存,否则频繁的获取AccessToken,达到每天指定的次数后,当天就不能再用了。
GetWeixinMenu方法,主要就是为了方便,对获取构造微信的自定义菜单数据进行了一个函数封装,具体代码如下所示。
/// &summary&
/// 生成微信菜单的Json数据
/// &/summary&
/// &returns&&/returns&
private MenuListJson GetWeixinMenu()
MenuListJson menuJson = new MenuListJson();
List&MenuNodeInfo& menuList = BLLFactory&Menu&.Instance.GetTree();
foreach (MenuNodeInfo info in menuList)
ButtonType type = (info.Type == "click") ? ButtonType.click : ButtonType.
string value = (type == ButtonType.click) ? info.Key : info.U
MenuJson weiInfo = new MenuJson(info.Name, type, value);
AddSubMenuButton(weiInfo, info.Children);
menuJson.button.Add(weiInfo);
return menuJ
private void AddSubMenuButton(MenuJson menu, List&MenuNodeInfo& menuList)
if (menuList.Count & 0)
menu.sub_button = new List&MenuJson&();
foreach (MenuNodeInfo info in menuList)
ButtonType type = (info.Type == "click") ? ButtonType.click : ButtonType.
string value = (type == ButtonType.click) ? info.Key : info.U
MenuJson weiInfo = new MenuJson(info.Name, type, value);
menu.sub_button.Add(weiInfo);
AddSubMenuButton(weiInfo, info.Children);
上面的代码,就是把本地存储的MenuNodeInfo数据,通过递归遍历的方式,转换为微信的自定义菜单实体MenuJson,这样我们调用API就非常方便了,这个函数主要负责构造对应的实体信息就是了。至于调用微信API提交菜单的事情,还是让API自己亲自处理为好,他们的代码如下所示(也就是上面函数的部分代码)。
IMenuApi menuApi = new MenuApi();
CommonResult result = menuApi.CreateMenu(token, menuJson);
return ToJsonContent(result);
最终的结果是返回一个通用的结果CommonResult,这个结果对象,非常方便脚本的处理,如果有错误,则提示错误,否则也方便判断布尔值,也就是上面的页面代码脚本。
success: function (data) {
if (data.Success) {
$.messager.alert("提示", "提交微信菜单成功");
$.messager.alert("提示", "提交微信菜单失败:" + data.ErrorMessage);
通过以上几部分的代码,我们就可以实现前台MVC的视图界面,调用后台封装好的微信API,实现菜单的提交处理了。
如果感兴趣或者体验相关的客服应答功能,可以关注我的微信了解下。具体效果可以关注我的微信门户:广州爱奇迪,也可以扫描下面二维码进行关注了解。
如果对这个系列感兴趣,可以关注我的其他文章,系列随笔如下所示:如何将我的vps配置成微信开发服务器?
[问题点数:40分,结帖进行中,请稍后查看结果,结帖人qq_]
如何将我的vps配置成微信开发服务器?
[问题点数:40分,结帖进行中,请稍后查看结果,结帖人qq_]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 易语言服务器与客户端 的文章

 

随机推荐