想实现微信公众号的jssdk功能,如果你的代码是asp写的,那么有福音了,用下面的代码就行了:
<!--#include file="php_MD5.asp" --> <!--#include file="JSON.asp" --> <% Set Rs = SqlHelper("Select * From [sys_config] Where ID=1","") If Not Rs.Eof Then AppId = Rs("AppID") AppSecret = Rs("appsecret") If Rs("access_token")<>"" And DateDiff("s",Now,Rs("access_token_expires"))>0 Then Session("Token") = Rs("access_token") Session("Ticket") = Rs("ticket") Else Call Get_Token() Call Get_Ticket() End If End If Private Function RequestUrl(url) Set XmlObj = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0") XmlObj.open "GET",url, false XmlObj.send If XmlObj.Readystate=4 Then RequestUrl = XmlObj.responseText Else Response.Write("xmlhttp请求超时!") Response.End() End If Set XmlObj = nothing End Function Public Function MakeRandNum() Randomize Dim width : width = 6 ‘随机数长度,默认6位 width = 10 ^ (width - 1) MakeRandNum = Int((width*10 - width) * Rnd() + width) End Function Public Function MakeRandStr(intLength) Dim strSeed, seedLength, pos, Str, i strSeed = "abcdefghijklmnopqrstuvwxyz123456789" seedLength = Len(strSeed) Str = "" Randomize For i = 1 To intLength Str = Str + Mid(strSeed, Int(seedLength * Rnd) + 1, 1) Next MakeRandStr = Str End Function Public Function GetDateTime() Dim sTime,sResult sTime=now() sResult = year(sTime)&right("0" & month(sTime),2)&right("0" & day(sTime),2)&right("0" & hour(sTime),2)&right("0" & minute(sTime),2)&right("0" & second(sTime),2) GetDateTime = sResult End Function Public Function Get_Token() Dim url, params,Temp Url="https://api.weixin.qq.com/cgi-bin/token?" params = "grant_type=client_credential" params = params & "&appid="&AppId params = params & "&secret="&AppSecret url = Url & params Temp=RequestUrl(url) If CheckData(Temp,"access_token") = True Then set obj = getjson(Temp) if isobject(obj) Then Session("Token") = obj.access_token Call SqlHelper("Update [sys_config] set access_token=?,access_token_expires=? Where ID=1",Array(obj.access_token,DateAdd("s",obj.expires_in,Now))) End If set obj = Nothing Else Response.Write("获取 Token 时发生错误,错误信息:"&Temp) Response.End() End If End Function Public Function Get_Ticket() Dim url, params,Temp Url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?" params = "access_token="&Session("Token") params = params & "&type=jsapi" url = Url & params Temp=RequestUrl(url) If CheckData(Temp,"ticket") = True Then set obj = getjson(Temp) if isobject(obj) Then Session("Ticket") = obj.ticket Call SqlHelper("Update [sys_config] set ticket=? Where ID=1",Array(obj.ticket)) End If set obj = Nothing Else Response.Write("获取 Ticket 时发生错误,错误信息:"&Temp) Response.End() End If End Function Function Get_Sign() Dim Str,url url = "http://"&request.ServerVariables("HTTP_HOST")&request.ServerVariables("URL") If Trim(Request.QueryString)<>"" Then url = url&"?"&Trim(Request.QueryString) End If Str = "jsapi_ticket="&Session("Ticket")&"&noncestr="&nonceStr&"×tamp="×tamp&"&url="&url Get_Sign = SHA1(Str) End Function Function CheckData(data,str) If Instr(data,str)>0 Then CheckData = True Else CheckData = False End If End Function ‘保存图片 Function SaveRemoteFile(LocalFileName,RemoteFileUrl) SaveRemoteFile=True dim Ads,Http,GetRemoteData Set Http = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0") With Http .Open "Get", RemoteFileUrl, False, "", "" .Send If .Readystate<>4 then SaveRemoteFile=False Exit Function End If GetRemoteData = .ResponseBody End With Set Http = Nothing Set Ads = Server.CreateObject("Adodb.Stream") With Ads .Type = 1 .Open .Write GetRemoteData .SaveToFile server.MapPath(LocalFileName),2 .Cancel() .Close() End With Set Ads=nothing End Function %>