使用场景:扫描生成的小程序码,打开小程序并调整到指定页面并携带参数,比如购买商品详情页面。
使用方法:通过调用微信小程序二维码接口生成。
接口文档:https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html
从文档可知,获取小程序二维码方法有三,下面我们以方法B为例,方法B适用于需要的码数量极多的业务场景。
生成器界面如图:
核心代码:
/// <summary>/// 通过POST获取小程序码/// </summary>/// <param name="access_token"></param>/// <param name="scene">携带的参数</param>/// <param name="page">跳转的页面</param>private void GetQRCode(string access_token, string scene, string page){string formUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token;string formData = "{\"scene\":\"" + scene + "\",\"page\":\"" + page + "\"}";//注意提交的编码 这边是需要改变的 这边默认的是Default:系统当前编码byte[] postData = System.Text.Encoding.UTF8.GetBytes(formData);// 设置提交的相关参数 System.Net.HttpWebRequest request = System.Net.WebRequest.Create(formUrl) as System.Net.HttpWebRequest;System.Text.Encoding myEncoding = System.Text.Encoding.UTF8;request.Method = "POST";request.KeepAlive = false;request.AllowAutoRedirect = true;request.ContentType = "application/x-www-form-urlencoded";request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";request.ContentLength = postData.Length;// 提交请求数据 System.IO.Stream outputStream = request.GetRequestStream();outputStream.Write(postData, 0, postData.Length);outputStream.Close();System.Net.HttpWebResponse response;System.IO.Stream responseStream;response = request.GetResponse() as System.Net.HttpWebResponse;responseStream = response.GetResponseStream();BuildQRCode(responseStream);}
显示/保存图片代码:
/// <summary>/// 创建图片/// </summary>/// <param name="stream"></param>private void BuildQRCode(System.IO.Stream stream){System.IO.MemoryStream outstream = new System.IO.MemoryStream();const int bufferLen = 1024;byte[] buffer = new byte[bufferLen];int count = 0;while ((count = stream.Read(buffer, 0, bufferLen)) > 0){outstream.Write(buffer, 0, count);}保存到本地磁盘//System.Drawing.Image img = System.Drawing.Image.FromStream(outstream);//img.Save(@"C:\2019\05\wx001.jpg");//直接输出图片Response.ClearContent();Response.ContentType = "image/Png";Response.BinaryWrite(outstream.ToArray());}
附件:演示源码下载