文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

.NET之盛派微信SDK简单操作

2024-12-03 03:53

关注

介绍

Senparc.Weixin SDK 是由盛派网络(Senparc)团队自主研发的针对微信各模块的开发套件(C# SDK),已全面支持微信公众号、小程序、微信支付、企业号、开放平台、JSSDK、摇一摇周边等模块。有一些东西都已经封住在sdk里面,不需要我们再进行那些繁琐的操作。

示例

要对接微信公众号,我们首先得有一个微信公众号(我本来是使用我自己公众号,奈何好多好玩的功能没有权限需要微信认证),我们可以通过微信申请测试号来学习使用,申请地址 该测试号可以直接体验和测试公众平台的所有高级接口。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

通过测试号我可以可以得到我们想要的微信公众号参数信息

通过VS2019(好想尽快体验VS2022)新建一个.Net5 WebApi程序

安装组件

  1. "RestSharp" Version="106.11.7" />  
  2.   "Senparc.Weixin.MP" Version="16.12.101-preview2" /> 
  3.   "Senparc.Weixin.MP.Middleware" Version="0.3.100.1-preview2" /> 
  4.   "Swashbuckle.AspNetCore" Version="5.6.3" /> 

为了方便(偷懒),我直接使用了postman生成的RestSharp请求代码,因此装了该包。

添加配置

  1. //CO2NET  
  2. "SenparcSetting": { 
  3.   "IsDebug"true
  4.   "DefaultCacheNamespace""DefaultCache" //缓存通过前缀区分 
  5. }, 
  6. //Senparc.Weixin SDK 
  7. "SenparcWeixinSetting": { 
  8.   "IsDebug"true
  9.  
  10.   "Token""token"
  11.   "EncodingAESKey""EncodingAESKey"
  12.   "WeixinAppId""appid"
  13.   "WeixinAppSecret""secret" 

通过配置IsDebug可以配置是否以Debug模式运行。

关于SenparcWeixinSetting为何叫做这个名字?是因为配置中写死的

ConfigureServices中注册服务

  1. services.AddMemoryCache()//使用本地缓存必须添加 
  2.            .AddSenparcWeixinServices(Configuration);//Senparc.Weixin 注册(必须) 

也可以采用redis等其他方法存储配置信息等

Configure中启用服务

  1. //注册 Senparc.Weixin 及基础库 
  2.    app.UseSenparcGlobal(env, senparcSetting.Value, _ => { }, true
  3.        .UseSenparcWeixin(senparcWeixinSetting.Value, 
  4.            weixinRegister => weixinRegister.RegisterMpAccount(senparcWeixinSetting.Value)); 

通过这些配置我们可以获取accesstoken

  1. var accessToken = await AccessTokenContainer.GetAccessTokenAsync(_configuration["SenparcWeixinSetting:WeixinAppId"]).ConfigureAwait(false); 

自定义消息回复

要实现接受用户的消息,并且做出回应,我们需要继承MessageHandler,新建CustomerMessageHandler类,该类中实现了网上说的价值一个亿的AI核心代码,看到就是赚到。

  1. ///  
  2. /// 自定义消息处理器 
  3. ///  
  4. public class CustomerMessageHandler : MessageHandler 
  5.     public CustomerMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount = 0, IServiceProvider serviceProvider = null
  6.         : base(inputStream, postModel, maxRecordCount, falsenull
  7.     { 
  8.     } 
  9.  
  10.     ///  
  11.     /// 回复以文字形式发送的信息(可选) 
  12.     ///  
  13.     public override async Task OnTextRequestAsync(RequestMessageText requestMessage) 
  14.     { 
  15.         var responseMessage = base.CreateResponseMessage(); 
  16.         // await Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendTextAsync(Config.SenparcWeixinSetting.MpSetting.WeixinAppId, OpenId,);//注意:只有测试号或部署到正式环境的正式服务号可用此接口 
  17.         //responseMessage.Content =  $"你发送了文字:{requestMessage.Content}\r\n\r\n你的OpenId:{OpenId}";//以文字类型消息回复 
  18.         responseMessage.Content = requestMessage.Content.Replace("吗""").Replace('?''!').Replace('?''!'); 
  19.         return responseMessage; 
  20.     } 
  21.  
  22.     ///  
  23.     /// 默认消息 
  24.     ///  
  25.     public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) 
  26.     { 
  27.         var responseMessage = base.CreateResponseMessage(); 
  28.         responseMessage.Content = "欢迎来到我的公众号!"
  29.         return responseMessage; 
  30.     } 

启用消息处理器

  1. //使用中间件注册 MessageHandler,指定 CustomMessageHandler 为自定义处理方法 
  2.             app.UseMessageHandlerForMp("/weixinmsg"
  3.                 (stream, postModel, maxRecordCount, serviceProvider) => 
  4.                     new CustomerMessageHandler(stream, postModel, maxRecordCount, serviceProvider), 
  5.                 options => { options.AccountSettingFunc = context => senparcWeixinSetting.Value; }); 

这个时候我们已经实现了用户消息的接收和回复代码,不过还需要在微信平台进行配置(为了可以让微信发送消息到该代码,我使用了内网穿透功能供微信访问该地址)

如果你修改接口配置信息,提交成功说明微信可以调通该接口,这个时候就可以关注微信测试号,发送消息查看结果。

自定义菜单

通过编写接口来实现自定义菜单配置

  1. [HttpGet] 
  2.         public async Task GetAsync() 
  3.         { 
  4.             var accessToken = await AccessTokenContainer 
  5.                 .GetAccessTokenAsync(_configuration["SenparcWeixinSetting:WeixinAppId"]).ConfigureAwait(false); 
  6.             var bg = new ButtonGroup(); 
  7.  
  8.             var oneSubButton = new SubButton 
  9.             { 
  10.                 name = "基础知识"
  11.                 sub_button = new List 
  12.                 { 
  13.                     new SingleViewButton 
  14.                     { 
  15.                         name = "日志"
  16.                         url = "https://XXXXXX/appmsgalbum?__biz=MzU4MjU4NjgyOQ==&action=getalbum&album_id=1841538022157172741#wechat_redirect"
  17.                     } 
  18.                 } 
  19.             }; 
  20.             bg.button.Add(oneSubButton); 
  21.  
  22.             bg.button.Add(new SingleViewButton 
  23.             { 
  24.                 name = "文章目录"
  25.                 url = "https://www.yuque.com/docs/share/9aed821e-9115-41c7-a0cd-6b691ad7e400" 
  26.             }); 
  27.  
  28.             var result = CommonApi.CreateMenu(accessToken, bg); 
  29.  
  30.             return "成功" + result; 
  31.         } 

参考地址:

https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

通过调用该接口实现自定义菜单配置,显示下面的菜单

参考文档

GitHub:https://github.com/JeffreySu/WeiXinMPSDK

 

sdk文档地址:https://www.cnblogs.com/szw/p/weixin-course-index.html

 

来源:鹏祥内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯