如何在.NET上处理二维码结果处理

&& 今天我们来共同学习一下微信公共服务平台中一个重要内容---二维码扫描。众所周知二维码目前应用范围很广,在这里不再叙述背景了,但是值得一提的是目前大家手机上面应用的二维码扫描工具是支持的都是QR码和PDF417码标准,这就是为什么你用各种扫码工具扫出来的都一样的原因,因为大家都使用了同样的标准。& & 在微信中的&扫一扫&功能也支持了这种标准,但是我们如果在微信公共服务平台中开发,使用的就不是这种标准了,而是微信自己的标准。也就是说如果你用通用软件生成的二维码&微信&,&我查查&等都可以扫描出来,但是你用微信公共服务平台中生成的二维码,就&只能用微信的扫一扫进行扫描&,别的软件扫描出来的结果均是微信自己加密的连接。这一点真的可以看出腾讯的野心了,不过话说回来了,你用人家的微信平台,肯定必须用人家的微信的扫一扫了。& & 只是有一点,如果我们把生成好的二维码贴出来,让用户扫的时候必须都要加上一句&请使用微信的扫一扫进行扫描&,也就是说用户要想扫你的二维码就必须用微信软件,自己就必须用微信号!好阴险啊!!& & 下面说一说我理解的微信二维码使用的过程,首先我们可以把自己想放在二维码里面的信息,使用自己的微信公共号生成这个二维码,通过web或者什么以图片的形式输出出来,然后我们对这这个二维码用微信的&扫一扫&扫描,如果你还未关注这个微信公共号,微信会提醒你关注,并反馈相应的信息,如果你关注了这个号,那么会自动反馈给你二维码里面的内容。& & 下面开始代码的内容:& & 首先我们参考微信的教程,使用自己的微信公共号生成一个二维码,并通过web显示出来。利用我们之前讲过的Access_Token创建一个含有自己信息的Ticket,自己的信息在这里叫做&scene_id&。微信平台使用了这样Json对象来描述Ticket:
临时二维码:{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}第一个参数代表有效时间,第二个参数就是临时二维码的标识,是一个常量,第三个参数就是我们要放进去的&scene_id&永久二维码:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}只是缺少了有效时间,其他不再解释了看看下面创建Ticket的代码,函数返回值是包含了我们自定义信息的Ticket:
/// &summary&
/// 创建二维码ticket
/// &/summary&
/// &returns&&/returns&
public static string CreateTicket(string TOKEN)
string result = "";
//string strJson = @"{""expire_seconds"":1800, ""action_name"": ""QR_SCENE"", ""action_info"": {""scene"": {""scene_id"":}}}";
string strJson = @"{""action_name"": ""QR_LIMIT_SCENE"", ""action_info"": {""scene"": {""scene_id"":}}}";
string wxurl = "https://api./cgi-bin/qrcode/create?access_token=" + TOKEN;
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultC
result = myWebClient.UploadString(wxurl, "POST", strJson);
//WriteLog("上传result:" + result);
Ticket _mode = JsonHelper.ParseFromJson&Ticket&(result);
//UploadMM _mode = JsonHelper.ParseFromJson&UploadMM&(result);
//result = _mode.
result = _mode.ticket + "_" + _mode.expire_
catch (Exception ex)
result = "Error:" + ex.M
//WriteLog("上传MediaId:" + result);
创建了Ticket以后,我们再根据这个Ticket创建一个图片,并保存在服务器上,函数返回的是图片在服务器上的路径(便于我们使用image控件显示出来):
public string GetTicketImage(string TICKET)
string content = string.E
string strpath = string.E
string savepath = string.E
string stUrl = "https://mp./cgi-bin/showqrcode?ticket=" + Server.UrlEncode(TICKET);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();
strpath = myResponse.ResponseUri.ToString();
WebClient mywebclient = new WebClient();
savepath = Server.MapPath("image") + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next().ToString().Substring(0, 4) + "." + myResponse.ContentType.Split('/')[1].ToString();
mywebclient.DownloadFile(strpath, savepath);
catch (Exception ex)
savepath = ex.ToString();
return strpath.ToString();
然后我们把这个图片显示出来就可以了:
protected void Page_Load(object sender, EventArgs e)
string _access_token = string.E
_access_token = IsExistAccess_Token();
string str = CreateTicket(_access_token);
Response.Write(str + "&br/&");
str = str.Split('_')[0].ToString();
str = GetTicketImage(str);
Image1.ImageUrl =
Response.Write(str);
上面用到了一个Ticket类,我把代码也粘贴出来:
/// &summary&///Ticket 的摘要说明/// &/summary&public class Ticket{
public Ticket()
//TODO: 在此处添加构造函数逻辑
string _expire_
/// &summary&
/// 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。
/// &/summary&
public string ticket
get { return _ }
set { _ticket = }
/// &summary&
/// 凭证有效时间,单位:秒
/// &/summary&
public string expire_seconds
get { return _expire_ }
set { _expire_seconds = }
第一部的工作我们做完了,按照微信自己的标准生成了一个包含我们自定义信息的二维码了,下面就是扫码过程了,这里您可以使用其他标准的扫码工具扫一下试试,我们包含的&scene_id&信息是扫不出来的,刚才说过了,这不是一个标准的二维码标准,是微信自己的!下面我们来写一下微信扫码的事件响应就OK了,这里有两个事件:第一是我们没有关注这个微信号时直接扫(扫完会提醒您关注),第二是我们已经关注后扫,我们把之前的代码加上这两个事件,不再解释了:
protected void Page_Load(object sender, EventArgs e)
{wxmessage wx = GetWxMessage();
string res = "";
if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "subscribe")
string content = "";
if (!wx.EventKey.Contains("qrscene_"))
content = "/:rose欢迎北京永杰友信科技有限公司/:rose\n直接回复&你好&";
res = sendTextMessage(wx, content);
content = "二维码参数:\n" + wx.EventKey.Replace("qrscene_", "");
res = sendTextMessage(wx, content);
else if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.ToLower() == "scan")
string str = "二维码参数:\n" + wx.EventK
res = sendTextMessage(wx, str);
else if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK")
if(wx.EventKey=="HELLO")
res = sendTextMessage(wx, "你好,欢迎使用北京永杰友信科技有限公司公共微信平台!");
if (wx.MsgType == "text" && wx.Content == "你好")
res = sendTextMessage(wx, "你好,欢迎使用北京永杰友信科技有限公司公共微信平台!");
else if (wx.MsgType == "voice")
res = sendTextMessage(wx, wx.Recognition);
res = sendTextMessage(wx, "你好,未能识别消息!");
Response.Write(res);
&OK,这样我们就完成了上面所设想的功能,扫码后先判断了是否关注,没有关注的提示关注,然后反馈我们自定义的参数&scene_id&,如果关注了同样直接反馈&scene_id&信息。& & 这种应用很广的,我现在能想象到的有以下几个场景:1、餐馆/商店& & 我们把每道菜都用一个二维码进行标注,客人在点餐的时候使用微信的扫一扫功能进行点餐,第一次扫就提示客人请关注我们餐馆的微信号,并点了第一个菜,然后第二道。。这样我们就能很轻松的做到两件事情,第一,他关注了我们的微信号(为了留住回头客),第二,我们知道他喜欢吃什么口味,如喜欢川菜还是粤菜(为了给回头客更好的推荐)2、调查表& & 虽然大家都关注的是同一个微信号,但是不同的二维码有不同的意义,大家在扫码的过程中会有不同的需求,比如说我们准备3个二维码分别对应不同的表格给老中青三种客户,用户在扫码的同时就可以进入表格进行填写,如果在二维码中加入调查员的信息,我们还能对调查员进行绩效考核。3、产品溯源& & 同样的道理,没种产品或者不同的批次不同的地区都可以用不同的二维码进行编码,返回不同的信息,同时用户在扫码的同时又关注了我们的微信号。4、扫码支付& & 利用临时的二维码,每一笔交易,不同的帐户,不同的金额,生成不同的码,用户拍完以后进入不同的&微支付&。
& & 用途很多很多,不过还是那个前提-----&只能用微信扫!&& & 先就说这么多吧,等我把这些最基础的技术开发写完,我们在来共同探讨和开发几个成品案例。
阅读(...) 评论()所有回答(1)
长方形的那个叫iQR Code,不兼容二维码的。
也就是说你用市场上读二维码的设备是读不了那个码的。
园豆:23105
园豆:23105
&&&您需要以后才能回答,未注册用户请先。如何在.NET上处理二维码_百度知道
如何在.NET上处理二维码
提问者采纳
反正我现在是玩不动)当扫码枪与您电脑通过USB线,那需要硬件驱动才可以,可以参考开源组件QrCode.Net(),比如(扫描枪),换个牌子吧,或者无线连接后,驱动都会自动帮您安装的,然后用扫码枪扫描一个二维码图片、打开记事本(或任意可以输入的文本框之类的),并让它获得输入焦点,你就可以看到二维码的信息了如果您是自己需要在,比如生成之类的操作.NET中处理二维码
安卓教程|PHP教程|HTML5教程
主营:程序员培训专注php、Android、UI设计、云计算、iOS、HTML5培训
其他类似问题
为您推荐:
其他1条回答
可以参考很多开源插件。如果是数据对接的话,上开源中国搜就有了若是要生成的话
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁草料二维码生成器
二维码美化
1280元/年hot
2680元起/年
<div class="richtext_main" id="richtext_main" qrtype="1" data-toggle="tooltip" data-html="true" data-placement="top" data-original-title="切换到带格式文本">
内容过多,生成的二维码不易扫描,请使用
<span class="alert-link pointer link" tabindex="0" data-toggle="popover" data-placement="bottom" data-trigger="hover" data-html="true" data-content="活码可以简化二维码图案,并将内容保存到云端,是一种可以修改内容的二维码">活码
左侧输入内容点击生成二维码
左侧输入内容点击生成活码
提示:前景色要比背景色深!
为什么需要登录
保证活码的归属
内容云端存储,可随时更改
分类管理二维码
用户扫码数据统计分析
永久免费的二维码管理工具
活码管理系统
专为二维码应用而设计
让线下物品变成互联网入口
营销、部署效率提高60%以上
实现用户行为分析和营销效果追踪
建筑机械巡检记录解决方案
拍照、录音上传
二维码签到加GPS地图定位
不同身份扫描展示不同内容
其它解决方案
各行业二维码应用最佳实践
超过 2,000,000 用户正在使用草料二维码
详细产品信息,请咨询我们的售前工程师
热线电话:400-002-0232
邮箱地址:其他回答(2)
收获园豆:10
园豆:36347
图片扫描不出来的,不过你可以把头像直接放在二维码中间那个方块里,不是很多网站都把LOGO放二维码中间嘛``周围的二维码就放数据.
收获园豆:10
园豆:14096
&&&您需要以后才能回答,未注册用户请先。

我要回帖

更多关于 二维码结果处理 的文章

 

随机推荐