接收二维码扫描事件
用户扫描带场景ID的二维码,会向Foxtable端的HTTP服务推送事件,事件推送分两种情况:
接收处理二维码扫描事件,可以参考以下HttpRequest事件代码:
Select
Case e.path
Case "wefox"
If e.Request.HttpMethod.ToUpper
= "GET"
If
Functions.Execute("VerifySignature",e)
Then
e.WriteString(e.GetValues("echostr"))
End
If
ElseIf e.Request.HttpMethod.ToUpper
= "Post"
Dim
xo As
Foxtable.XObject =
Foxtable.XObject.Parse(e.PlainText)
Dim st
As New
Date(1970,1,1,8,0,0)
Select
Case xo("MsgType")
Case
"text","image"
'保存和回复文本和图片消息的代码
Case
"event"
Select
Case xo("Event")
Case
"subscribe"
'关注事件
'处理用户关注事件的代码
Dim
eKey As
String = xo("EventKey")
If
eKey IsNot
Nothing AndAlso
eKey.StartsWith("qrscene_")Then
'判断是否是通过扫描二维码关注
Dim
openid As
String = xo("FromUserName")
'获取用户OpenID
Dim
ticket As
String = xo("Ticket")
'获取二维码的ticket
Dim
sceneid As
String = eKey.SubString(8)
'获取二维码的情景ID,排除前缀qrscene_
'被动回复消息
Dim
so As
New
Foxtable.XObject()
so("ToUserName")
= xo("FromUserName")
so("FromUserName")
= xo("ToUserName")
so("CreateTime")
= (Date.Now
- st).TotalSeconds()
so("MsgType")
= "text"
so("Content")
= "您好,谢谢关注,您扫描的二维码的情景ID为"
& sceneid
e.WriteString(so.ToXML)
End
If
Case
"unsubscribe"
'取消关注事件
'处理用户取消关注事件的代码'
Case
"LOCATION"
'上报地理位置事件
'处理用户上报地理位置的代码
Case
"TEMPLATESENDJOBFINISH"
'处理模板消息发送事件的代码
Case
"SCAN"
Dim
openid As
String = xo("FromUserName")
'获取用户OpenID
Dim
ticket As
String = xo("Ticket")
'获取二维码的ticket
Dim
sceneid As
String = xo("EventKey")
'获取二维码的情景ID
'被动回复消息
Dim
so As
New
Foxtable.XObject()
so("ToUserName")
= xo("FromUserName")
so("FromUserName")
= xo("ToUserName")
so("CreateTime")
= (Date.Now
- st).TotalSeconds()
so("MsgType")
= "text"
so("Content")
= "您好,您扫描的二维码的情景ID为"
& sceneid
e.WriteString(so.ToXML)
End
Select
End
Select
End
If
End
Select
为避免代码冗余,也为了精简HttpRequest事件代码,建议将相关代码做成自定义函数。