隐藏

C#创建微信小程序二维码

发布:2022/3/26 17:02:03作者:管理员 来源:本站 浏览次数:1141

public static void CreateQRCode()
        {
            string token = GetAccessToken();
            CreatewxaQRCodeModel qrcodeModel = new CreatewxaQRCodeModel
            {
                path = "pages/home-page/main?scene=29f60878c7dc5061"
            };
            //微信请求小程序码的url
            string url = "http://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + token;
            string json = JsonConvert.SerializeObject(qrcodeModel);
            DownFile(url, "C:\\1.png", json);
        }
        private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
        {
            //为了通过证书验证,总是返回true
            return true;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="url">地址</param>
        /// <returns></returns>
        public static string Get(string url)
        {
            string data = string.Empty;
            using (var client = new HttpClient())
            {
                HttpRequestMessage msg = new HttpRequestMessage(HttpMethod.Get, url);

                ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
                var result = client.SendAsync(msg).Result;

                var content = result.Content.ReadAsStringAsync();
                data = content.Result;
            }
            return data;
        }
        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="localFileName">保存地址</param>
        /// <param name="json">参数</param>
        /// <returns></returns>
        public static void DownFile(string url, string localFileName, string json)
        {
            ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
            // 发起请求并异步等待结果
            using (var httpClient = new HttpClient())
            {
                HttpRequestMessage msg = new HttpRequestMessage(HttpMethod.Post, url);
                msg.Content = new StringContent(json, Encoding.GetEncoding("UTF-8"), "application/json");


                ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
                var responseMessage = httpClient.SendAsync(msg).Result;
                if (responseMessage.IsSuccessStatusCode)
                {
                    using (var fs = File.Create(localFileName))
                    {
                        // 获取结果,并转成 stream 保存到本地。
                        var streamFromService = responseMessage.Content.ReadAsStreamAsync().Result;
                        streamFromService.CopyTo(fs);
                    }
                }
            }
        }

        /// <summary>
        /// 获取access_token        
        /// </summary>        
        /// <returns></returns>        
        public static string GetAccessToken()
        {
            string token = string.Empty;
            string appid = "*";
            string secret = "*";
            try
            {
                var result = Get("http://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" +
                    secret);
                if (!string.IsNullOrWhiteSpace(result))
                {
                    var jObject = JObject.Parse(result);
                    token = jObject["access_token"].ToString();
                }
                return token;
            }
            catch (Exception ex)
            {
                return "";
            }
        }
public class CreatewxaQRCodeModel
    {
        public string path { get; set; }
    }