使用c#生成小程序二维码,扫描二维码可携带指定的参数跳转指定的页面

it2023-01-25  57

通过c#获取小程序码,适用于需要的码数量极多的业务场景

前言:小程序升级迭代的速度越来越快,复杂的业务场景也紧随跟来,这篇文章主要讲讲如何用c#生成小程序二维码,让我们通过扫描二维码的方式能够访问到我们自己制定的页面。

一、生成小程序二维码的方式。 (1)微信公众平台登录小程序账号后,网页顶部选择工具,可以选择生成小程序二维码。 但是在这里生成的小程序二维码有一些限制,他只能跳转到小程序的首页,他的作用是运用于市场运营以及宣传等。

(2)使用官方定义的API生成。 我们首先看一下他需要的参数以及生成的方式, 很明显的看到可以自定义参数携带以及可指定小程序跳转的页面,但有一些地方要注意,参数的长度不能够超过32位,如果使用GUID作为参数的话是需要把中间的横杠符号去掉的;小程序跳转的页面是需要已经发布了的页面的!!这点尤其要注意,已经发布了的页面就是你用你的微信能够访问到,而不是还在你的开发者工具中,只能通过开发模式访问的页面,注意要躲避这些坑。

二、自定义小程序二维码的部分场景。 通过自定义小程序二维码能够应用的场景有很多,主要是要满足我们的业务逻辑,可以简单举几个例子。 (1)电商小程序可生成商品详情二维码,将商品唯一标识作为参数传递,用户扫描二维码可直接进入商品详情页。 (2)上下级分销小程序可生成带有用户标识的二维码,用户扫描二维码可直接绑定上下级关系。 场景有很多,就不一一举例了,下面我们上代码。

一、获取accessToken 定义一个方法,请求官方api文档,获取token,参数是小程序的appid跟secret,可以在微信公众平台上直接复制下来 /// <summary> /// 获取accessToken /// </summary> /// <param name="appid"></param> /// <param name="secret"></param> /// <returns></returns> public static string GetAccessToken(string appid,string secret) { string token = HttpHelper.HttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret); Newtonsoft.Json.Linq.JObject _jObject = Newtonsoft.Json.Linq.JObject.Parse(token); var _value = _jObject["access_token"].ToString(); //取值 return _value; } 这个是上面定义的HttpGet 的方法,已经封装好了的,如果自己有定义好了的,就不用复制过去 /// <summary> /// HTTP GET方式请求数据. /// </summary> /// <param name="url">URL.</param> /// <returns></returns> public static string HttpGet(string url) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = "GET"; //request.ContentType = "application/x-www-form-urlencoded"; request.Accept = "*/*"; request.Timeout = 15000; request.AllowAutoRedirect = false; WebResponse response = null; string responseStr = null; try { response = request.GetResponse(); if (response != null) { StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); responseStr = reader.ReadToEnd(); reader.Close(); } } catch (Exception) { throw; } finally { request = null; response = null; } return responseStr; } 上面的是获取token的方法,下面的是生成小程序二维码的方法 /// <summary> /// 生成小程序二维码 /// </summary> /// <param name="path">生成的小程序二维码存放的路径</param> /// <param name="scene">参数 最多32</param> /// <param name="page">小程序页面路径 必须是已经发布了的</param> /// <param name="width">二维码大小</param> /// <param name="appid">小程序appid</param> /// <param name="secret">小程序密钥</param> /// <returns></returns> public static bool CreateXcxQrCode(string path,string scene,string page,string width,string appid,string secret) { try { string token = GetAccessToken(appid, secret); string _url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + token; string strURL = _url; System.Net.HttpWebRequest request; request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strURL); request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; string options = "{\"scene\":\"" + scene + "\",\"page\":\"" + page + "\",\"width\":\"" + width + "\"}"; byte[] payload; payload = System.Text.Encoding.UTF8.GetBytes(options); request.ContentLength = payload.Length; System.IO.Stream writer = request.GetRequestStream(); writer.Write(payload, 0, payload.Length); writer.Close(); System.Net.HttpWebResponse response; response = (System.Net.HttpWebResponse)request.GetResponse(); System.IO.Stream s; s = response.GetResponseStream(); byte[] val = StreamToBytes(s); System.IO.File.WriteAllBytes(path, val); s.Dispose(); writer.Dispose(); } catch(Exception e) { log4net.LogManager.GetLogger("生成小程序二维码异常").Info(e); return false; } return true; } public static byte[] StreamToBytes(System.IO.Stream stream) { List<byte> bytes = new List<byte>(); int temp = stream.ReadByte(); while (temp != -1) { bytes.Add((byte)temp); temp = stream.ReadByte(); } return bytes.ToArray(); } 中间如果报错的话,是没有添加引用,鼠标悬浮在报错的代码上,右击选择添加引用即可。

好了,定义完了的话就可以在自己的场景调用它了,希望能在你有类似的需求或者疑问时,能够对你提供一丝帮助。

最新回复(0)