docs: 完善文档

This commit is contained in:
Fu Diwei 2021-11-29 12:14:42 +08:00
parent d95b1026a1
commit 705bbf0d2a
5 changed files with 29 additions and 18 deletions

View File

@ -51,7 +51,7 @@
### 1. 为什么要“造轮子”?
这都 2021 年了,官方本身提供的示例代码还只能运行在 .NET Framework on Windows 上;就连 RSA 签名这么基础的东西都没有人封装(确切说是因为 RSA 有很多种分块模式和填充模式,网上能找到的往往只封装了其中一种,但却未必符合微信的要求);全网你也找不到一个封装 API 尽可能全的 .NET SDK开源的项目不少但作者都能坚持下去的不多。
这都 2021 年了,官方本身提供的示例代码还只能运行在 .NET Framework on Windows 上;就连 RSA 签名这么基础的东西都没有人封装(确切说是因为 RSA 有很多种分块模式和填充模式,网上能找到的往往只封装了其中一种,但却未必符合微信的要求);全网很难找到一个封装微信 API 尽可能全的 .NET SDK开源的项目有不少但作者能坚持下去的不多。
于是萌生了自己封装一个库的想法,打算解决这几个痛点,同时也是推广一下微软官方的 `System.Text.Json`
@ -61,10 +61,10 @@
与另一个流行的 HTTP 库 [`RestSharp`](https://restsharp.dev/) 相比,`Flurl.Http` 底层基于 `System.Net.Http.HttpClient`,而 `RestSharp` 底层则基于 `System.Net.HttpWebRequest`,前者在多核多线程环境下的性能基准测试中表现要远优于后者,同时也是微软官方目前推荐的 HTTP 客户端方案。
【附】微软官方关于 `System.Net.HttpWebRequest``System.Net.Http.HttpClient` 的说明:
- https://docs.microsoft.com/zh-cn/dotnet/api/system.net.httpwebrequest#remarks
- https://docs.microsoft.com/zh-cn/dotnet/api/system.net.http.httpclient#httpclient-and-net-core
> 微软官方关于 `System.Net.HttpWebRequest``System.Net.Http.HttpClient` 的说明:
>
> - [《Microsoft Docs - HttpWebRequest 类Systen.Net](https://docs.microsoft.com/zh-cn/dotnet/api/system.net.httpwebrequest#remarks)
> - [《Microsoft Docs - HttpClient 类Systen.Net.Http](https://docs.microsoft.com/zh-cn/dotnet/api/system.net.http.httpclient#httpclient-and-net-core)
### 3. 本库与[盛派微信 SDKSenparc.Weixin](https://github.com/JeffreySu/WeiXinMPSDK)有什么区别?
@ -106,9 +106,9 @@
## 使用案例
| 项目名称 | 项目简介 | 项目地址 |
| :------: | :--------------------------------------------: | :--------------------------------------------------------------------------------------------: |
| CoreShop | 核心商城系统:支持可视化布局的 .NET 小程序商城 | [Gitee](https://gitee.com/CoreUnion/CoreShop)[GitHub](https://github.com/CoreUnion/CoreShop) |
| 项目名称 | 项目简介 | 项目地址 |
| :------: | :--------------------------------------------: | :--------------------------------------------------------------------------------------------------------: |
| CoreShop | 核心商城系统:支持可视化布局的 .NET 小程序商城 | [Gitee Repo](https://gitee.com/CoreUnion/CoreShop)<br>[GitHub Repo](https://github.com/CoreUnion/CoreShop) |
注:以上案例均来自第三方,本项目不对其项目做任何保证,仅作列举展示。如果你有项目也使用了本库、希望加到案例列表中,可以在 Issue 中提出。
@ -116,9 +116,9 @@
## 参与贡献
- GitHubhttps://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat
- GitHub Repohttps://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
- Giteehttps://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat
- Gitee Repohttps://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
以上仓库地址同步更新,均可接受 Issue 或 Pull Request。

View File

@ -46,3 +46,5 @@ client.Configure(settings =>
settings.JsonSerializer = new FlurlNewtonsoftJsonSerializer(jsonSettings);
});
```
需要注意的是,虽然你也可在代码中指定成其他实现 `ISerializer` 的 JSON 序列化器,但因本库的接口模型定义与实际发送的 JSON 数据并非完全一致,使用其他实现会导致意外的执行结果,所以请务必只使用本库内置的这两种 JSON 序列化器。

View File

@ -7,3 +7,12 @@
> [《微信支付开发者文档 - 证书/密钥/签名介绍:私钥和证书 - 声明所使用的证书》](https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_1.shtml#part-3)
>
> [《微信支付开发者文档 - 常见问题:证书相关 - 如何查看证书序列号?》](https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay7_0.shtml#part-5)
请开发者按上面参考阅读给出的方法自行查看证书序列号。
如果你已有 CER/CRT 格式的证书文件,你也可以利用本库提供的提供的 `RSAUtility` 工具类导出证书序列号:
```csharp
string certificate = "CRT/CER 证书内容";
string serialNumber = RSAUtility.ExportSerialNumber(certificate);
```

View File

@ -97,7 +97,7 @@ var client = new WechatTenpayClient(options);
```csharp
var manager = new InMemoryCertificateManager(); // 为便于后续使用,该对象可使用全局单例的方式声明
var options = new WechatTenpayClientOptions() { CertificateManager = certManager };
var options = new WechatTenpayClientOptions() { CertificateManager = manager };
var client = new WechatTenpayClient(options);
```
@ -109,7 +109,7 @@ var client = new WechatTenpayClient(options);
/* 注意QueryCertificatesAsync() 接口返回值需解密后再存入 */
/*    存入的证书式请参考上一小节给出的 CRT/CER 证书文件示例 */
/*    示例项目中也包含一段关于此的演示程序 */
certManager.SetEntry(new CertificateEntry("CRT/CER 证书序列号", "CRT/CER 证书内容", "证书生效时间", "证书过期时间"));
manager.SetEntry(new CertificateEntry("CRT/CER 证书序列号", "CRT/CER 证书内容", "证书生效时间", "证书过期时间"));
```
当然,现在的平台证书离过期还有很久,你也可以选择“偷懒”:提前下载好平台证书,在程序启动时记录一次即可。

View File

@ -39,14 +39,14 @@ using SKIT.FlurlHttpClient.Wechat;
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;
var certManager = new InMemoryCertificateManager();
var manager = new InMemoryCertificateManager();
var options = new WechatTenpayClientOptions()
{
MerchantId = "微信商户号",
MerchantV3Secret = "微信商户 v3 API 密钥",
MerchantCertSerialNumber = "微信商户证书序列号",
MerchantCertPrivateKey = "-----BEGIN PRIVATE KEY-----微信商户证书私钥-----END PRIVATE KEY-----",
CertificateManager = certManager // 证书管理器的具体用法请参阅下文的高级技巧
CertificateManager = manager // 证书管理器的具体用法请参阅下文的高级技巧
};
var client = new WechatTenpayClient(options);
```
@ -100,16 +100,16 @@ else
- [如何使用拦截器?](./Advanced_Interceptor.md)
- [如何验证响应签名?](./Advanced_ResponseSignatureVerification.md)
- [如何加密请求中的敏感数据?](./Advanced_RequestSensitiveDataEncryption.md)
- [如何解密响应中的敏感数据?](./Advanced_ResponseSensitiveDataDecryption.md)
- [如何验证回调通知事件签名?](./Advanced_EventSignatureVerification.md)
- [如何验证响应签名?](./Advanced_ResponseSignatureVerification.md)
- [如何解密回调通知事件中的敏感数据?](./Advanced_EventResourceDecryption.md)
- [如何验证回调通知事件签名?](./Advanced_EventSignatureVerification.md)
- [如何生成客户端调起支付时所需的参数及签名?](./Advanced_Payment.md)
- [如何扩展额外的 API](./Advanced_Extensions.md)