DotNetCore.SKIT.FlurlHttpCl.../docs/WechatApi/README.md
2024-05-22 22:16:01 +08:00

125 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SKIT.FlurlHttpClient.Wechat.Api
基于 `Flurl.Http` 的[微信公众平台](<(https://mp.weixin.qq.com/)>) & [微信开放平台](<(https://open.weixin.qq.com/)>) HTTP API SDK。
---
## 功能
- 基于微信公众平台 & 微信开放平台 API 封装。
- 提供了微信公众平台 & 微信开放平台所需的 AES、SHA-1、HMAC-SHA-256 等算法工具类。
- 提供了 JS-SDK 签名、解析回调通知事件等扩展方法。
- 支持 API 安全鉴权模式(支持接入 AES+RSA 和 SM4+SM2 两种算法),自动加密并签名请求,自动解密响应。
---
## 快速入门
> [!IMPORTANT]
> 此目录下的文档适用于 v3.x 版本的模块。如果你正在使用 2.x 版本,请移步至 GitHub/Gitee 的已归档分支。
### 安装:
提示:如果你使用 Visual Studio NuGet 管理器图形化界面,请在搜索结果中勾选“**包括预发行版**”。
```shell
# 通过 NuGet 安装
> Install-Package SKIT.FlurlHttpClient.Wechat.Api
# 通过 dotnet-tools 安装
> dotnet add package SKIT.FlurlHttpClient.Wechat.Api
```
### 初始化:
```csharp
using SKIT.FlurlHttpClient.Wechat;
using SKIT.FlurlHttpClient.Wechat.Api;
var options = new WechatApiClientOptions()
{
AppId = "微信 AppId",
AppSecret = "微信 AppSecret",
ImmeDeliveryAppKey = "即时配送相关服务 AppKey不用则不填",
ImmeDeliveryAppSecret = "即时配送相关服务 AppSecret不用则不填",
VirtualPaymentAppKey = "虚拟支付相关服务 AppKey不用则不填",
MidasOfferId = "米大师 1.0 相关服务 OfferId不用则不填",
MidasAppKey = "米大师 1.0 相关服务 AppKey不用则不填",
MidasOfferIdV2 = "米大师 2.0 相关服务 OfferId不用则不填",
MidasAppKeyV2 = "米大师 2.0 相关服务 AppKey不用则不填"
};
var client = WechatApiClientBuilder.Create(options).Build();
```
### 请求 & 响应:
```csharp
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);
}
```
---
## 基础用法
- ⭐ [如何快速找到需要调用的 API 模型类名 / 方法名?](./Basic_ModelDefinition.md)
- [如何解析回调通知事件?](./Basic_EventDeserialization.md)
- [如何验证回调通知事件签名?](./Basic_EventSignatureVerification.md)
- [如何解密经过加密处理的开放数据?](./Basic_OpenDataDecryption.md)
- ⭐ [如何生成 JS-SDK 初始化时所需的参数及签名?](./Basic_Parameters.md)
- [如何自定义额外的 API 接口?](./Basic_Extensions.md)
- [如何接入安全鉴权模式?](./Basic_SecurityAPI.md)
---
## 高级技巧
- [配置 JSON 序列化器](./Advanced_JsonSerializer.md)
- [配置 HttpClient](./Advanced_HttpClient.md)
- [使用拦截器](./Advanced_Interceptor.md)
- [避免内存泄漏](./Advanced_Dispose.md)
- [与 `IHttpClientFactory` 集成](./Advanced_HttpClientFactory.md)
---
## 示例项目
为方便开发者快速掌握本库的使用方法,这里提供一个示例项目以供参考。
请阅读[《示例项目说明》](./Sample.md)。
---
## 迁移指南
- [v3.x 迁移指南](./Migration_V3.md)