C# 扫码跳转小程序携带参数。C#代码

 代码直接复制就可以用。 欢迎加入QQ交流技术群:601122412

官方文档:https://www.w3cschool.cn/weixinapp/weixinapp-api-qrcode.html

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html

/// <summary>
        /// 拉取AccessToken,微信每天公共2000次AccessToken的获取,所以需要缓存AccessToken
        /// </summary>
        /// <returns>用户凭证:AccessToken</returns>
        public static string getTokenSession(string appid, string appsecret)
        {
            string TokenSession;
            if (System.Web.HttpContext.Current.Session["AccessToken"] != null)
            {
                TokenSession = System.Web.HttpContext.Current.Session["AccessToken"].ToString();
            }
            else
            {
                TokenSession = addTokenSession(appid, appsecret);
            }
            return TokenSession;
        }

        /// <summary>
        /// 将AccessToken添加到缓存
        /// </summary>
        /// <returns>AccessToken</returns>
        public static string addTokenSession(string appid, string appsecret)
        {
            //获取AccessToken
            string AccessToken = GetAccessToken(appid, appsecret);
            HttpContext.Current.Session["AccessToken"] = AccessToken;
            HttpContext.Current.Session.Timeout = 7200;
            return AccessToken;
        }

        /// <summary>
        /// 获取AccessToken
        /// </summary>
        /// <returns>AccessToken</returns>
        public static string GetAccessToken(string appid, string appsecret)
        {
            string accessToken = "";
            string respText = "";
            string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, appsecret);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            using (Stream resStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(resStream, Encoding.Default);
                respText = reader.ReadToEnd();
                resStream.Close();
            }
            IDictionary<string, object> respDic = respText.JsonToDictionary();
            accessToken = respDic["access_token"].ToString();
            return accessToken;
        }
        /// <summary>
        /// 调用微信接口获取带参数永久二维码
        /// 使用方法:https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token
        /// </summary>
        /// <param name="scene_str">二维码带的参数</param>
        public static string GetQrcode(string appid, string appsecret, string scene_str)
        {
            string result = "";
            string err = "";
            string QrcodeUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={0}";//WxQrcodeAPI接口              
            string AccessToken = getTokenSession(appid, appsecret);//拉取AccessToken
            QrcodeUrl = string.Format(QrcodeUrl, AccessToken);
            //string PostJson = "{\"scene\":{\"snno\": " + scene_str + "}}";
            string PostJson = "{\"scene\": " + scene_str + "}";
            result = Common.HttppHelper.GetJsonDataByPost(PostJson, QrcodeUrl, ref err);   请求微信,
            result = "data:image/jpeg;base64," + result;//返回的base64。转成img格式直接放到前端img标签里面。下面配图。
            return result;
        }

///请求微信接口

 public static string GetJsonDataByPost(string paramStr, string url,ref string err)
        {
            string result = "";
            using (WebClient wc = new WebClient())
            {               
                try
                {
                    Encoding en = Encoding.UTF8;
                    wc.Headers.Add("Content-Type", "application/json");
                    if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                    {
                        ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                    }
                    byte[] postData = en.GetBytes(paramStr);
                    byte[] data = wc.UploadData(url, "POST", postData); // 得到返回字符流
                    result = Convert.ToBase64String(data);//调用微信返回二进制。转成base64。
                }
                catch (Exception ex)
                {
                    err = ex.Message;
                }
            }
            return result;
        }

猜你喜欢

转载自blog.csdn.net/qq_39360549/article/details/84855858
C#