asp版微信公众平台开发代码 (2016/11/7 10:34:30) |
分类:微信公众平台 | 标签:asp 微信公众平台 微信平台开发 |
申请公众号后,对公众号里的开发工具进行了设置。设置了服务器配置以后,接收到的用户消息就不会通过自动回复来发送了,只能通过你所设置的 服务器地址来进行交互。 需要注意的是,没有通过认证的个人订阅号无法实现自定义菜单功能,只能和用户通过命令方式进行交互。 那么,如何来接收用户通过微信平台发来的消息呢? 实际上,设置了服务器配置URL后,微信平台的消息发送过程是这样的:  (图) 微信平台收到用户发来的消息之后,对这个消息进行固定格式的xml封包,然后post到开发者填写的URL上。 这个XML数据包的格式如下: <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> 其中,ToUserName是开发者微信号;FromUserName是发送者的账号(不是微信号,是一个OpenID,微信平台根据这个能找到是谁发送的); CreateTIme就是发送的时间,MsgType是text,表示为文本型的消息;Content就是所发送的消息内容;而MsgId是微信用来记录的发送的消息id。 我们的asp文件就可以通过读取以上xml数据包,得到是谁(FromUserName)给我们发送了什么类型(MsgType)的消息(Content)。 asp读取xml数据包的代码如下: set xml_dom=server.CreateObject("MSXML2.DOMDocument")'创建一个MSXML2.DOMDocument对象 xml_dom.load request '载入post过来的数据包,也可以是xml格式的文件 ToUserName=xml_dom.getElementsByTagName("ToUserName").item(0).text '用getElementByTagName方法得到标签ToUserName的值,下同 FromUserName=xml_dom.getElementsByTagName("FromUserName").item(0).text content=xml_dom.getElementsByTagName("Content").item(0).text select case content case "绑定账号" '处理绑定账号相关代码 case else '其他命令相关代码 end select 在以上代码中,我们可以通过一些分隔符将交互信息隔开,形成命令。比如: arrcontent=split(content," ")'关键字用空格进行隔开 select case arrcontent(0) case "绑定账号" if ubound(arrcontent)=0 then strsend="绑定账号格式不正确,正确格式为:绑定账号 手机号码(中间用空格隔开)" else '处理绑定账号相关代码 end if end select 用户发送过来的命令处理完之后,接下来是要将处理结果返回到微信。返回的数据也是一个xml格式的数据包。 格式如下: <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml> 参数含义和接收到的xml数据参数含义是一样的,需要注意的是,FromUserName需要填写微信平台的OpenID,这个ID可以在处理接收到的xml数据里获 取到。 那么,我们就可以构造一个发送的xml数据回传给微信服务器了。 strresponse="<xml>"&vbcrlf strresponse=strresponse&"<ToUserName><![CDATA["&fromusername&"]]></ToUserName>"&vbcrlf strresponse=strresponse&"<FromUserName><![CDATA["&tousername&"]]></FromUserName>"&vbcrlf strresponse=strresponse&"<CreateTime>"&now&"</CreateTime>"&vbcrlf strresponse=strresponse&"<MsgType><![CDATA[text]]></MsgType>"&vbcrlf strresponse=strresponse&"<Content><![CDATA["&strsend&"]]></Content>"&vbcrlf '反馈的消息 strresponse=strresponse&"</xml>" response.write strresponse 这样一来,我们就制作了一个完整的asp版微信公众平台应答程序。需要注意的是,必须以utf-8格式进行编码,否则微信收到的中文将会出现乱码, 并且保存的asp文档也要以utf-8格式进行保存。 完整代码如下: <% response.Charset="utf-8" '注意这句 set xml_dom=server.CreateObject("MSXML2.DOMDocument")'创建一个MSXML2.DOMDocument对象 xml_dom.load request '载入post过来的数据包,也可以是xml格式的文件 ToUserName=xml_dom.getElementsByTagName("ToUserName").item(0).text '用getElementByTagName方法得到标签ToUserName的值,下同 FromUserName=xml_dom.getElementsByTagName("FromUserName").item(0).text content=xml_dom.getElementsByTagName("Content").item(0).text arrcontent=split(content," ")'关键字用空格进行隔开 select case arrcontent(0) case "绑定账号" if ubound(arrcontent)=0 then strsend="绑定账号格式不正确,正确格式为:绑定账号 手机号码(中间用空格隔开)" else '处理绑定账号相关代码 end if end select strresponse="<xml>"&vbcrlf strresponse=strresponse&"<ToUserName><![CDATA["&fromusername&"]]></ToUserName>"&vbcrlf strresponse=strresponse&"<FromUserName><![CDATA["&tousername&"]]></FromUserName>"&vbcrlf strresponse=strresponse&"<CreateTime>"&now&"</CreateTime>"&vbcrlf strresponse=strresponse&"<MsgType><![CDATA[text]]></MsgType>"&vbcrlf strresponse=strresponse&"<Content><![CDATA["&strsend&"]]></Content>"&vbcrlf '反馈的消息 strresponse=strresponse&"</xml>" response.write strresponse %> |
阅读(7943) | 评论(0) |
|
相关文章 |
asp微信公众平台申请及开发设置 |
个人订阅号实现网页获取用户openid(asp版) |
评论 |
暂无评论! |
|
|
热门标签 |
asp(5049,3) webservice(4073,1) xml(3817,1) 微信公众平台(353,2) 关联度(,1) 订阅号(,1) 订阅号网页(,1) 网页获取openid(,1) 微信平台开发(,1) 学习笔记(,1) 迷宫求解(,1) 云技术(,1) javascript(,1) 相关性(,1) 相似文章(,1) 相关文章(,1) 智慧教室(,1) msxml2.XmlHttp(,1) ubuntu(,1) 乌班图(,1) 甲骨文云(,1) Nosupportedauthenticationmethodsavailable(,1) 批处理(,1) bat(,1) 订阅号获取openid(,1) 批量修改文件名(,1) publickey(,1) msxml3.dll(,1) 系统未找到制定资源(,1) 折叠菜单(,1) 收缩菜单(,1) .netframework(,1) urlencode(,1) ren(,1) |
|
|