
<%
'**********************************************
'注意事項
'ASP文件需要以UTF-8的格式保存,否則亂碼.
'作者 :565449214
'**********************************************
dim Signature '微信加密簽名
dim Timestamp '時間戳
dim Nonce '隨機數
dim Echostr '隨機字符串
dim Token '與微信后臺設置的token一致
dim encrypt_type '加密類型
dim msg_signature '簽名
Token="qwbmqwbm"'
Signature = request.QueryString("signature")
Nonce = request.QueryString("nonce")
Timestamp = request.QueryString("timestamp")
Echostr = request.QueryString("echostr")
encrypt_type = request.QueryString("encrypt_type")
msg_signature = request.QueryString("msg_signature")
'驗證微信接口
If EchoStr<>"" then
'下面進行Token,TimesTamp,Nonce三個參數的字典排序
dim str,i
dim Myarray:Myarray=Sort(Array(Token,TimesTamp,Nonce))
For i=0 To Ubound(Myarray)
str=str&Myarray(i)
Next
if Lcase(SignaTure)=Lcase(SHA1(str,"Hex")) then
Response.Write EchoStr '驗證成功,返回正確EchoStr給微信,接通接口API
Response.End()
end if
End if
'獲取微信主動發送過來的內容
Set xmldom = Server.CreateObject("MSXML2.DOMDocument")
xmldom.load request
xml = xmldom.documentElement.xml
'call CreateTextFile(request.QueryString&xml,"a.txt")
If encrypt_type = "aes" Then
res = ToAes(xml,0)
xmldom.loadxml res
End If
ToUserName=xmldom.getelementsbytagname("ToUserName").item(0).text '接收者微信賬號。即我們的公眾平臺賬號。
FromUserName=xmldom.getelementsbytagname("FromUserName").item(0).text '發送者微信賬號Openid
CreateTime=xmldom.getelementsbytagname("CreateTime").item(0).text
MsgType=xmldom.getelementsbytagname("MsgType").item(0).text
if (MsgType="event") then
strEventType=xmldom.getelementsbytagname("Event").item(0).text '微信事件
if strEventType="subscribe" then '表示訂閱微信公眾平臺
EventKey=xmldom.getelementsbytagname("EventKey").item(0).text
Content="感謝關注"
if EventKey<>"" then
EventKey=replace(EventKey,"qrscene_","")
Content = "你的上線ID:"&EventKey
Else
EventKey= 0
Content = "感謝關注"
end if
Call Login(EventKey,FromUserName)
Call Return_Text(Content)
ElseIf strEventType="unsubscribe" Then'取消關注
Content="取消關注"
Call Return_Text(Content)
ElseIf strEventType="CLICK" Then'點擊菜單獲取關鍵字,獲取
EventKey=xmldom.getelementsbytagname("EventKey").item(0).text
Content=EventKey
Call Return_Text(Content)
ElseIf strEventType="VIEW" Then'點擊菜單獲取關鍵字,跳轉到鏈接
EventKey=xmldom.getelementsbytagname("EventKey").item(0).text
Content=EventKey
Call Return_Text(Content)
ElseIf strEventType="SCAN" Then '掃描二維碼
EventKey=xmldom.getelementsbytagname("EventKey").item(0).text
Content= "歡迎再次光臨"
Call Return_Text(Content)
ElseIf strEventType="scancode_push" or strEventType="scancode_waitmsg" Then '點擊菜單,調用掃碼推事件的事件推送
EventKey=xmldom.getelementsbytagname("EventKey").item(0).text
ScanResult=xmldom.getelementsbytagname("ScanResult").item(0).text
Content=ScanResult
Call Return_Text(Content)
ElseIf strEventType="pic_sysphoto" or strEventType="pic_photo_or_album" or strEventType="pic_weixin" Then '點擊菜單,調用系統拍照發圖
EventKey=xmldom.getelementsbytagname("EventKey").item(0).text
Counts=xmldom.getelementsbytagname("Count").item(0).text
Content="拍照發圖,接收【"&Counts&"】張圖片"
Call Return_Text(Content)
ElseIf strEventType="location_select" Then '點擊菜單,調用位置發送
EventKey=xmldom.getelementsbytagname("EventKey").item(0).text
Location_X=xmldom.getelementsbytagname("Location_X").item(0).text
Location_Y=xmldom.getelementsbytagname("Location_Y").item(0).text
Scale=xmldom.getelementsbytagname("Scale").item(0).text
Label=xmldom.getelementsbytagname("Label").item(0).text
Content="發送位置"&EventKey
Call Return_Text(Content)
ElseIf strEventType="LOCATION" Then'獲取用戶地理位置,當用戶打開對話框時,自動獲取微信用戶的實時地址。本功能需要配合服務號的LEB接口。
Latitude=xmldom.getelementsbytagname("Latitude").item(0).text
Longitude=xmldom.getelementsbytagname("Longitude").item(0).text
Precision=xmldom.getelementsbytagname("Precision").item(0).text
'記錄用戶LEB信息
end if
else
MsgId=xmldom.getelementsbytagname("MsgId").item(0).text
End If
If MsgType="text" then'接收文本信息
Content=xmldom.getelementsbytagname("Content").item(0).text
Call Return_Text(Content)
elseif MsgType="image" then'接收圖片信息
MediaId=xmldom.getelementsbytagname("MediaId").item(0).text
PicUrl=xmldom.getelementsbytagname("PicUrl").item(0).text
Content=PicUrl
Call Return_Text(Content)
elseif MsgType="voice" then'"接收語音信息
MediaId=xmldom.getelementsbytagname("MediaId").item(0).text
Format=xmldom.getelementsbytagname("Format").item(0).text
Content=MediaId
Call Return_Text(Content)
elseif MsgType="video" then'接收視頻信息
MediaId=xmldom.getelementsbytagname("MediaId").item(0).text
ThumbMediaId=xmldom.getelementsbytagname("ThumbMediaId").item(0).text
Content=MediaId
Call Return_Text(Content)
elseif MsgType="location" then'接收位置信息
Location_X=xmldom.getelementsbytagname("Location_X").item(0).text
Location_Y=xmldom.getelementsbytagname("Location_Y").item(0).text
Scale=xmldom.getelementsbytagname("Scale").item(0).text
Label=xmldom.getelementsbytagname("Label").item(0).text
Content="地理位置"&Location_X&","&Location_Y&"你發的是地址信息:"&Label
Call Return_Text(Content)
elseif MsgType="link" then'接收鏈接信息
Title=xmldom.getelementsbytagname("Title").item(0).text
Descriptions=xmldom.getelementsbytagname("Description").item(0).text
Url=xmldom.getelementsbytagname("Url").item(0).text
Content=Url
Call Return_Text(Content)
end if
set xmldom=Nothing
'多圖文消息
Function Return_News(Articles)
ArticleCount = Ubound(Articles)+1
str = "<xml>"&_
"<ToUserName><![CDATA["&FromUserName&"]]></ToUserName>"&_
"<FromUserName><![CDATA["&ToUserName&"]]></FromUserName>"&_
"<CreateTime>"&DateDiff("s","1970-01-01 08:00:00",Now())&"</CreateTime>"&_
"<MsgType><![CDATA[news]]></MsgType>"&_
"<ArticleCount>"&ArticleCount&"</ArticleCount>"&_
"<Articles>"
For i = 0 To ArticleCount-1
str = str & "<item>"&_
"<Title><![CDATA["&Articles(i)(0)&"]]></Title>"&_
"<Description><![CDATA["&Articles(i)(1)&"]]></Description>"&_
"<PicUrl><![CDATA["&Articles(i)(2)&"]]></PicUrl>"&_
"<Url><![CDATA["&Articles(i)(3)&"]]></Url>"&_
"</item>"
Next
str = str & "</Articles>"&_
"</xml>"
Response.Write str
End Function
'文本消息
Function Return_Text(Content)
str = "<xml>"&_
"<ToUserName><![CDATA["&FromUserName&"]]></ToUserName>"&_
"<FromUserName><![CDATA["&ToUserName&"]]></FromUserName>"&_
"<CreateTime>"&DateDiff("s","1970-01-01 08:00:00",Now())&"</CreateTime>"&_
"<MsgType><![CDATA[text]]></MsgType>"&_
"<Content><![CDATA["&Content&"]]></Content>"&_
"</xml>"
Response.Write str
End Function
'字典排序
Function Sort(ary)
Dim KeepChecking,I,FirstValue,SecondValue
KeepChecking = TRUE
Do Until KeepChecking = FALSE
KeepChecking = FALSE
For I = 0 to UBound(ary)
If I = UBound(ary) Then Exit For
If ary(I) > ary(I+1) Then
FirstValue = ary(I)
SecondValue = ary(I+1)
ary(I) = SecondValue
ary(I+1) = FirstValue
KeepChecking = TRUE
End If
Next
Loop
Sort = ary
End Function
Function PostHTTPPage(url,data)
dim Http
set Http=server.createobject("MSXML2.SERVERXMLHTTP.3.0")
Http.open "POST",url,false
Http.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"
Http.send(data)
if Http.readystate<>4 then
exit function
End if
PostHTTPPage=Http.responseText
set http=nothing
if err.number<>0 then err.Clear
End Function
Function SHA1(ByVal Str,ByVal Types)
Dim TAsc,Enc,Bytes,objXML,objXMLNode,Outstr
'Borrow some objects from .NET (supported from 1.1 onwards)
Set TAsc = Server.CreateObject("System.Text.UTF8Encoding")
Set Enc = Server.CreateObject("System.Security.Cryptography.SHA1CryptoServiceProvider")
'Convert the string to a byte array and hash it
Bytes = TAsc.GetBytes_4(Str)
Bytes = Enc.ComputeHash_2((Bytes))
'Convert the byte array to a hex or bsae64 string
Outstr = ""
If Types = "Base64" Then
Set objXML = Server.CreateObject("Msxml2.DOMDocument")
Set objXMLNode = objXML.createElement("a")
objXMLNode.DataType = "bin.base64"
objXMLNode.NodeTypedValue = Bytes
Outstr = Replace(objXMLNode.Text,Chr(10),"")
Set objXML = Nothing
Set objXMLNode = Nothing
ElseIf Types = "Hex" Then
Set objXML = Server.CreateObject("Msxml2.DOMDocument")
Set objXMLNode = objXML.createElement("a")
objXMLNode.DataType = "bin.hex"
objXMLNode.NodeTypedValue = Bytes
Outstr = Replace(objXMLNode.Text,Chr(10),"")
Set objXML = Nothing
Set objXMLNode = Nothing
End If
SHA1 = Outstr
Set Enc = Nothing
Set TAsc = Nothing
End Function
Sub Login(genKey,openid)
Set Rs = Conn.ExeCute("Select * From [Wx_user] Where openid='"&openid&"'")
If Rs.Eof Then
UserInfo = Wx.Get_UserInfo(openid)
nickname = UserInfo(0)
sex = UserInfo(1)
icon = UserInfo(2)
province = UserInfo(4)
city = UserInfo(5)
Conn.ExeCute("Insert Into [Wx_user]([username],[password],headurl,sex,province,city,openid,genkey,pid) values('"&nickname&"','"&openid&"','"&icon&"',"&sex&",'"&province&"','"&city&"','"&openid&"','"&genkey&"',"&genkey&")")
End If
End Sub
%>
呢 稱: | |
表 情: | |
內 容: |
評論內容:不能超過 1000 字,需審核,請自覺遵守互聯網相關政策法規。 |
驗證碼: | |
您發布的評論即表示同意遵守以下條款:
一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會、集體和公民的合法權益;
二、不得發布國家法律、法規明令禁止的內容;互相尊重,對自己在本站的言論和行為負責;
三、本站對您所發布內容擁有處置權。