diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs index 0d8406f8..9a0dc26a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs @@ -13,7 +13,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities InnerReplacePropertyStringValue(ref obj, replacement, null); } - private static void InnerReplacePropertyStringValue(ref T obj, ReplacePropertyStringValueReplacement replacement, PropertyInfo? currentProp) { if (obj == null) throw new ArgumentNullException(nameof(obj)); @@ -25,7 +24,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities if (objType.IsArray || obj is IList || obj is IDictionary) { - EachCollectionProperty(ref obj, objType, replacement, null); + InnerReplaceEachCollectionPropertyStringValue(ref obj, objType, replacement, null); } else { @@ -55,12 +54,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities object? value = childProp.GetValue(obj, null); if (value is null) continue; - EachCollectionProperty(ref value, propType, replacement, childProp); + + InnerReplaceEachCollectionPropertyStringValue(ref value, propType, replacement, childProp); } } } } - private static void EachCollectionProperty(ref T obj, Type objType, ReplacePropertyStringValueReplacement replacement, PropertyInfo? currentProp) + + private static void InnerReplaceEachCollectionPropertyStringValue(ref T obj, Type objType, ReplacePropertyStringValueReplacement replacement, PropertyInfo? currentProp) { if (objType.IsArray) { diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs index 8b63c899..1e754ddd 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs @@ -42,5 +42,26 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests Assert.Equal(MockText, data.Account); Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.Name)); } + + [Fact(DisplayName = "加密请求中的敏感数据([POST] /profitsharing/orders)")] + public void DecryptResponseSensitiveProperty_CreateProfitSharingOrderRequest() + { + var mock = new Models.CreateProfitSharingOrderRequest() + { + ReceiverList = new List() + { + new Models.CreateProfitSharingOrderRequest.Types.Receiver() + { + Account = MockText, + Name = MockText + } + } + }; + var data = MockClientInstance.Value.EncryptRequestSensitiveProperty(mock); + + Assert.Equal(RSA_CERTSN, data.WechatpayCertSerialNumber); + Assert.Equal(MockText, data.ReceiverList[0].Account); + Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.ReceiverList[0].Name)); + } } }