.NET 社区又一个 C# 版微信 SDK 开源了

作者:科技、互联网行业优质创作者
专注领域:.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造
欢迎关注我(Net数字智慧化基地),里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你快速成长。升职+涨薪!!

C# 版微信 SDK

SKIT.FlurlHttpClient.Wechat, 可能是全网最完整的 C# 版微信 SDK,封装全部已知的微信 API,包含微信公众平台(订阅号+服务号+小程序+小游戏+小商店+视频号)、微信开放平台、微信商户平台(微信支付+微企付)、企业微信、微信广告平台、微信智能对话开放平台等模块,可跨平台。

基于 Flurl.Http 的微信 HTTP API SDK,目前已包含公众平台、开放平台、商户平台、企业微信、广告平台、对话开放平台等模块。

功能特性

  • 基于 Flurl.Http,可与 IHttpClientFactory 集成。

  • 支持 .NET Framework 4.6.1+、.NET Standard 2.0+、.NET Core 2.0+、.NET 5+。

  • 支持 Windows / Linux / macOS 多平台部署。

  • 支持 System.Text.Json(默认)和 Newtonsoft.Json 两种序列化方式。

  • 强类型接口模型。

  • 全异步式编程。

  • 提供 SourceLink 调试符号文件。

  • 完整、完善、完全的微信 HTTP API 封装。

包含功能模块,公众平台(公众号、小程序、视频号)+ 开放平台模块, 商户平台(微信支付)模块,商户平台(微信支付)模块,企业微信(企业号)模块,广告平台(广点通)模块,对话开放平台(微信智能对话)模块,腾讯微企付模块。

为什么要"造轮子"?

这都 2023 年了,官方本身提供的示例代码还只能运行在 .NET Framework on Windows 上;

就连 RSA 签名这么基础的东西都没有人封装(确切地说是因为 RSA 有很多种分块模式和填充模式,网上能找到的往往只封装了其中一种,但却未必符合微信的要求);

全网很难找到一个封装微信 API 尽可能全的 .NET SDK,开源的项目有不少,但作者能坚持下去的不多。于是萌生了自己封装一个库的想法,打算解决这几个痛点,同时也是推广一下微软官方的 System.Text.Json。

这个库与盛派微信 SDK有什么区别?

注:盛派微信 SDK 是由苏震巍先生发起的国内知名的 .NET 开源项目。

本库专注于 API 本身的封装,捎带提供了一些用于加解密、序列化的工具类,使用起来更加灵活,不限任何框架或项目类型;盛派微信 SDK 提供了大而全的功能,与 MVC / WebAPI 深度集成。

本库的接口模型遵循的是微软官方推荐的 C# 属性命名方式(帕斯卡命名法);盛派微信 SDK 提供的是微信接口本身的命名方式(蛇形命名法和驼峰命名法混杂)。

本库封装了目前微信官方提供的几乎所有 API(极个别不支持的已在各模块文档中列出具体原因);盛派微信 SDK 只提供了常用的 API。

C# 对接示例

nuget 安装 SKIT.FlurlHttpClient.Wechat.Api

# 通过 NuGet 安装
> Install-Package SKIT.FlurlHttpClient.Wechat.Api

对 SDK 进行初始化

using SKIT.FlurlHttpClient.Wechat;
using SKIT.FlurlHttpClient.Wechat.Api;

var options = new WechatApiClientOptions()
{
    AppId = "微信 AppId",
    AppSecret = "微信 AppSecret",
    ImmeDeliveryAppKey = "即时配送相关服务 AppKey,不用则不填",
    ImmeDeliveryAppSecret = "即时配送相关服务 AppSecret,不用则不填",
    MidasOfferId = "米大师(虚拟支付 1.0)相关服务 OfferId,不用则不填",
    MidasOfferIdV2 = "米大师(虚拟支付 2.0)相关服务 OfferId,不用则不填",
    MidasAppKey = "米大师(虚拟支付 1.0)相关服务 AppKey,不用则不填",
    MidasAppKeyV2 = "米大师(虚拟支付 2.0)相关服务 AppKey,不用则不填"
};
var client = new WechatApiClient(options);
请求和响应
using SKIT.FlurlHttpClient.Wechat.Api;
using SKIT.FlurlHttpClient.Wechat.Api.Models;

/* 以公众号获取用户信息接口为例 */
var request = new CgibinUserInfoRequest()
{
    AccessToken = "微信 AccessToken",
    OpenId = "微信 OpenId"
};
var response = await client.ExecuteCgibinUserInfoAsync(request);
if (response.IsSuccessful())
{
    Console.WriteLine("昵称:" + response.Nickname);
    Console.WriteLine("头像:" + response.HeadImageUrl);
}
else
{
    Console.WriteLine("错误代码:" + response.ErrorCode);
    Console.WriteLine("错误描述:" + response.ErrorMessage);
}

项目地址

https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat

欢迎关注我(Net数字智慧化基地),里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你升职+涨薪!!
点击下方卡片关注公众号,里面有很多大佬的技术文章,能助你快速成长。还可免费领取如下15个视频教程!

回复'面试',获取C#/.NET/.NET Core面试宝典

回复'C#',领取零基础学习C#编程

回复'NET',领取.NET零基础入门到实战

回复'Linux',领取Linux从入门到精通

回复'wpf',领取高薪热门【WPF上位机+工业互联网】从零手写实战

回复'Modbus',领取初识C#+上位机Modbus通信

回复'PLC',领取C#语言与西门子PLC的通信实操

回复'blazor',领取blazor从入门到实战

回复'TypeScript',领取前端热门TypeScript系统教程

回复'vue',领取vue前端从入门到精通

回复'23P',领取C#实现23种常见设计模式

回复'MongoDB',领取MongoDB实战

回复'Trans',领取分布式事务

回复'Lock',领取分布式锁实践

回复'Docker',领取微服务+Docker综合实战

回复'K8s',领取K8s部署微服务

回复'加群',进.NET技术社区交流群 

你可能感兴趣的:(.net,c#,微信)