后端即时通讯金融科技【免费下载链接】WeiXinMPSDK微信全平台 .NET SDK Senparc.Weixin for C#支持 .NET Framework 及 .NET Core、.NET 10.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 WeChat SDK for C#.项目地址https://gitcode.com/gh_mirrors/we/WeiXinMPSDK点击查看免费下载Senparc.Weixin.Sample.Net8 是 WeiXinMPSDK 仓库中面向 .NET 8.0 的 MVC 综合示例项目将公众号、小程序、企业微信、微信支付V2/V3、开放平台等 Senparc.Weixin SDK 全部模块集成于一个 Web 应用。阅读本文后你将掌握该示例的编译环境要求、目录与配置结构、核心启动注册流程以及公众号消息处理的两种接入方式可直接据此部署测试或在真实项目中对照参考。一、项目定位SDK 各模块的综合演练场Samples/All/net8-mvc/目录下的 Senparc.Weixin.Sample.Net8 承担着双重角色可部署的综合示例它提供了 .NET 8.0 的 Mvc 项目示例可以直接进行部署测试。开箱即可运行基础功能高级功能测试则需要修改配置文件如修改 appId、Token、Secret 等真实微信账号信息。SDK 调试与多目标编译载体该 Sample 可用于调试 Senparc.Weixin SDK 本身支持 .NET 4.6.2、.NET Standard 2.1、.NET 8.0 的不同版本库编译并且在 Release 编译条件下可以生成 NuGet 包。正因为它是所有模块集成在一起的综合示例业务逻辑复杂度明显高于单模块示例。仓库作者在Samples/All/net8-mvc/readme.md中特别说明如果只需要查看单个模块的示例代码公众号、小程序、开放平台、微信支付等可以直接查看 Samples/ 目录下的其他对应文件夹——例如 Samples/MP、Samples/WxOpen、Samples/TenPayV3、Samples/Work 等独立示例项目。不过无需担心阅读障碍示例中已经将各个模块使用注释、文件夹等方式进行了区分代码结构清晰。对于需要同时接入多个微信产品线的综合场景本示例是非常合适的实际项目参考模板。二、编译环境要求与多目标框架说明原文档对开发环境给出了明确要求这是编译本项目的第一道门槛Visual Studio需要升级到 VS 2022或将来更新版本。.NET 8.0 SDK必须安装官方下载地址。条件编译提示由于src/目录下的 SDK 源码中采用了条件编译Conditional Compilation默认情况下开发环境需要同时安装 .NET Framework 4.6.2 和 .NET 8.0才能编译成功。这是因为同一套源码需要针对 .NET Framework 与 .NET Core/.NET 8.0 两个平台输出不同版本的库。从 Senparc.Weixin.Sample.net8.csproj 可以看到该示例项目的目标框架为net8.0并通过ProjectReference引用了Senparc.Weixin.Net8Sample.CommonService.csproj公共业务服务层位于 Samples/All/Senparc.Weixin.Sample.CommonService同时以Shared方式导入Senparc.Weixin.Sample.Shared.projitems共享视图与静态资源。项目还引用了Microsoft.Extensions.Configuration.Json、Senparc.AI.Kernel、Senparc.CO2NET.WebApi、Senparc.NeuChar.App/AspNet等关键 NuGet 包体现了完整的依赖栈。注意原文档中采用 .NET 7.0 作为默认 Web 运行框架的说法属于历史版本说明当前示例已升级为 .NET 8.0 目标框架实际以 csproj 中的net8.0为准。三、项目目录结构导读按微信模块划分的 Controller从源码结构看示例将 Controller 按微信产品线清晰分目录组织见 Controllers目录对应模块代表性文件Controllers/Weixin/MP/公众号WeixinController.cs、MenuController、OAuth2Controller、JSSDK、订阅消息、WebSocket 等Controllers/Weixin/Open/开放平台OpenController、OpenOAuthControllerControllers/Weixin/TenPay/微信支付TenPayControllerV2、TenPayV3Controller、TenPayApiV3ControllerControllers/Weixin/ThirdPartyAuth/第三方平台授权ThirdPartyAuthControllerControllers/Weixin/Work/企业微信WorkControllerControllers/Weixin/WxOpen/小程序WxOpenControllerControllers/Tools/辅助工具CacheController、QrCodeController、AiDocController、SimulateToolController 等此外Controllers/下还有BaseController.cs所有 Controller 的基类统一输出当前缓存策略类型到视图与CaseCollectionController.cs、HomeController.cs。公共的业务处理逻辑消息处理器、模板消息、事件服务等则统一放在 Samples/All/Senparc.Weixin.Sample.CommonService 中被各版本示例共享。四、核心配置文件appsettings.json 参数全解示例的微信账号与系统配置全部集中在 appsettings.json 中由三个顶层节点组成key 会被 SDK 自动识别切勿修改 key 名称未使用的参数可以直接删除整条配置。1.SenparcSettingCO2NET 全局配置SenparcSetting: { IsDebug: true, DefaultCacheNamespace: DefaultCache, Cache_Redis_Configuration: #{Cache_Redis_Configuration}#, Cache_Memcached_Configuration: #{Cache_Memcached_Configuration}#, SenparcUnionAgentKey: #{SenparcUnionAgentKey}# }IsDebug调试模式开关开启后会在App_Data/WeixinTraceLog/目录下记录全部 API 请求日志正式发布建议关闭。Cache_Redis_ConfigurationRedis 连接字符串。默认值#{Cache_Redis_Configuration}#是 Azure DevOps 占位符格式未修改时不启用 Redis。启用示例localhost:6379无密码或localhost:6379,passwordsenparc,connectTimeout1000,connectRetry2,syncTimeout10000,defaultDatabase3。Cache_Memcached_ConfigurationMemcached 连接字符串规则同上默认占位符时不启用。2.SenparcWeixinSetting微信账号配置SenparcWeixinSetting: { IsDebug: true, Token: #{Token}#, EncodingAESKey: #{EncodingAESKey}#, WeixinAppId: #{WeixinAppId}#, WeixinAppSecret: #{WeixinAppSecret}#, WxOpenAppId: #{WxOpenAppId}#, WxOpenAppSecret: #{WxOpenAppSecret}#, WxOpenToken: #{WxOpenToken}#, WxOpenEncodingAESKey: #{WxOpenEncodingAESKey}#, WeixinCorpId: #{WeixinCorpId}#, WeixinCorpAgentId: #{WeixinCorpAgentId}#, WeixinCorpSecret: #{WeixinCorpSecret}#, WeixinCorpToken: #{WeixinCorpToken}#, WeixinCorpEncodingAESKey: #{WeixinCorpEncodingAESKey}#, TenPayV3_MchId: #{TenPayV3_MchId}#, TenPayV3_Key: #{TenPayV3_Key}#, TenPayV3_CertPath: #{TenPayV3_CertPath}#, TenPayV3_CertSecret: #{TenPayV3_CertSecret}#, TenPayV3_PrivateKey: #{TenPayV3_PrivateKey}#, TenPayV3_SerialNumber: #{TenPayV3_SerialNumber}#, TenPayV3_ApiV3Key: #{TenPayV3_APIv3Key}#, EncryptionType: #{EncryptionType}#, Component_Appid: #{Component_Appid}#, Component_Secret: #{Component_Secret}#, Component_Token: #{Component_Token}#, Component_EncodingAESKey: #{Component_EncodingAESKey}# }关键参数说明公众号Token、EncodingAESKey、WeixinAppId、WeixinAppSecret对应公众平台后台的接口配置信息Token 必须与后台完全一致区分大小写。小程序WxOpenAppId/WxOpenAppSecret/WxOpenToken/WxOpenEncodingAESKey。企业微信WeixinCorpId、WeixinCorpAgentId应用 AgentId、WeixinCorpSecret、WeixinCorpToken、WeixinCorpEncodingAESKey。微信支付 V3TenPayV3_MchId商户号、TenPayV3_Key、TenPayV3_CertPath证书路径支持物理路径如D:\cert\apiclient_cert.p12或受保护目录下的相对路径如~/App_Data/cert/...、TenPayV3_CertSecret证书密码、TenPayV3_PrivateKey私钥明文或 pem 文件路径、TenPayV3_SerialNumber证书序列号、TenPayV3_ApiV3KeyAPIv3 密钥、TenPayV3_TenpayNotify支付回调地址。EncryptionType必填为 RSA 或 SMSM2需根据商户平台申请证书时的类型选择大部分情况为 RSA。开放平台Component_Appid、Component_Secret、Component_Token、Component_EncodingAESKey。3. 多账号注册Items节点Items节点下可以添加任意多个、任意模块、任意组合的账号每个条目的字段格式与上一级节点对应key 不能重复。配置文件内置了第二个公众号第三个公众号第二个小程序企业微信审批等多个示例组。例如Items: { 第二个小程序: { WxOpenAppId: #{WxOpenAppId2}#, WxOpenAppSecret: #{WxOpenAppSecret2}#, WxOpenToken: #{WxOpenToken2}#, WxOpenEncodingAESKey: #{WxOpenEncodingAESKey2}# } }4.SenparcAiSetting可选 AI 能力示例还集成了 Senparc.AI支持 AzureOpenAI、OpenAI、NeuChar 等多种平台通过AiPlatform枚举选择如AiPlatform: AzureOpenAI并可在Items下注册额外的模型组合如AzureDalle3图像生成配置。配置值中的#{...}#为 Azure DevOps 部署占位符。如果你有明文信息请删除占位符符号直接写入完整字符串例如Token: MyFullToken。五、启动与注册流程Program.cs 与 Startup.cs1. 入口Program.csProgram.cs 使用标准的 Generic Host 创建 Web 主机关键在于通过UseServiceProviderFactory(new SenparcServiceProviderFactory())注入 Senparc 自定义的依赖注入工厂这是 SDK 注册的基础Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder { webBuilder.UseStartupStartup(); }).UseServiceProviderFactory(new SenparcServiceProviderFactory());2. 服务注册ConfigureServicesStartup.cs 的ConfigureServices()完成了核心注册services.AddSession()使用 Session必须在配置 Mvc 之前。AddControllersWithViews().AddNewtonsoftJson()MVC 视图 NewtonsoftJson 序列化支持。services.AddMemoryCache()本地缓存内存缓存必加。services.AddSignalR()WebSocket 实时通信。services.AddSenparcWeixin(Configuration, Env)Senparc.Weixin 注册必须随后通过.AddSenparcWebSocketCustomNetCoreWebSocketMessageHandler()注册 WebSocket.AddSenparcAI(Configuration)注册 AI 能力可选。部署在 IIS 时需启用services.ConfigureIISServerOptions(options options.AllowSynchronousIO true)部署在 Linux 时对应配置KestrelServerOptions源码中已给出注释示例。3. 管道配置ConfigureConfigure()中展示了完整的中间件编排顺序其注册顺序具有强参考价值Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // 启用 GB2312按需 app.UseEnableRequestRewind(); app.UseSession(); app.UseSenparcGlobal(env, senparcSetting.Value, globalRegister { /* 缓存、日志、APM 配置 */ }) .UseSenparcWeixin(senparcWeixinSetting.Value, (weixinRegister, weixinSetting) { /* 微信账号注册 */ }); app.UseAuthorization(); app.UseEndpoints(endpoints { ... });其中UseSenparcGlobal()内的globalRegister回调负责全局缓存配置ChangeDefaultCacheNamespace()设置缓存命名空间多网站共用同一分布式缓存时的隔离手段按需注册 CsRedisUseKeyValueRedisNow()键值对策略推荐或 MemcachedUseMemcachedNow()。TraceLog 注册RegisterTraceLog(ConfigTraceLog)其中ConfigTraceLog()演示了SenparcTrace.SendCustomLog、SenparcTrace.OnLogFunc、WeixinTrace.OnWeixinExceptionFunc异常时发送模板消息给管理员等日志回调。UseSenparcWeixin()内的weixinRegister回调则负责微信账号注册建议按以下顺序执行尤其须将缓存放在第一位微信缓存UseSenparcWeixinCacheCsRedis()与 StackExchange.Redis 两选一、UseSenparcWeixinCacheMemcached()。注意使用非本地缓存却不注册会收到当前扩展缓存策略没有进行注册的异常。公众号/小程序RegisterMpAccount(...)、RegisterWxOpenAccount(senparcWeixinSetting.Value, 【盛派网络小助手】小程序)并演示了使用Items[第二个小程序]注册第二个账号。企业微信RegisterWorkAccount(senparcWeixinSetting.Value, 【盛派网络】企业微信)、RegisterWorkAccount(senparcWeixinSetting.Value[企业微信审批], ...)。微信支付RegisterTenpayOld(...)V2、RegisterTenpayV3(...)、RegisterTenpayApiV3(...)最新的 APIv3。开放平台RegisterOpenComponent(...)并给出三个委托实现——getComponentVerifyTicketFunc从App_Data/OpenTicket读取 component_verify_ticket、getAuthorizerRefreshTokenFunc从App_Data/AuthorizerInfo读取授权方 refresh_token、authorizerTokenRefreshedFunctoken 刷新后回写本地文件。源码注释明确提示本地文件存储仅方便演示分布式系统请使用其他存储方式。六、公众号消息接入的两种方式方式一MessageHandler 中间件推荐Startup.cs 中使用app.UseMessageHandlerForMp(/WeixinAsync, ...)直接挂载公众号消息处理器无需单独创建 Controller。其 options 演示了完整配置项app.UseMessageHandlerForMp(/WeixinAsync, CustomMessageHandler.GenerateMessageHandler, options { options.AccountSettingFunc context senparcWeixinSetting.Value; // [必须] 动态指定账号配置 options.DefaultMessageHandlerAsyncEvent DefaultMessageHandlerAsyncEvent.SelfSynicMethod; // [可选] 未重写异步方法时调用同步方法 options.EnableRequestLog true; // [可选] 请求日志默认为 true options.EnbleResponseLog true; // [可选] 回复日志默认为 true options.AggregateExceptionCatch ex { /* 异常处理 */ return false; }; options.TextResponseLimitOptions new TextResponseLimitOptions(2048, senparcWeixinSetting.Value.WeixinAppId); // 超长文本自动走客服接口分批次回复 });中间件同样支持小程序与企业微信UseMessageHandlerForWxOpen(/WxOpenAsync, ...)与UseMessageHandlerForWork(/WorkAsync, ...)。中间件还支持多账号通过 URL 参数如/Weixin?id1在AccountSettingFunc中从context.Request读取参数并返回对应的SenparcWeixinSetting。方式二传统 Controller精细控制WeixinController.cs 展示了有特殊自定义需求时的消息处理方案可高度控制处理过程的每个细节。其Get微信后台验证方法核心逻辑为[HttpGet] [ActionName(Index)] public ActionResult Get(PostModel postModel, string echostr) { if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token)) { return Content(echostr); // 返回随机字符串则表示验证通过 } ... }Controller 从Config.SenparcWeixinSetting.MpSetting读取Token、EncodingAESKey、WeixinAppId与公众平台后台保持一致区分大小写Post方法则通过messageHandler.ExecuteAsync()处理用户消息SDK 已全面转向异步方法驱动不再推荐同步方法。七、其他运行框架的对应 Demo如果你的运行环境并非 .NET 8.0仓库在同一目录族下提供了其他版本的示例.NET 10.0 Demo推荐net10-mvc/Senparc.Weixin.Sample.Net10与当前 .NET 8 示例结构基本一致面向最新 .NET 版本。.NET Framework 4.5 Demonet45-mvc/Senparc.Weixin.MP.Sample。注意.NET Framework 4.5 版示例已于 2019 年 9 月 1 日起停止小版本更新但大版本更新仍保持同步且 .NET 4.5 所有库的更新不受影响。此外Samples/MP 目录下还提供了仅包含公众号模块的精简示例Senparc.Weixin.Sample.MP与Senparc.Weixin.Sample.MP.Simple适合作为最小可运行模板快速上手。八、部署与调试建议首次运行确保本机安装了 .NET 8.0 SDK建议配合 VS 2022克隆仓库后直接打开解决方案编译。若因条件编译报错请检查是否已安装 .NET Framework 4.6.2 开发包。接入真实账号将appsettings.json中对应模块的#{...}#占位符替换为真实参数Token、AppId、AppSecret 等并在微信公众平台/小程序后台将服务器 URL 指向本示例对应路由如/WeixinAsync或/Weixin。分布式缓存生产环境建议配置Cache_Redis_Configuration启用 Redis并通过ChangeDefaultCacheNamespace设置命名空间本地联调可直接使用默认内存缓存。日志与异常开发阶段保持IsDebug true以记录完整 API 请求日志正式发布前关闭 Debug并利用WeixinTrace.OnWeixinExceptionFunc接入异常告警如模板消息通知管理员。学习路径先对照 Samples/All/net8-mvc/readme.md 理解项目全貌再按模块逐个阅读Controllers/Weixin/下的分模块代码配合 Samples/All/Senparc.Weixin.Sample.CommonService 中的消息处理器CustomMessageHandler 等与 src 目录下的 SDK 源码理解底层实现。本示例覆盖了 SDK 从服务注册、账号配置、消息路由到缓存、日志、支付的完整接入链路是学习 Senparc.Weixin 在 .NET 8.0 下综合集成的首选参考也是将公众号、小程序、企业微信、微信支付与开放平台组合进同一系统的落地范本。赞分享后端即时通讯金融科技【免费下载链接】WeiXinMPSDK微信全平台 .NET SDK Senparc.Weixin for C#支持 .NET Framework 及 .NET Core、.NET 10.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 WeChat SDK for C#.项目地址https://gitcode.com/gh_mirrors/we/WeiXinMPSDK点击查看免费下载相关推荐WeiXinMPSDK .NET 10 MVC 综合示例指南基于 net10-mvc 部署与调试 Senparc.Weixin SDK 全平台模块WeiXinMPSDK .NET 10 MVC 综合示例指南基于 net10 mvc 部署与调试 Senparc.Weixin SDK 全平台模块 本文以 W后端即时通讯金融科技Senparc.Weixin SDK .NET Framework 示例项目net45-mvc完全指南编译、配置与全模块实战Senparc.Weixin SDK .NET Framework 示例项目net45 mvc完全指南编译、配置与全模块实战 本文围绕 WeiXinMPS后端即时通讯金融科技基于 .NET 10 的微信全平台 SDK 综合示例实战Senparc.Weixin.Sample.Net10 架构解析与 AI 对话集成基于 .NET 10 的微信全平台 SDK 综合示例实战Senparc.Weixin.Sample.Net10 架构解析与 AI 对话集成 本篇技术指南以 S后端即时通讯金融科技上一篇Netgear路由器救砖终极指南5分钟快速恢复变砖设备下一篇终极Netgear路由器救砖指南nmrpflash工具完全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
