diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientEventDecryptionExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientEventDecryptionExtensions.cs index 0d509316..b3a80b18 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientEventDecryptionExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientEventDecryptionExtensions.cs @@ -23,6 +23,22 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2 return client.JsonSerializer.Deserialize(callbackJson); } + /// + /// 反序列化得到微信支付回调通知事件模型对象。 + /// + /// + /// + /// + public static TEvent DeserializeEvent(this WechatTenpayClient client, string callbackXml) + where TEvent : WechatTenpayEvent, new() + { + if (client == null) throw new ArgumentNullException(nameof(client)); + if (callbackXml == null) throw new ArgumentNullException(callbackXml); + + string callbackJson = Utilities.XmlUtility.ConvertToJson(callbackXml); + return client.JsonSerializer.Deserialize(callbackJson); + } + /// /// 返回序列化并解密事件数据中被加密的信息。 /// @@ -36,11 +52,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2 if (client == null) throw new ArgumentNullException(nameof(client)); if (callback == null) throw new ArgumentNullException(nameof(callback)); - string key = Utilities.MD5Utility.Hash(client.Credentials.MerchantSecret).ToLower(); string plainJson; try { + string key = Utilities.MD5Utility.Hash(client.Credentials.MerchantSecret).ToLower(); string plainXml = Utilities.AESUtility.DecryptWithECB( encodingKey: Convert.ToBase64String(Encoding.UTF8.GetBytes(key)), encodingCipherText: callback.EncryptedRequestInfo!