asp.net微信开发(已关注用户管理)

ASP.NET微信开发(已关注用户管理)

简介

随着微信的用户量不断攀升,越来越多的企业希望能够通过微信进行一系列的营销活动,因此微信开发变得越来越流行。而ASP.NET作为一种成熟的web框架,非常适合进行微信开发,下面我们就来讲解一下在ASP.NET下如何进行已关注用户管理的微信开发。

步骤

1.注册微信公众号并获取公众号相关信息

首先,在微信公众平台官网完成微信公众号注册。在注册完成后,需要进入公众号管理后台,在“设置”-“公众号设置”-“开发者中心”中获取必要的信息,包括:AppID、AppSecret、Token等。

2.在ASP.NET项目中集成微信SDK

微信提供了配套的SDK供开发者使用,我们可以在微信公众平台SDK下载页面下载最新的SDK。然后把SDK集成到ASP.NET项目中,以便进行开发。

3.接收微信服务器验证

在接收到微信服务器的验证请求后,需要进行验签操作。验签操作的目的是为了验证接收到的请求是否来自微信服务器,防止被恶意攻击。具体的流程如下:
1)把接收到的timestamp、nonce、token三个参数组成一个数组。
2)对数组进行排序。
3)将数组中的元素拼接成一个字符串,形成signature的源字符串。
4)对源字符串进行sha1加密。
5)把加密后的字符串与微信服务器传来的signature值进行比对。

可以通过以下代码实现:

public bool CheckSignature() {
    string token = "your_token";
    string timestamp = Request.QueryString["timestamp"];
    string nonce = Request.QueryString["nonce"];
    string signature = Request.QueryString["signature"];
    string[] ArrTmp = { token, timestamp, nonce };
    Array.Sort(ArrTmp);     //字典排序
    string tmpStr = string.Join("", ArrTmp);
    tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
    tmpStr = tmpStr.ToLower();
    if (tmpStr == signature) {
        return true;
    }
    else {
        return false;
    }
}

4.处理已关注用户信息

在已经接收到微信服务器发送过来的用户消息后,需要根据用户发送的消息类型进行处理。由于本文的重点是已关注用户管理,因此我们这里主要讨论如何处理关注事件。当一个用户关注公众号后,微信服务器会发送一个XML格式的消息到我们在公众号管理后台填写的URL上,我们需要解析这个XML,获取用户相关信息,并把信息保存到我们的数据库中。可以通过以下代码实现:

public ActionResult ProcessRequest(HttpContext context) {
    // 接收微信服务器 POST 过来的 XML
    XmlDocument xml = new XmlDocument();
    using (Stream stream = HttpContext.Request.InputStream) {
        byte[] bytes = new byte[stream.Length];
        stream.Read(bytes, 0, (int)stream.Length);
        string postStr = System.Text.Encoding.UTF8.GetString(bytes);
        xml.LoadXml(postStr);
    }
    // 解析 XML 获取用户信息
    string sender = xml.SelectSingleNode("/xml/FromUserName").InnerText;
    string receiver = xml.SelectSingleNode("/xml/ToUserName").InnerText;
    string eventKey = xml.SelectSingleNode("/xml/EventKey").InnerText;
    string eventType = xml.SelectSingleNode("/xml/Event").InnerText;
    // 把用户信息存入数据库中
    DBContext.AddUserInfo(sender, receiver, eventKey);
    return Content("");
}

5.编写页面获取已关注用户列表

最后,我们需要在ASP.NET页面中编写获取已关注用户列表的代码。可以通过以下代码实现:

public List<UserInfo> GetUsers() {
    List<UserInfo> list = new List<UserInfo>();
    string token = AccessTokenContainer.TryGetToken(appId, appSecret);
    var result = UserApi.Get(new OpenIdResult(token));
    if (result.errcode == ReturnCode.请求成功) {
        foreach (var item in result.data.openid) {
            var user = UserApi.Info(token, item);
            if (user.errcode == ReturnCode.请求成功) {
                list.Add(new UserInfo() {
                    NickName = user.nickname,
                    OpenId = user.openid,
                    Sex = user.sex,
                    Province = user.province,
                    City = user.city,
                    Headimgurl = user.headimgurl
                });
            }
        }
    }
    return list;
}

示例

示例1:发送欢迎消息

public string SendWelcomeMessage() {
    string token = AccessTokenContainer.TryGetToken(appId, appSecret);
    TextMessage msg = new TextMessage() {
        ToUserName = "oKUv3jZO9hLLRMS_BFfEZ3u11pDU",
        Content = "欢迎关注我们的公众号,有任何问题请在公众号内留言。",
        MsgType = "text"
    };
    CustomApi.SendText(token, msg);
}

示例2:发送模板消息

public void SendTemplateMessage() {
    string token = AccessTokenContainer.TryGetToken(appId, appSecret);
    TemplateMessage message = new TemplateMessage() {
        ToUser = "oKUv3jZO9hLLRMS_BFfEZ3u11pDU",
        TemplateId = "template_id",
        Data = new {
            first = new TemplateDataItem("您的订单已支付成功,我们会尽快安排发货。"),
            orderNO = new TemplateDataItem("201919191"),
            orderMoneySum = new TemplateDataItem("¥999.99"),
            backupFieldName = new TemplateDataItem("备用字段"),
            remark = new TemplateDataItem("欢迎再次购买我们的产品!")
        }
    };
    var result = TemplateApi.SendTemplateMessage(token, message);
}

以上就是ASP.NET微信开发中的已关注用户管理攻略,包括了关键步骤及示例代码。在具体实现时,还需根据具体问题进行修改和完善。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net微信开发(已关注用户管理) - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#程序启动项的设置方法

    关于C#程序启动项的设置方法,可以采用以下步骤: 设置启动项的方法 打开Visual Studio编辑器,打开你的C#项目; 右键单击解决方案资源管理器中的“项目文件”,选择“属性”; 选择“应用程序”选项卡,找到“启动对象”下拉菜单,从中选择你想要设置的启动项; 如果你的启动项是某个类,那么你需要在该类中为Main方法标记一个[STAThread]属性,这…

    C# 2023年5月14日
    00
  • C# String.Contains()方法: 返回一个值,该值指示指定的字符串是否出现在此字符串中

    C#中的 String.Contains() 方法 String.Contains() 方法用于判断字符串是否包含指定的字符或子字符串,返回值为布尔类型,即如果包含则返回 true,否则返回 false。以下是该方法的语法: public bool Contains (string value); 其中,value 参数为需查找的字符串。 使用方法 使用该方…

    C# 2023年4月19日
    00
  • .Net Core日志记录的核心机制

    .NET Core日志记录的核心机制 在.NET Core中,日志记录是一个非常重要的功能,可以帮助我们在应用程序中记录和跟踪事件。本攻略将介绍.NET Core日志记录的核心机制,并提供两个示例说明。 日志记录的核心机制 在.NET Core中,日志记录的核心机制包括以下几个部分: 1. ILogger ILogger是在.NET Core中记录日志的接口…

    C# 2023年5月17日
    00
  • C#单线程和多线程端口扫描器详解

    C#单线程和多线程端口扫描器是一个非常实用的工具,可以用于检测指定主机的开放的端口,同时也能够帮助我们识别潜在的网络安全问题。 1. 单线程端口扫描器 单线程端口扫描器是指利用单个线程进行端口扫描的工具。使用单线程扫描器时,程序将按照给定范围逐个测试每个端口,如果端口开放,则输出结果。 下面是一个基于C#语言的单线程端口扫描器示例: using System…

    C# 2023年5月15日
    00
  • 微软警告:若 Win11 KB5012643 补丁导致应用程序崩溃,建议卸载它

    最近,微软发布了一个警告,称Windows 11的KB5012643补丁可能会导致某些应用程序崩溃。如果您遇到了这个问题,微软建议您卸载该补丁。以下是卸载该补丁的完整攻略: 打开“设置”应用程序 首先,您需要打开Windows 11的“设置”应用程序。您可以通过单击任务栏上的“搜索”图标并输入“设置”来打开它,或者使用Windows键+I快捷键。 进入“更新…

    C# 2023年5月15日
    00
  • C#实现单例模式的几种方法总结

    C#实现单例模式的几种方法总结 单例模式是一种常用的设计模式,它确保一个类只有一个实例,而且提供一个访问该实例的全局访问点。在C#中,实现单例模式有多种方法,下面将详细讲解。 1. 懒汉式单例模式 在懒汉式单例模式中,实例对象在第一次被访问时才会被创建。它的实现方式比较简单,如下所示: public class Singleton { private sta…

    C# 2023年5月15日
    00
  • .Net Core+Angular Cli/Angular4开发环境搭建教程

    .Net Core+Angular Cli/Angular4开发环境搭建教程 在进行.Net Core和Angular Cli/Angular4开发时,我们需要搭建相应的开发环境。本攻略将详细介绍如何搭建.Net Core和Angular Cli/Angular4开发环境。 环境要求 在进行.Net Core和Angular Cli/Angular4开发时,…

    C# 2023年5月17日
    00
  • C#中DataSet转化为实体集合类的方法

    将C#中的DataSet转化为实体集合类的方法涉及到数据集合类和实体类之间的转换。下面是实现这个过程的攻略: 步骤一:创建实体类 首先,我们需要创建实体类。这个类必须符合我们数据库中表的结构。一个简单的实体类示例如下: public class User { public int Id { get; set; } public string Name { g…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部