From 5c8c7a66543065569467f790080817892880cc1f Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Thu, 3 Mar 2022 17:19:29 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=AE=8C=E5=96=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WechatApi/Advanced_Parameters.md | 2 ++ ...ecryption.md => Advanced_EventInfoDecryption.md} | 5 ++--- docs/WechatTenpayV2/Advanced_ModelDefinition.md | 2 +- docs/WechatTenpayV2/README.md | 2 +- .../Advanced_EventSignatureVerification.md | 13 +++++++++++++ .../Advanced_RequestSensitiveDataEncryption.md | 4 ++-- .../Advanced_ResponseSignatureVerification.md | 6 +++--- docs/WechatTenpayV3/README.md | 4 ++-- 8 files changed, 26 insertions(+), 12 deletions(-) rename docs/WechatTenpayV2/{Advanced_EventResourceDecryption.md => Advanced_EventInfoDecryption.md} (83%) diff --git a/docs/WechatApi/Advanced_Parameters.md b/docs/WechatApi/Advanced_Parameters.md index b5f168a5..f723816c 100644 --- a/docs/WechatApi/Advanced_Parameters.md +++ b/docs/WechatApi/Advanced_Parameters.md @@ -20,6 +20,8 @@ var response = await client.ExecuteCgibinTicketGetTicketAsync(request); var paramMap = client.GenerateParametersForJSSDKConfig(response.Ticket, "https://example.com"); ``` +注意上述示例代码中的 JsapiTicket 与微信 AccessToken 类似,有每日获取频率限制和过期时间限制,开发者应自行实现相关持久化和更新机制。 + --- ### 【附】生成参数相关扩展方法速查表: diff --git a/docs/WechatTenpayV2/Advanced_EventResourceDecryption.md b/docs/WechatTenpayV2/Advanced_EventInfoDecryption.md similarity index 83% rename from docs/WechatTenpayV2/Advanced_EventResourceDecryption.md rename to docs/WechatTenpayV2/Advanced_EventInfoDecryption.md index f93106c6..55f5175f 100644 --- a/docs/WechatTenpayV2/Advanced_EventResourceDecryption.md +++ b/docs/WechatTenpayV2/Advanced_EventInfoDecryption.md @@ -14,12 +14,11 @@ /* 微信商户平台发来的通知内容 */ string callbackXml = " ... "; /* 将 XML 反序列化得到通知对象 */ -var callbackModel = client.DeserializeEvent(callbackJson); +var callbackModel = client.DeserializeEvent(callbackXml); /* 解密得到支付通知敏感数据(以退款结果通知为例) */ -var callbackResource = client.DecryptEventRequestInfo(callbackModel); +var callbackEventInfo = client.DecryptEventRequestInfo(callbackModel); string outRefundNumber = callbackResource.OutRefundNumber; string refundId = callbackResource.RefundId; -} ``` 完整的回调通知模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Events_ 目录。 diff --git a/docs/WechatTenpayV2/Advanced_ModelDefinition.md b/docs/WechatTenpayV2/Advanced_ModelDefinition.md index d567258b..58329f77 100644 --- a/docs/WechatTenpayV2/Advanced_ModelDefinition.md +++ b/docs/WechatTenpayV2/Advanced_ModelDefinition.md @@ -34,7 +34,7 @@ | √ | 支付工具:小程序红包 | 普通商户 & 境内服务商 | | | √ | 支付工具:付款到零钱 | 普通商户 | | | √ | 支付工具:付款到银行卡 | 普通商户 | | -| × | 支付工具:分账 | 普通商户 & 境内服务商 | 请升级至 v3 API | +| × | 支付工具:分账 | 普通商户 & 境内服务商 | 请升级至 v3 API | | √ | 支付工具:扣款服务(原委托代扣) | 普通商户 & 境内服务商 | | | √ | 支付工具:酒店押金 | 境内服务商 | | | √ | 支付工具:车主服务 | 境内服务商 | | diff --git a/docs/WechatTenpayV2/README.md b/docs/WechatTenpayV2/README.md index 8e6a2e0a..336c1774 100644 --- a/docs/WechatTenpayV2/README.md +++ b/docs/WechatTenpayV2/README.md @@ -94,7 +94,7 @@ else - [如何使用拦截器?](./Advanced_Interceptor.md) -- [如何解密回调通知事件中的敏感数据?](./Advanced_EventResourceDecryption.md) +- [如何解密回调通知事件中的敏感数据?](./Advanced_EventInfoDecryption.md) - [如何验证回调通知事件签名?](./Advanced_EventSignatureVerification.md) diff --git a/docs/WechatTenpayV3/Advanced_EventSignatureVerification.md b/docs/WechatTenpayV3/Advanced_EventSignatureVerification.md index b7b31966..fabb1e2e 100644 --- a/docs/WechatTenpayV3/Advanced_EventSignatureVerification.md +++ b/docs/WechatTenpayV3/Advanced_EventSignatureVerification.md @@ -8,6 +8,19 @@ --- +### 重要须知: + +请在开发过程中注意区分**商户证书**和**平台证书**: + +- **商户证书**用于生成请求的签名,需要通过微信商户后台申请并下载,并在构建客户端配置项时指定(即 `WechatTenpayClientOptions` 对象中的商户证书序列号和商户公钥两个参数); +- **平台证书**用于验证响应或回调的签名,需要在程序运行时实时通过接口动态获取(即 `QueryCertificatesAsync` 方法,注意证书内容需要解密)。 + +如果你在开发过程出现验签不通过的情况,请先检查是否混淆了这两个证书。 + +关于证书的更多注意事项,请参阅[《微信支付开发者文档 - 常见问题:证书相关》](https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay7_0.shtml) + +--- + ### 密钥文件格式说明: 需要注意的是,平台为商户提供的是 PEM 格式的密钥文件,需注意文件格式之间的不同。 diff --git a/docs/WechatTenpayV3/Advanced_RequestSensitiveDataEncryption.md b/docs/WechatTenpayV3/Advanced_RequestSensitiveDataEncryption.md index 43bd7800..4339bd06 100644 --- a/docs/WechatTenpayV3/Advanced_RequestSensitiveDataEncryption.md +++ b/docs/WechatTenpayV3/Advanced_RequestSensitiveDataEncryption.md @@ -15,9 +15,9 @@ 请在开发过程中注意区分**商户证书**和**平台证书**: - **商户证书**与请求中的敏感数据加密无关; -- **平台证书**用于加密请求中的敏感信息字段,需要通过接口获取(即 `QueryCertificatesAsync` 方法,注意证书内容需先经 AES-GCM 解密一次)。 +- **平台证书**用于加密请求中的敏感信息字段,需要在程序运行时实时通过接口动态获取(即 `QueryCertificatesAsync` 方法,注意证书内容需先经 AES-GCM 解密一次)。 -如果你在请求过程中出现请求加密失败、服务器响应私钥解密失败的情况,请先检查是否混淆了这两个证书。 +如果你在开发过程中出现请求加密失败、服务器响应私钥解密失败的情况,请先检查是否混淆了这两个证书。 关于证书的更多注意事项,请参阅[《微信支付开发者文档 - 常见问题:证书相关》](https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay7_0.shtml) diff --git a/docs/WechatTenpayV3/Advanced_ResponseSignatureVerification.md b/docs/WechatTenpayV3/Advanced_ResponseSignatureVerification.md index 7e1b17eb..7f4a8048 100644 --- a/docs/WechatTenpayV3/Advanced_ResponseSignatureVerification.md +++ b/docs/WechatTenpayV3/Advanced_ResponseSignatureVerification.md @@ -12,10 +12,10 @@ 请在开发过程中注意区分**商户证书**和**平台证书**: -- **商户证书**用于生成请求的签名,需要在构建客户端配置项时指定(即 `WechatTenpayClientOptions` 对象中的证书序列号和公钥); -- **平台证书**用于验证响应或回调的签名,需要通过接口获取(即 `QueryCertificatesAsync` 方法,注意证书内容需要解密)。 +- **商户证书**用于生成请求的签名,需要通过微信商户后台申请并下载,并在构建客户端配置项时指定(即 `WechatTenpayClientOptions` 对象中的商户证书序列号和商户公钥两个参数); +- **平台证书**用于验证响应或回调的签名,需要在程序运行时实时通过接口动态获取(即 `QueryCertificatesAsync` 方法,注意证书内容需要解密)。 -如果你在验签过程出现验签不通过的情况,请先检查是否混淆了这两个证书。 +如果你在开发过程出现验签不通过的情况,请先检查是否混淆了这两个证书。 关于证书的更多注意事项,请参阅[《微信支付开发者文档 - 常见问题:证书相关》](https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay7_0.shtml) diff --git a/docs/WechatTenpayV3/README.md b/docs/WechatTenpayV3/README.md index f69637d4..58c99787 100644 --- a/docs/WechatTenpayV3/README.md +++ b/docs/WechatTenpayV3/README.md @@ -92,8 +92,6 @@ else ## 高级技巧 -- [如何查看商户证书序列号?](./Advanced_MerchantCertificateSerialNumber.md) - - [如何快速找到需要调用的 API 模型类名 / 方法名(附完整 API 对照表)?](./Advanced_ModelDefinition.md) - [如何在 ASP.NET Core 中与 `IHttpClientFactory` 集成?](./Advanced_IHttpClientFactory.md) @@ -102,6 +100,8 @@ else - [如何使用拦截器?](./Advanced_Interceptor.md) +- [如何查看商户证书序列号?](./Advanced_MerchantCertificateSerialNumber.md) + - [如何加密请求中的敏感数据?](./Advanced_RequestSensitiveDataEncryption.md) - [如何解密响应中的敏感数据?](./Advanced_ResponseSensitiveDataDecryption.md)