• Stars
    star
    1,130
  • Rank 41,185 (Top 0.9 %)
  • Language
    C#
  • License
    MIT License
  • Created over 3 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

可能是全网最完整的 C# 版微信 SDK,封装全部已知的微信 API,包含微信公众平台(订阅号+服务号+小程序+小游戏+小商店+视频号)、微信开放平台、微信商户平台(微信支付+微企付)、企业微信、微信广告平台、微信智能对话开放平台等模块,可跨平台。持续随官方更新,欢迎 Star / Fork。QQ 交流群 875580418【满】、930461548。

SKIT.FlurlHttpClient.Wechat

Gitee Stars Gitee Forks GitHub Stars GitHub Forks Visitors License

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

更多 SKIT.FlurlHttpClient 系列开发工具包请点此查看


特性

  • 基于 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 封装。

模块

名称 NuGet 其他
公众平台(公众号、小程序、视频号)
+ 开放平台模块
NuGet Version
NuGet Download
开发文档示例项目
商户平台(微信支付)模块
(针对 v3 版接口)
NuGet Version
NuGet Download
开发文档示例项目
商户平台(微信支付)模块
(针对 v2 版接口)
NuGet Version
NuGet Download
开发文档
企业微信(企业号)模块 NuGet Version
NuGet Download
开发文档
广告平台(广点通)模块 NuGet Version
NuGet Download
开发文档
对话开放平台(微信智能对话)模块 NuGet Version
NuGet Download
开发文档
腾讯微企付模块 NuGet Version
NuGet Download
开发文档

Q & A

1. 为什么要“造轮子”?

这都 2021 年了,官方本身提供的示例代码还只能运行在 .NET Framework on Windows 上;就连 RSA 签名这么基础的东西都没有人封装(确切地说是因为 RSA 有很多种分块模式和填充模式,网上能找到的往往只封装了其中一种,但却未必符合微信的要求);全网很难找到一个封装微信 API 尽可能全的 .NET SDK,开源的项目有不少,但作者能坚持下去的不多。

于是萌生了自己封装一个库的想法,打算解决这几个痛点,同时也是推广一下微软官方的 System.Text.Json

2. Flurl.Http 是什么?

Flurl.Http 是一个轻量级 HTTP 库,是 .NET 中最受欢迎扩展库之一,在 NuGet 上的累计下载量超过 1700 万、日均下载量超过 6 千、GitHub 2.6k Stars(数据统计截至 2021-06-01)。

与另一个流行的 HTTP 库 RestSharp 相比,Flurl.Http 底层基于 System.Net.Http.HttpClient,而 RestSharp 底层则基于 System.Net.HttpWebRequest,前者在多核多线程环境下的性能基准测试中表现要远优于后者,同时也是微软官方目前推荐的 HTTP 客户端方案。

注:微软官方关于 System.Net.HttpWebRequestSystem.Net.Http.HttpClient 的说明:

3. 本库与盛派微信 SDK(Senparc.Weixin)有什么区别?

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

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

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

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

4. 为什么不支持 .NET Framework 4.0 / .NET Framework 4.5?

直接原因是本项目的依赖库最低支持到 .NET Framework 4.6.1。

间接原因是为了支持跨平台的 .NET Standard 2.0,只能兼容到 .NET Framework 4.6.1。

根本原因是微软官方已于 2016 年 1 月 12 日终止了对 .NET Framework 4.6.1 以下版本的技术支持(详情请阅读官方公告)。也就是说,微软已经不再为此提供安全更新,在大部分技术合规要求中这一点都是扣分项,所以建议各位开发者目标框架能升级就升级。

5. 看了源码,发现模型定义里很多同样的代码是复制粘贴的,为什么不使用面向对象中的继承?

关于这点得吐槽微信提供的 API 了,很显然微信内部也是很多个 Team 在共同开发,每个 Team、甚至每个人的字段命名风格、约束条件、接口规则都大相径庭。就连微信支付虽然 v3 版 API 号称是 “RESTful” 的,却也没个统一标准。

举个例子,以分页查询为例,看似字段相同,都由 offsetcursorpagelimit + datatotal_countnext_cursor 这几个字段构成,但某些接口的 offsetcursorpagelimit 字段是可选参数,某些却是必填项;某些 page 值从 0 起始,某些却是从 1 起始;某些接口的 datatotal_countnext_cursor 字段一定会返回,某些却是一定不返回,某些只在特定条件下返回。一共十几个分页查询的接口,却有七八种分页的数据结构,这种情况下很难抽象出一个公共的基类出来。

除此之外,同样一个东西在不同接口里竟然拼法不一样;同样是表示数组有的是 JSON、有的却是字符串;诸如此类“奇葩”的情况很多很多。

本项目已经尽可能在条件允许的范围内抽象出了一些公共基类、并封装了各种奇怪场景下的自定义 JsonConverter。

6. 所有 API 都经过了测试吗?

由于微信的产品业务线众多,很多业务也需要前置条件才能继续,截至目前本项目已封装超过 2000 余个 API,虽然同时也编写了若干单元测试用例,但与数量庞大的 API 相比仍远远不够。

本项目严格按照微信官方提供的开发文档进行封装,并利用自动化工具保证封装结果的正确。但微信的文档本身质量很低,所以存在错误在所难免。

因为微信更新 API 很频繁,对于微信支付或企业微信这种有提供官方更新日志的,本项目会定期查阅更新;其他平台经常会悄悄地更新一波、让所有人懵逼。如果你在使用中遇到了因接口或模型定义错误而产生的问题,欢迎提出 Issue。


使用案例

项目名称 项目简介 项目地址
CoreShop 核心商城系统:支持可视化布局的 .NET 商城系统。 Gitee Stars
Admin.NET 通用权限开发框架:整合最新技术,模块插件式开发,前后端分离,开箱即用。 Gitee Stars

注:以上案例均来自第三方,本项目不对其项目做任何保证,仅作列举展示。如果你有项目也使用了本库、希望加到案例列表中,可以在 Issue 中提出。


参与贡献

以上仓库地址同步更新,均可接受 Issue 或 Pull Request。

如何参与贡献请参阅 CONTRIBUTING


更新日志

详细更新说明请参阅 CHANGELOG

More Repositories

1

DotNetCore.SKIT.FlurlHttpClient.ByteDance

可能是全网唯一的 C# 版字节跳动 SDK,封装全部已知的字节跳动 API,包含字节小程序开放平台、抖音开放平台、抖店开放平台、巨量引擎开放平台、TikTok Developer、TikTok Shop Open Platform 等模块,可跨平台,持续随官方更新。欢迎 Star / Fork。QQ 交流群 875580418【满】、930461548。
C#
162
star
2

DotNetCore.SKIT.FlurlHttpClient

SKIT.FlurlHttpClient 系列开发工具包的公共组件,为开发者提供使用体验一致的、可跨平台的第三方 API .NET SDK。已支持微信、抖音、百度、又拍云系列 API。QQ 交流群 875580418【满】、930461548。
C#
54
star
3

wxjssdk-promisify

为微信公众号 JS-SDK 提供 TypeScript 支持,同时将其基于回调函数的异步 API 转化为 Promise 形式。
JavaScript
13
star
4

x.naive-ui

一个对 Naive-UI 组件库的扩展,使 DataTable/Dropdown/Menu/Select/Tree 等组件支持插槽模板式的写法。An extension to Naive-UI component library, that enables slots and template style API for DataTable/Dropdown/Menu/Select/Tree.
TypeScript
11
star
5

DotNetCore.SKIT.FlurlHttpClient.Baidu

可能是全网唯一的 C# 版百度 SDK,封装全部已知的百度 API,包含百度智能小程序平台、百度地图开放平台、百度翻译开放平台、百度云推送等模块,可跨平台,持续随官方更新。
C#
8
star
6

Quartz.Extensions.JobAttribute

A convenient way to create Quartz.NET jobs using attributes.
C#
7
star
7

DotNetCore.SKIT.FlurlHttpClient.Upyun

可能是全网唯一的 C# 版又拍云 SDK,封装全部已知的又拍云 API,包含又拍云云存储服务(USS)、又拍云短信服务(SMS)、又拍云一键登录服务(SIM)、又拍云服务管理后台等模块,可跨平台,持续随官方更新。欢迎 Star / Fork。
C#
6
star
8

skit-storage.js

A better way to use storage (strong typing, namespacing, ttl, etc). 更便捷地访问本地存储,支持强类型读写、命名空间、过期策略等特性,同时支持在浏览器和小程序中运行。
TypeScript
5
star
9

wxmini-promisify

为微信小程序、小游戏提供 TypeScript 支持,同时将其基于回调函数的异步 API 转化为 Promise 形式。
JavaScript
5
star
10

skit-extensions.js

一个多功能的 JavaScript 内置对象原型链扩展方法工具库。A powerful JavaScript utility library for built-in object extensions.
JavaScript
2
star
11

vscode-settings-vue3

VSCode Settings for Vue 3.X development.
JavaScript
2
star
12

wepy2-com-toast

A component for displaying a toast based on wepy.js 2.x. 基于 WePY2 的提示框组件。
1
star
13

DotNetCore.SKIT.Utility

A collection of common tools.
C#
1
star
14

wepy-com-dialog

A component for displaying a dialog based on wepy.js 1.x.
1
star