一、接收普通消息
主要接口文档见:http://mp.weixin.qq.com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
目录
主要以文本消息作为参考:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
以下是参考代码,主要是将各类消息接收后,再推送给当前用户。这块将来可以根据自己的需要来调整
<span style="font-size:14px;"> string xContent = string.Empty;
//文本消息
if (msgtypevalue == "text")
{
xContent = "文本消息--" + Content.InnerText;
}
//图片消息
else if (msgtypevalue == "image")
{
xContent = "图片消息--" + PicUrl.InnerText + " MediaId:" + MediaId.InnerText;
}
//语音消息
else if (msgtypevalue == "voice")
{
xContent = "语音消息--" + " MediaId:" + MediaId.InnerText;
}
//视频消息
else if (msgtypevalue == "video")
{
xContent = "视频消息--" + " MediaId:" + MediaId.InnerText;
}
//小视频消息
else if (msgtypevalue == "shortvideo")
{
xContent = "小视频消息--" + " MediaId:" + MediaId.InnerText;
}
//地理位置消息
else if (msgtypevalue == "location")
{
xContent = "地理位置消息--" + " Location_X:" + Location_X.InnerText + " Location_Y:" + Location_Y.InnerText + " Label:" + Label.InnerText;
}
//链接消息
else if (msgtypevalue == "link")
{
xContent = "链接消息-" + " Title:" + Title.InnerText + " Description:" + Description.InnerText + " Url:" + Url.InnerText;
}
<span style="font-size:18px;">对于 接收的消息,以日记形式记载如下:</span>
<span style="font-size:18px;">微信端界面</span>
二、接收事件推送
主要接口文档见:http://mp.weixin.qq.com/wiki/7/9f89d962eba4c5924ed95b513ba69d9b.html
在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息。其中,某些事件推送在发生后,是允许开发者回复用户的。
其中包括有:
比如:关注/取消关注事件
用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。
微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次
关于重试的消息排重,推荐使用FromUserName + CreateTime 排重。
假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
推送XML数据包示例:
<span style="font-size:18px;"><xml>
<span style="font-size:18px;"><ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
</xml></span>
以下是参考代码,主要是将各类事件接收后,再以文本消息推送给当前用户。这块将来可以根据自己的需要来调整
<span style="font-size:18px;">string eventvalue = Event.InnerText;
//订阅
if (eventvalue == "subscribe")
{
xContent = "订阅 " ;
}
//取消订阅
else if (eventvalue == "unsubscribe")
{
xContent = "取消订阅 ";
}
//扫描带参数二维码事件
else if (eventvalue == "SCAN")
{
xContent = "扫描带参数二维码事件--用户已关注时的事件推送 " + EventKey.InnerText;
}
//上报地理位置事件
else if (eventvalue == "LOCATION")
{
xContent = "上报地理位置事件 -- 地理位置纬度: " + Latitude.InnerText + " 经度: " + Longitude.InnerText + " 精度: " + Precision.InnerText;
}
//自定义菜单事件--点击菜单拉取消息时的事件推送
else if (eventvalue == "CLICK")
{
xContent = "自定义菜单事件--点击菜单拉取消息时的事件推送 : " + EventKey.InnerText;
}
//自定义菜单事件--点击菜单跳转链接时的事件推送
else if (eventvalue == "VIEW")
{
xContent = "自定义菜单事件--点击菜单跳转链接时的事件推送 : " + EventKey.InnerText;
}
对于 接收的事件,以日记形式记载如下:
微信接口测试号中界面:
过程还有不清楚的,可以访问:https://shop112893715.taobao.com