微信扫描二维码关注公众号并成为下级

一、微信公众号配置“服务器配置”

https://blog.csdn.net/qq_31267183/article/details/83181157

二、生成带标识符的二维码

1. 生成AccessToken

/// <summary>
/// 获取token
/// </summary>
/// <returns></returns>
public static Response_AccessToken GetToken()
{
    var url = "https://api.weixin.qq.com/cgi-bin/token";

    Dictionary<string, string> dict = new Dictionary<string, string>();
    dict.Add("appid", appId);
    dict.Add("secret", secret);
    dict.Add("grant_type", "client_credential");

    return HttpGet<Response_AccessToken>(dict, url);
}

/// <summary>
/// 获取token参数
/// </summary>
public class Response_AccessToken : Response_Error
{
    /// <summary>
    /// 网页授权接口调用凭证
    /// </summary>
    public string access_token { get; set; }

    /// <summary>
    /// access_token接口调用凭证超时时间,单位(秒)
    /// </summary>
    public string expires_in { get; set; }

    /// <summary>
    /// 用户刷新access_token
    /// </summary>
    public string refresh_token { get; set; }

    /// <summary>
    /// 用户唯一标识,在未观众公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的openid
    /// </summary>
    public string openid { get; set; }

    /// <summary>
    /// 用户授权的作用域,使用逗号分隔
    /// </summary>
    public string scope { get; set; }
}

2. 生成Ticket

  • 2.1 临时Ticket,标识符为int
/// <summary>
/// 生成永久Ticket
/// </summary>
/// <returns></returns>
public static Response_Ticket CreatePermanentTicket(string token)
{
    var url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token;

    JObject data = new JObject();
    data.Add("action_name", "QR_SCENE");
    data.Add("action_info", JObject.FromObject(new Request_Ticket_Info
    {
        scene = new
        {
            scene_id = 123 // 目前参数只支持1--100000
        },
    }));

    return WebService.HttpPost<Response_Ticket>(data.ToString(), url);
}
  • 2.2 永久Ticket,标识符为int
/// <summary>
/// 生成永久Ticket
/// </summary>
/// <returns></returns>
public static Response_Ticket CreatePermanentTicket(string token)
{
    var url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token;

    JObject data = new JObject();
    data.Add("action_name", "QR_LIMIT_SCENE");
    data.Add("action_info", JObject.FromObject(new Request_Ticket_Info
    {
        scene = new
        {
            scene_id = 123 // 目前参数只支持1--100000
        },
    }));

    return WebService.HttpPost<Response_Ticket>(data.ToString(), url);
}
  • 2.3 临时Ticket,标识符为string
/// <summary>
/// 生成永久Ticket
/// </summary>
/// <returns></returns>
public static Response_Ticket CreatePermanentTicket(string token)
{
    var url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token;

    JObject data = new JObject();
    data.Add("action_name", "QR_STR_SCENE");
    data.Add("action_info", JObject.FromObject(new Request_Ticket_Info
    {
        scene = new
        {
            scene_str = "标识符"
        },
    }));

    return WebService.HttpPost<Response_Ticket>(data.ToString(), url);
}
  • 2.4 永久Ticket,标识符为string
/// <summary>
/// 生成永久Ticket
/// </summary>
/// <returns></returns>
public static Response_Ticket CreatePermanentTicket(string token)
{
    var url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + token;

    JObject data = new JObject();
    data.Add("action_name", "QR_LIMIT_STR_SCENE");
    data.Add("action_info", JObject.FromObject(new Request_Ticket_Info
    {
        scene = new
        {
            scene_str = "标识符"
        },
    }));

    return WebService.HttpPost<Response_Ticket>(data.ToString(), url);
}
  • 请求返回结果
/// <summary>
/// 请求返回结果
/// </summary>
public class Response_Ticket
{
    /// <summary>
    /// 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。
    /// </summary>
    public string ticket { get; set; }

    /// <summary>
    /// 二维码的有效时间,以秒为单位。最大不超过1800。
    /// 永久时没有此项
    /// </summary>
    public int expire_seconds { get; set; }

    /// <summary>
    /// 二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片
    /// </summary>
    public string url { get; set; }
}

3. 生成二维码

/// <summary>
/// Ticket 换 二维码
/// </summary>
/// <param name="ticket"></param>
/// <returns></returns>
public static string TicketChangeQRCode(string ticket)
{
    var ticket = HttpUtility.UrlEncode(ticket, Encoding.UTF8);

    return "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + ticket;
}
  • 返回的数据时二维码,扫描后跳转到公众号的关注页(如果已经关注,则跳转到公众号首页),用户关注公众号,可以在关注信息中查询到标识符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值