ASP微信公众平台接口开发方法及应用
微信最近开放第三方API接口,从微信公众平台开通自定义回复后,就一直在关注微信接口这一块,但是官方只有PHP的实例代码,而且非常简单,看了好久才看明白。
其实就是生成XML信息给微信平台,微信平台自定义信息需要什么,就从数据库调用什么信息,或者自定义静态信息,下面是ASP使用公众平台的方法:
首先我们进入第三方接口的页面进行注册,地址:http://mp.weixin.qq.com/cgi-bin/callbackprofile?t=wxm-callbackapi&type=info&lang=zh_CN
URL为你以后的微信自定义回复生成的地址。Token你可以随便输,主要是用来校验当前的信息是否为微信提交过来的信息。
如果你的微信接口页面没有做好,提交保存的时候,会提示:验证Token失败。
这个错误是因为,你的接口页面还没有反馈正确的信息给微信接口。微信在教程方面还做得不够成熟,就一个PHP示例,还是有问题的。
在下篇文章我会讲到这个错误在哪。微信官方也没有跟大家说清楚怎么才能是token验证成功。下面我将给出示例告诉大家如何通过token验证。
譬如:接口页面是default.asp,我们只需要把default.asp的代码改为:
1 2 3 | < % response.write request("echostr") %> |
然后再在官方提交下保存,提示“验证token成功”。到此为止,第一步我们完成了接口的申请。
上面给大家讲了如何申请微信公众平台自定义接口,这篇文章讲通过实例,为大家讲述如何实现Hello World的一个简单的自定义回复。
微信官方不提供ASP代码实例。微信官方提供的PHP代码示例:
1 2 | $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); |
通过该代码可以获知微信平台提交过来的信息是一个XML对象。对应的ASP代码的实现是:
1 2 3 | set xml_dom = Server.CreateObject("MSXML2.DOMDocument") xml_dom.load request FromUserName=xml_dom.getelementsbytagname("FromUserName").item(0).text |
该代码可以获取到提交过来的用户。其他的接收者,微信内容都可以该方法获取到。
这里交大家一个调试技巧,因为微信接口代码不好调试,我们可以通过写文件的方式,把我们代码获取到的内容写入一个文件,以调试代码是否正确。代码如下:
1 2 3 4 5 6 | filepath=server.mappath(".")&"\wx.txt" Set fso = Server.CreateObject("scripting.FileSystemObject") set fopen=fso.OpenTextFile(filepath, 8 ,true) fopen.writeline(FromUserName) set fso=nothing set fopen=Nothing |
最后我们重新组合,并生成对应的XML字符串,反馈给微信公众平台,用户就能接受到自定义回复内容了。相关代码如下:
1 2 3 4 5 6 7 8 9 | strresponse="<xml>" strresponse=strresponse&"<tousername>< ![CDATA["&fromusername&"]]></tousername>" strresponse=strresponse&"<fromusername>< ![CDATA["&tousername&"]]></fromusername>" strresponse=strresponse&"<createtime>"&now&"</createtime>" strresponse=strresponse&"<msgtype>< ![CDATA[text]]></msgtype>" strresponse=strresponse&"<content>< ![CDATA[Hello World]]></content>" strresponse=strresponse&"<funcflag>0</funcflag><funcflag>" strresponse=strresponse&"</funcflag></xml>" response.write strresponse |
另外请大家注意,ASP文件需要以UTF-8的格式保存,包括页面编码也要用UTF-8的格式,否则有可能自定义回复出现乱码。
至此,我们就完成了ASP微信公众平台自定义接口的一个简单的自定义回复。下面是应用实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | < %@Language="VBScript" CodePage="65001"%> < % '**************注意,以下两行代码是为了通过微信接口验证的。 验证前,请把注释,两个单引号去掉。验证通过后,把两行代码删除或者注释掉。 ************** 'response.write request("echostr") 'response.end '**********注意结束************* %> < % set xml_dom = Server.CreateObject("MSXML2.DOMDocument") xml_dom.load request 'strxml=xml_dom.xml '发送者微信账号 FromUserName=xml_dom.getelementsbytagname("FromUserName").item(0).text '接收者微信账号。即我们的公众平台账号。 ToUserName=xml_dom.getelementsbytagname("ToUserName").item(0).text '微信内容 content=xml_dom.getelementsbytagname("Content").item(0).text '微信事件 strEventType=xml_dom.getelementsbytagname("Event").item(0).text '**************以下代码为我们组织一个XML输出,反馈给微信借口 strsend="Hello World" if strEventType="subscribe" then '表示订阅微信公众平台 strsend="Welcome" '定义发送内容。 end if strresponse="<xml>" 'tousername是指接受的微信账号。即前面我们获取到的发送者账号 strresponse=strresponse&"<tousername>< ![CDATA["&fromusername&"]]></tousername>" 'FromUserName是发送者账号,即我们的工种平台账号。 strresponse=strresponse&"<fromusername>< ![CDATA["&tousername&"]]></fromusername>" '时间。 strresponse=strresponse&"<createtime>"&now&"</createtime>" '发送类型。text是文本型。具体可以参考微信帮助手册 strresponse=strresponse&"<msgtype>< ![CDATA[text]]></msgtype>" '发送内 strresponse=strresponse&"<content>< ![CDATA["&strsend&"]]></content>" 容 strresponse=strresponse&"<funcflag>0</funcflag><funcflag>" strresponse=strresponse&"" response.write strresponse '*************输出结束******************* '*************注意,以下代码只是为了调试作用的,可以删除********************* filepath=server.mappath(".")&"\wx.txt" Set fso = Server.CreateObject("Scripting.FileSystemObject") set fopen=fso.OpenTextFile(filepath, 8 ,true) fopen.writeline(strresponse) set fso=nothing set fopen=Nothing '****************注意结束************************ %> </funcflag> |
主体就是strsend,我们要做的事情就是通过content信息来返回strsend信息,这里就不用我来教了吧。
ASP正则表达式的使用方法及应用 没有人能给你无时不刻的安全感
微信EncodingAESKey的加密解密
官方只给了PHP等语言的例子
那ASP的咋写?
可以直接写出类似的函数。
刚好需要,谢谢了。
还有好多功能可以实现的。
真心不错。~