diff --git a/docs/WechatTenpayV2/Advanced_Parameters.md b/docs/WechatTenpayV2/Advanced_Parameters.md index 7ed87e87..cc6e7a62 100644 --- a/docs/WechatTenpayV2/Advanced_Parameters.md +++ b/docs/WechatTenpayV2/Advanced_Parameters.md @@ -1,4 +1,4 @@ -## 如何生成客户端(JS-SDK、小程序、App 等)所需的参数及签名? +## 如何生成客户端(JS-SDK、App、小程序等)所需的参数及签名? --- @@ -27,6 +27,7 @@ var request = new Models.CreatePayUnifiedOrderRequest() SignType = "HMAC-SHA256" }; var response = await client.ExecuteCreatePayUnifiedOrderAsync(request); +/* 下面的参数字典可直接以 JSON 格式返回给客户端,客户端反序列化后再原样传递给 wx.chooseWXPay() 方法即可 */ var paramMap = client.GenerateParametersForJsapiGetBrandPayRequest(request.AppId, response.PrepayId, request.SignType); ``` diff --git a/docs/WechatTenpayV2/README.md b/docs/WechatTenpayV2/README.md index 8ab20e54..9cb5dda1 100644 --- a/docs/WechatTenpayV2/README.md +++ b/docs/WechatTenpayV2/README.md @@ -94,7 +94,7 @@ else - [如何验证回调通知事件签名?](./Advanced_EventSignatureVerification.md) -- [如何生成客户端(JSAPI、小程序、App 等)所需的参数及签名?](./Advanced_Parameters.md) +- [如何生成客户端(JSAPI、App、小程序等)所需的参数及签名?](./Advanced_Parameters.md) - [如何在 ASP.NET Core 中与 `IHttpClientFactory` 集成?](./Advanced_IHttpClientFactory.md) diff --git a/docs/WechatTenpayV3/Advanced_Parameters.md b/docs/WechatTenpayV3/Advanced_Parameters.md index a881dd82..cae360a3 100644 --- a/docs/WechatTenpayV3/Advanced_Parameters.md +++ b/docs/WechatTenpayV3/Advanced_Parameters.md @@ -1,4 +1,4 @@ -## 如何生成客户端(JSAPI、小程序、App 等)所需的参数及二次签名? +## 如何生成客户端(JSAPI、App、小程序等)所需的参数及二次签名? --- @@ -32,6 +32,7 @@ var request = new Models.CreatePayTransactionJsapiRequest() } }; var response = await client.ExecuteCreatePayTransactionJsapiAsync(request); +/* 下面的参数字典可直接以 JSON 格式返回给客户端,客户端反序列化后再原样传递给 WeixinJSBridge.invoke('getBrandWCPayRequest') 方法即可 */ var paramMap = client.GenerateParametersForJsapiPayRequest(request.AppId, response.PrepayId); ``` diff --git a/docs/WechatTenpayV3/README.md b/docs/WechatTenpayV3/README.md index 1733366f..ba96dc3e 100644 --- a/docs/WechatTenpayV3/README.md +++ b/docs/WechatTenpayV3/README.md @@ -106,7 +106,7 @@ else - [如何验证回调通知事件签名?](./Advanced_EventSignatureVerification.md) -- [如何生成客户端(JSAPI、小程序、App 等)所需的参数及二次签名?](./Advanced_Parameters.md) +- [如何生成客户端(JSAPI、App、小程序等)所需的参数及二次签名?](./Advanced_Parameters.md) - [如何接入国密算法?](./Advanced_SMAlgorithm.md) diff --git a/samples/SKIT.FlurlHttpClient.Wechat.Api.Sample_Net6/Controllers/WechatNotifyController.cs b/samples/SKIT.FlurlHttpClient.Wechat.Api.Sample_Net6/Controllers/WechatNotifyController.cs index 789e7a52..74e44839 100644 --- a/samples/SKIT.FlurlHttpClient.Wechat.Api.Sample_Net6/Controllers/WechatNotifyController.cs +++ b/samples/SKIT.FlurlHttpClient.Wechat.Api.Sample_Net6/Controllers/WechatNotifyController.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; @@ -58,20 +58,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Controllers _logger.LogInformation("接收到微信推送的数据:{0}", content); var client = _wechatApiHttpClientFactory.Create(appId); - var msgType = client.DeserializeEventFromXml(content).MessageType; + var msgType = client.DeserializeEventFromXml(content).MessageType?.ToUpper(); switch (msgType) { - case "text": + case "TEXT": { var eventModel = client.DeserializeEventFromXml(content); - // Do Something + _logger.LogInformation("接收到微信推送的文本消息,消息内容:{0}", eventModel.Content); + // 后续处理略 } break; - case "image": + case "IMAGE": { var eventModel = client.DeserializeEventFromXml(content); - // Do Something + _logger.LogInformation("接收到微信推送的图片消息,图片链接:{0}", eventModel.PictureUrl); + // 后续处理略 + } + break; + + default: + { + // 其他情况略 } break; } diff --git a/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_Net6/Controllers/TenpayNotifyController.cs b/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_Net6/Controllers/TenpayNotifyController.cs index bd4ff6ad..0eb84e68 100644 --- a/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_Net6/Controllers/TenpayNotifyController.cs +++ b/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_Net6/Controllers/TenpayNotifyController.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; @@ -46,13 +46,32 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample.Controllers if (!valid) { // NOTICE: - // 需提前注入 CertificateManager、并添加平台证书,才可以使用扩展方法执行验签操作。 + // 需提前注入 CertificateManager、并下载平台证书,才可以使用扩展方法执行验签操作。 // 有关 CertificateManager 的用法请参阅《开发文档 / 高级技巧 / 如何验证回调通知事件签名?》。 // 后续如何解密并反序列化,请参阅《开发文档 / 高级技巧 / 如何解密回调通知事件中的敏感数据?》。 return new JsonResult(new { code = "FAIL", message = "验签失败" }); } + var callbackModel = client.DeserializeEvent(content); + var eventType = callbackModel.EventType?.ToUpper(); + switch (eventType) + { + case "TRANSACTION.SUCCESS": + { + var callbackResource = client.DecryptEventResource(callbackModel); + _logger.LogInformation("接收到微信支付推送的订单支付成功通知,商户订单号:{0}", callbackResource.OutTradeNumber); + // 后续处理略 + } + break; + + default: + { + // 其他情况略 + } + break; + } + return new JsonResult(new { code = "SUCCESS", message = "成功" }); } } diff --git a/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_NetFramework47/Controllers/TenpayNotifyController.cs b/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_NetFramework47/Controllers/TenpayNotifyController.cs index 83bb1a47..6ae0d65e 100644 --- a/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_NetFramework47/Controllers/TenpayNotifyController.cs +++ b/samples/SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample_NetFramework47/Controllers/TenpayNotifyController.cs @@ -1,4 +1,4 @@ -namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample.Controllers +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Sample.Controllers { [RoutePrefix("api/notify")] public class TenpayNotifyController : ApiController @@ -44,6 +44,25 @@ return Json(new { code = "FAIL", message = "验签失败" }); } + var callbackModel = client.DeserializeEvent(content); + var eventType = callbackModel.EventType?.ToUpper(); + switch (eventType) + { + case "TRANSACTION.SUCCESS": + { + var callbackResource = client.DecryptEventResource(callbackModel); + Debug.WriteLine("接收到微信支付推送的订单支付成功通知,商户订单号:{0}", callbackResource.OutTradeNumber); + // 后续处理略 + } + break; + + default: + { + // 其他情况略 + } + break; + } + return Json(new { code = "SUCCESS", message = "成功" }); } }