c# 微信开发 《生成带参数的关注二维码》

/// <summary>
        /// 生成二维码
        /// </summary>
        /// <returns></returns>
        /// 申请生成二维码的用户 CreatQrCodeUser
        public string CreateQrCodeImage(string CreatQrCodeUser)
        {
            string WeixinQrCodePath = ConfigurationManager.AppSettings["WeixinQrCodePath"].TryToString(); //配置的文件地址
            string rootpath = System.AppDomain.CurrentDomain.BaseDirectory;//程序运行地址
            string path = rootpath + WeixinQrCodePath; //文件夹绝对路径
            string filename = Guid.NewGuid().TryString() + ".jpg";
            string absolutelyPath = path + "/" +filename; //生成的二维码绝对路径
            string returnPath = "";//文件返回的路径
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            int Sceneid = WeixinDA.GetQrcodeImgMaxSceneid(CreatQrCodeUser);
            //保存二维码生成的图片
            WeixinQrCode.SaveQrCodeImage(Sceneid.TryString(), absolutelyPath);

            //最终生成二维码
            string ResultCodeImg = path + "/" + filename; //最终合成图片的绝对路径
            returnPath = WeixinQrCodePath + "/" + filename;//最终合成图片的相对路径
            WeixinDA.SaveUserQrcodeImg(CreatQrCodeUser, Sceneid, returnPath);
            return returnPath;
        }

/// <summary>
/// 获取二维码图片Url,需要Format 0.ticket
/// </summary>
public const string WeiXin_QrCode_GetUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}";

 /// <summary>
        /// 根据Ticket获取二维码图片保存在本地
        /// </summary>
        /// <param name="scene_id">二维码场景id</param>
        /// <param name="imgPath">图片存储路径</param>
        public static void SaveQrCodeImage(string scene_id, string imgPath)
        {
            try
            {
                string Ticket = WeiXinCommom.CreateTicket(scene_id);

                if (Ticket == null)
                    throw new ArgumentNullException("Ticket");

                //ticket需 urlEncode
                string stUrl = string.Format(WeiXinCommom.WeiXin_QrCode_GetUrl, HttpUtility.UrlEncode(Ticket));
                WeiXinCommom.SaveUrlImage(stUrl, imgPath);
            }
            catch (Exception ex)
            {
                LogHelper.WriteFileLog("qrcodeError", ex.Message);
            }
        }

public const string WeiXin_Ticket_CreateUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}";

public const string QrCodeTicket_Create_TempJsonStrin = "{\"expire_seconds\": 604800, \"action_name\": \"QR_SCENE\", \"action_info\": {\"scene\": {\"scene_id\": {0}}}}";

 /// <summary>
        /// 获取Ticket
        /// </summary>
        /// <returns></returns>
        public static string CreateTicket(string scene_id)
        {
            string access_token = WeiXinCommom.GetAccsss_token(); ;

            if (string.IsNullOrEmpty(access_token))
                throw new ArgumentNullException("Access_Token");

            string url = string.Format(WeiXin_Ticket_CreateUrl, access_token);
            string postData = QrCodeTicket_Create_TempJsonStrin.Replace("{0}", scene_id);
            string result = PostData(url, postData);
            WeixinQrCode.Ticket ticket = JsonConvert.DeserializeObject<WeixinQrCode.Ticket>(result);

            if (ticket == null || string.IsNullOrEmpty(ticket.ticket))
            {
                FileLog.AddLog("ticket", "获取二维码ticket失败");
                return "";
            }
            return ticket.ticket;
        }

 /// <summary>
        /// Post数据
        /// </summary>
        /// <param name="posturl"></param>
        /// <param name="postData"></param>
        /// <returns></returns>
        public static string PostData(string posturl, string postData)
        {
            Stream outstream = null;
            Stream instream = null;
            StreamReader sr = null;
            HttpWebResponse response = null;
            HttpWebRequest request = null;
            Encoding encoding = Encoding.UTF8;
            byte[] data = encoding.GetBytes(postData);
            // 准备请求...
            try
            {
                // 设置参数
                request = WebRequest.Create(posturl) as HttpWebRequest;
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer = cookieContainer;
                request.AllowAutoRedirect = true;
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;
                outstream = request.GetRequestStream();
                outstream.Write(data, 0, data.Length);
                outstream.Close();
                //发送请求并获取相应回应数据
                response = request.GetResponse() as HttpWebResponse;
                //直到request.GetResponse()程序才开始向目标网页发送Post请求
                instream = response.GetResponseStream();
                sr = new StreamReader(instream, encoding);
                //返回结果网页(html)代码
                string content = sr.ReadToEnd();
                string err = string.Empty;
                return content;
            }
            catch (Exception ex)
            {
                LogHelper.WriteFileLog("PostDataerror", string.Format("{0}", ex.Message));
                return string.Empty;
            }
        }

  

原文地址:https://www.cnblogs.com/yyyuguo/p/8426813.html

时间: 2024-10-10 12:29:35

c# 微信开发 《生成带参数的关注二维码》的相关文章

微信服务号开发-获取用户位置信息

微信服务号开发-获取用户位置信息 在微信公众号开发的中,获取用户位置信息是非常常见的功能需求,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动.下面将介绍微信服务号获取用户位置信息的原理与步骤. 原理 1. 位置信息获取流程 2. 位置信息报文 <xml><ToUserName><![CDATA[gh_public_member_account]]></ToUserName> <FromUserName><![CDATA[o

php 微信开发获取用户信息如何实现

php 微信开发获取用户信息 获取用户信息的大致算法是 用户授权登录第三方网站, 重点:scope参数: snsapi_basic 静默登录,不需要用户授权,只能获取到openid: snsapi_userinfo ,需要用户点击授权,能获取到openid和所有用户信息: 第一步:先获取用户的code值: 第二步:根据code值去获取access_token,每次请求的值都不一样,如果没有使用,每五分钟更新一次: 第三步:根据access_token获取用户信息: 1.获取code代码实现: g

微信开发--获取用户openID

<?php//获取用户openid //公众号配置跳转至该页面 //https://mp.weixin.qq.com/advanced/selfmenu?action=index&t=advanced/menu-setting&token=1089922883&lang=zh_CN$appid="";$appsecret="";// $client_credential=client_credential;$url="http

微信公众号开发--获取用户信息中文乱码的解决方案

在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN 将其中的access_token替换为我们的access_token openid为关注用户的openid就可以获取到用户的信息了. 问题描述 不过获取到的数据却是中文乱码 而用Java程序获取的结果也是一样的

微信企业号 获取用户信息

业务操作最基础的一个功能是获取访客的身份,传统的获取方式是提供一个登录页面用以访客登录. 在微信企业号中,用户在微信中访问页面时,可以根据相关API获取此用户的微信账号信息,以此来匹配业务服务器存储的相关用户信息. 目录 1.  介绍 2.  代码示例 1. 介绍 1.1 说明 企业号的网页开发,说白了就是移动端web开发,特殊点在于如何获取微信用户的身份信息. 在企业号中可以进行如下步骤获取微信用户信息: 访问一个业务页面时,可通过OAuth验证接口获取此用户信息 → 根据code获取user

微信端获取用户信息(思路)

微信公众号越来越多,对于我们程序员来说,也越来越需要了解微信端接口开发,下面是微信用户进入公众号后,公众号获取用户信息的思路. 当然了,我有代码,这里就只贴一点,主要的还是流程和查阅微信开发文档. appid和secret是登录微信公众号里面设置的,固定的,code是微信用户同意协议返回给前端的code,后台通过这三个参数,访问url获取openid和access_token,然后再根据url访问微信接口获取用户信息. 代码: 1 String requestUrl = "https://api

背水一战 Windows 10 (82) - 用户和账号: 获取用户的信息, 获取用户的同意

原文:背水一战 Windows 10 (82) - 用户和账号: 获取用户的信息, 获取用户的同意 [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 用户和账号 获取用户的信息 获取用户的同意 示例1.演示如何获取用户的信息UserAndAccount/UserInfo.xaml <Page x:Class="Windows10.UserAndAccount.UserInfo" xmlns="http://schemas.microsoft.c

Python学习---Django的request扩展【获取用户设备信息】

关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS = (os.path.join(BASE_DIR, "statics"),) # 现添加的配置,这里是元组,注意逗号 TEMPLATES = [ ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], ] urls.py from django

微信公众号开发获取用户信息

一.获取用户基本信息接口 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同).公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称.头像.性别.所在城市.语言和关注时间. 获取用户基本信息 开发者可通过OpenID来获取用户基本信息.请使用https协议. 接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-bin

c# 微信开发 《获取用户的信息》

public const string WeiXin_User_GetInfoUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN"; /// <summary> /// 根据OpenID 获取用户在微信的基本信息(需关注公众号) /// </summary> /// <param name="openId