Home

Awesome

SKIT.FlurlHttpClient.Wechat

Gitee Stars Gitee Forks GitHub Stars GitHub Forks Visitors License

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

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


特性


模块

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

Q & A

1. Flurl.Http 是什么?

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

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

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

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

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

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

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

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

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

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

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

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


使用案例

项目名称项目简介项目地址
CoreShop核心商城系统:支持可视化布局的 .NET 商城系统。Gitee Stars
Admin.NET站在巨人肩膀上的 .NET 通用权限开发框架。Gitee Stars

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


参与贡献

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

如何参与贡献请参阅 CONTRIBUTING


更新日志

详细更新说明请参阅 CHANGELOG