【原文:http://blog.csdn.net/eadio/article/details/51546687,如有版权问题请告知我进行删除】
在开始这个章节前,我要特别说明下,“公众号消息与事件接收URL ”微信有说明尾数一定要带字串/$APPID$/,而这个固定字串,到时微信post消息过来的时候会自动替换成授权公众号。
一开始我也是不明白为什么要这样处理,我不是需要动态创建无数个方法,后来经大神提醒可以做成伪静态来处理。才恍然醒悟啊!!!
比如微信上填写: http://www.weixin.com/eventmsg/$APPID$/
我用的是mvc框架,那么我只要在路由里头重写下规则
routes.MapRoute(null,"eventmsg/{appid}", new { controller = "Event", action ="DoEvent" });
那么我只要创建一个event的控制器文件里头添加如下操作方法:
//公众号消息与事件接收URL 当普通用户关注授权给第三方公众号触发的url地址
public ContentResult DoEvent(string appid = "0"){
do something
用户关注自动回复处理....
}
以上都做好后,我提交了全网发布,然后微信反馈回来的消息如下:
然后我点击了下面的链接跳转到这个页面上,才发现微信在提交全网发布的时候还需要一个流程----“全网发布接入检测说明”。
接入全网发布地址:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318611&token=05f36979d4762c1277fa9578578c50ad85befaa5&lang=zh_CN
这里还需要做到3步验证,文档内描述如下:
当然如果你创建微信第三方的时候没有勾选
是不需要检测2、3步骤的,由于我默认都勾选的,所以上述提及的验证都需要在测试一遍才行。
接下来我们监控事件接收url地址,发现我点击发布的时候微信post过来三段xml文本消息
那么,现在我们只需要针对post过来的这三段测试消息体进行对应的回复。
经过一番测试发现步骤1、2回复xml消息体的还是都要经过加密成xml消息体在进行返回给微信服务器的哦,最后只需要根据获取到的content文本和消息类型进行xml封装回复。步骤如下:
1、模拟粉丝触发专用测试公众号的事件
2、模拟粉丝发送文本消息给专用测试公众号
3、模拟粉丝发送文本消息给专用测试公众号[返回Api文本消息]
最后一步验证比较麻烦,
首先,需要根据微信post过来的query_code和微信api获取测试公众号的access_token
然后,根据微信API"发送客服消息api回复文本消息给粉丝"接口发送写好的消息体。
微信api:客服接口-发消息【记住,这里不需要在加密啦】
http://mp.weixin.qq.com/wiki/1/70a29afed17f56d537c833f89be979c9.html#.E5.AE.A2.E6.9C.8D.E6.8E.A5.E5.8F.A3-.E5.8F.91.E6.B6.88.E6.81.AF
代码如下:
最后上传服务器再次提交测试,成功!