mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-07-15 23:13:32 +08:00
docs: 完善文档
This commit is contained in:
parent
53b7ed0b60
commit
0c7cd5e1df
@ -12,7 +12,7 @@
|
||||
|
||||
需要注意的是,平台为商户提供的是 PEM 格式的密钥文件,需区分文件格式之间的不同。
|
||||
|
||||
有关密钥文件格式的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestDataEncryption.md)的有关章节。
|
||||
有关密钥文件格式的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestSensitiveDataEncryption.md)的有关章节。
|
||||
|
||||
---
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
需要注意的是,平台为商户提供的是 PEM 格式的密钥文件,需注意文件格式之间的不同。
|
||||
|
||||
有关密钥文件格式的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestDataEncryption.md)的有关章节。
|
||||
有关密钥文件格式的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestSensitiveDataEncryption.md)的有关章节。
|
||||
|
||||
---
|
||||
|
||||
@ -32,7 +32,7 @@ bool ret = client.VerifyEventSignature(
|
||||
);
|
||||
```
|
||||
|
||||
需要注意的是,使用该扩展方法前需先下载好平台证书,并存入全局的 `CertificateManager`。有关 `CertificateManager` 的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestDataEncryption.md)的有关章节。
|
||||
需要注意的是,使用该扩展方法前需先下载好平台证书,并存入全局的 `CertificateManager`。有关 `CertificateManager` 的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestSensitiveDataEncryption.md)的有关章节。
|
||||
|
||||
---
|
||||
|
@ -49,3 +49,27 @@ public class MyFakeEvent : WechatTenpayEvent.Types.IDecryptedResource
|
||||
public string MyFakeProps { get; set; }
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 敏感信息字段
|
||||
|
||||
如果你扩展的自定义请求或响应模型中包含敏感信息字段,并希望可以通过本库提供的 `EncryptRequestSensitiveProperty()` 和 `DecryptResponseSensitiveProperty()` 两个扩展方法来实现自动加、解密,那么你需要在定义模型时额外指定一个特性:
|
||||
|
||||
```csharp
|
||||
public class MyFakeRequest : WechatTenpayRequest
|
||||
{
|
||||
[Newtonsoft.Json.JsonProperty("my_fake_props")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
|
||||
[WechatTenpaySensitiveProperty("my_alg")]
|
||||
public string MyFakeProps { get; set; }
|
||||
}
|
||||
|
||||
public class MyFakeResponse : WechatTenpayResponse
|
||||
{
|
||||
[Newtonsoft.Json.JsonProperty("my_fake_props")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
|
||||
[WechatTenpaySensitiveProperty("my_alg")]
|
||||
public string MyFakeProps { get; set; }
|
||||
}
|
||||
```
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
需要注意的是,平台为商户提供的是 PEM 格式的密钥文件,需注意文件格式之间的不同。
|
||||
|
||||
有关密钥文件格式的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestDataEncryption.md)的有关章节。
|
||||
有关密钥文件格式的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestSensitiveDataEncryption.md)的有关章节。
|
||||
|
||||
---
|
||||
|
||||
@ -54,7 +54,7 @@ bool ret = RSAUtility.VerifyWithSHA256(publicKey, data, sign);
|
||||
bool ret = client.VerifyResponseSignature(response);
|
||||
```
|
||||
|
||||
需要注意的是,使用该扩展方法前需先下载好平台证书,并存入全局的 `CertificateManager`。有关 `CertificateManager` 的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestDataEncryption.md)的有关章节。
|
||||
需要注意的是,使用该扩展方法前需先下载好平台证书,并存入全局的 `CertificateManager`。有关 `CertificateManager` 的更多介绍,请参阅本文档[《高级技巧 - 如何加密请求中的敏感数据?》](./Advanced_RequestSensitiveDataEncryption.md)的有关章节。
|
||||
|
||||
---
|
||||
|
||||
|
@ -102,13 +102,13 @@ else
|
||||
|
||||
- [如何验证响应签名?](./Advanced_ResponseSignatureVerification.md)
|
||||
|
||||
- [如何加密请求中的敏感数据?](./Advanced_RequestDataEncryption.md)
|
||||
- [如何加密请求中的敏感数据?](./Advanced_RequestSensitiveDataEncryption.md)
|
||||
|
||||
- [如何解密响应中的敏感数据?](./Advanced_ResponseDataDecryption.md)
|
||||
- [如何解密响应中的敏感数据?](./Advanced_ResponseSensitiveDataDecryption.md)
|
||||
|
||||
- [如何验证回调通知事件签名?](./Advanced_EventDataSignatureVerification.md)
|
||||
- [如何验证回调通知事件签名?](./Advanced_EventSignatureVerification.md)
|
||||
|
||||
- [如何解密回调通知事件中的敏感数据?](./Advanced_EventDataDecryption.md)
|
||||
- [如何解密回调通知事件中的敏感数据?](./Advanced_EventResourceDecryption.md)
|
||||
|
||||
- [如何生成客户端调起支付时所需的参数及签名?](./Advanced_Payment.md)
|
||||
|
||||
|
@ -1,12 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using SKIT.FlurlHttpClient.Wechat.TenpayV3;
|
||||
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Models;
|
||||
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;
|
||||
|
||||
@ -49,7 +47,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_Net5.Services.BackgroundSe
|
||||
var response = await client.ExecuteQueryCertificatesAsync(request, cancellationToken: stoppingToken);
|
||||
if (response.IsSuccessful())
|
||||
{
|
||||
response = client.DecryptResponseSensitiveProperty(response);
|
||||
// 注意:如果启用了 AutoDecryptResponseSensitiveProperty,则无需再手动执行下面被注释的解密方法
|
||||
// response = client.DecryptResponseSensitiveProperty(response);
|
||||
|
||||
foreach (var certificateModel in response.CertificateList)
|
||||
{
|
||||
_certificateManager.AddEntry(new CertificateEntry(certificateModel));
|
||||
|
@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Flurl;
|
||||
using Flurl.Http;
|
||||
using Flurl.Http.Configuration;
|
||||
@ -41,7 +39,9 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_Net5.Services.HttpClients.
|
||||
MerchantV3Secret = wechatMerchant.SecretV3,
|
||||
MerchantCertSerialNumber = wechatMerchant.CertSerialNumber,
|
||||
MerchantCertPrivateKey = wechatMerchant.CertPrivateKey,
|
||||
CertificateManager = _certificateManager
|
||||
CertificateManager = _certificateManager,
|
||||
AutoEncryptRequestSensitiveProperty = true,
|
||||
AutoDecryptResponseSensitiveProperty = true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user