微信公众号生成带参数的二维码asp源码下载
晚上闲着没事,一个朋友联系,让帮忙写一个微信公众号利用asp生成带参数的二维码,别人扫了后如果已经关注过该公众号的,则直接进入公众号里,如果没关注则提示关注,关注后自动把该微信用户资料获取到并且保存入库,然后回复他的上级是谁,我觉得有可能对别人有用,就发到这了,闲话不说,上代码,对了,生成的二维码可以是临时二维也可以是永久的二维码:
- <%
- '**********************************************
- '注意事项
- 'ASP文件需要以UTF-8的格式保存,否则乱码.
- '作者wx :18611436777
- '**********************************************
- dim Signature '微信加密签名
- dim Timestamp '时间戳
- dim Nonce '随机数
- dim Echostr '随机字符串
- dim Token '与微信后台设置的token一致
- dim encrypt_type '加密类型
- dim msg_signature '签名
- Token="7Gk0Ry2Wn"'
- 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
- %>
微信公众号生成带参数的二维码asp源码下载的更多相关文章
- Force.com微信开发系列(八)生成带参数的二维码
为了满足用户渠道推广分析的需要,公众平台提供了生成带二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送.目前有两种类型的二维码,分别是临时二维码和永久二维码 ...
- 微信开发之——Php批量生成带参数的二维码
带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧. 具体接口说明请参见,微信公众平 ...
- C#微信公众号接口开发实例-高级接口-申请带参数的二维码
最近公司涉及到微信绑定用户,做了高级接口-申请带参数的二维码,总结了下微信开发接口.微信接口开发都是除了消息用的xml 回复基本上都是用json的形式传递信息(post/get),开发的方法基本都是一 ...
- weixin-java-mp集成微信公众号自带客服功能
电脑端登录公众号管理后台,[添加功能插件]开通客服功能,输入"人工客服"接入客服热线 底部有我的微信二维码,如有问题,可加好友进行技术交流! weixi ...
- PHP生成带logo图像二维码的两种方法
本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用 ...
- C#生成带logo的二维码
带logo的二维码生成分为两步骤:首先根据输入的内容生成二维码图片,然后读取本地的logo图片,通过图片处理生成带logo的二维码. 生成的二维码效果如下: 下面直接贴出二维码生成类 QRCode ...
- C#微信公众号开发系列教程六(被动回复与上传下载多媒体文件)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- phpqrcode生成带logo的二维码图片及带文字的二维码图片
<?php require_once "./phpqrcode/phpqrcode.php"; /** * 这样就可以生成二维码了,实际上在png这个方法里还有几个参数需要使 ...
- js生成带参的二维码
最近项目中有需求生成带参的二维码,考虑过用JAVA后台生成返回前端展示,后面了解到用jquery的qrcode.js插件可以很好现实 引入js: require.config({ baseUrl : ...
随机推荐
- 2018上C语言程序设计(高级)作业- 第3次作业成绩
作业地址 https://edu.cnblogs.com/campus/hljkj/CS2017-01/homework/1779 评分准则 第一次作业各项成绩包括三项: 完成PTA所有题目:13分 ...
- Elasticsearch CURL命令
1.查看集群状态 curl '10.18.37.223:9200/_cat/health?v'绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用 2. ...
- Ubuntu下部分Java软件字体渲染问题解决方法
On ubuntu or in general Linux OS, fonts in some Java software(like Geogebra, Arduino) looks terriabl ...
- Java中switch对整型/字符型/字符串型具体实现细节
转自:http://www.hollischuang.com/archives/61 Java7中switch中支持的数据类型有: byte short int char String类型 其实swi ...
- 计算机原码、补码、反码与java移位运算符(<</>>/>>>)
一.机器值和真值 1.机器值 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机 ...
- 返回上一页面带数据 getCurrentPages 使用
https://blog.csdn.net/She_lock/article/details/81099449
- 蓝桥杯——X星球居民问题
[问题描述] X星球居民小区的楼房全是一样的,并且按矩阵样式排列.其楼房的编号为1,2,3... 当排满一行时,从下一行相邻的楼往反方向排号. 比如:当小区排号宽度为6时,开始情形如下: 1 2 ...
- Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么(转)
Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么?修改 建站有很多技术,如 HTML.HTML5.X ...
- Elasticsearch2.3.4使用手册(使用存储过程做增量同步的探索)
一.工具安装 访问官网https://www.elastic.co/downloads/elasticsearch和http://xbib.org/repository/org/xbib/elasti ...
- 解决OSError: cannot identify image file <_io.BytesIO object at 0x000001ABB1D9DE60>
解决方法: 不支持.jpg文件,用opencv将文件转为png格式即可.