From 6760c959c1ba25fe550d9a10192b847e4e78a97f Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Thu, 20 Jun 2024 16:45:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E5=B0=8F?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E6=B8=B8=E6=88=8F=E5=86=85=E5=AE=B9=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WechatApi/Basic_ModelDefinition.md | 8 +- .../Events/WxaSecurity/WxaMediaCheckEvent.cs | 3 +- ...WechatApiClientExecuteWxaGameExtensions.cs | 52 ++++++++++- .../Wxa/Security/WxaMediaCheckRequest.cs | 16 ++-- .../WxaMessageSecurityCheckRequest.cs | 16 ++-- .../WxaMessageSecurityCheckResponse.cs | 4 +- ...WxaGameContentSpamMediaCheckSyncRequest.cs | 44 ++++++++++ ...xaGameContentSpamMediaCheckSyncResponse.cs | 87 +++++++++++++++++++ ...eContentSpamMessageSecurityCheckRequest.cs | 44 ++++++++++ ...ContentSpamMessageSecurityCheckResponse.cs | 46 ++++++++++ .../WxaGamePaymentRequestBase.cs} | 2 +- .../{ => Payment}/WxaGameCancelPayRequest.cs | 2 +- .../{ => Payment}/WxaGameCancelPayResponse.cs | 0 .../{ => Payment}/WxaGameGetBalanceRequest.cs | 2 +- .../WxaGameGetBalanceResponse.cs | 0 .../{ => Payment}/WxaGamePayRequest.cs | 2 +- .../{ => Payment}/WxaGamePayResponse.cs | 0 .../{ => Payment}/WxaGamePresentRequest.cs | 2 +- .../{ => Payment}/WxaGamePresentResponse.cs | 0 .../WxaGameQueryOrderInfoRequest.cs | 2 +- .../WxaGameQueryOrderInfoResponse.cs | 0 ...aGameContentSpamMediaCheckSyncRequest.json | 7 ++ ...GameContentSpamMediaCheckSyncResponse.json | 18 ++++ ...ontentSpamMessageSecurityCheckRequest.json | 6 ++ ...ntentSpamMessageSecurityCheckResponse.json | 27 ++++++ .../WxaGameCancelPayRequest.json | 0 .../WxaGameCancelPayResponse.json | 0 .../WxaGameGetBalanceRequest.json | 0 .../WxaGameGetBalanceResponse.json | 0 .../{ => Payment}/WxaGamePayRequest.json | 0 .../{ => Payment}/WxaGamePayResponse.json | 0 .../{ => Payment}/WxaGamePresentRequest.json | 0 .../{ => Payment}/WxaGamePresentResponse.json | 0 .../WxaGameQueryOrderInfoRequest.json | 0 .../WxaGameQueryOrderInfoResponse.json | 0 35 files changed, 358 insertions(+), 32 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.cs rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{Abstractions/WxaGameRequestBase.cs => Payment/Abstractions/WxaGamePaymentRequestBase.cs} (97%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGameCancelPayRequest.cs (89%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGameCancelPayResponse.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGameGetBalanceRequest.cs (68%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGameGetBalanceResponse.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGamePayRequest.cs (92%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGamePayResponse.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGamePresentRequest.cs (86%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGamePresentResponse.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGameQueryOrderInfoRequest.cs (85%) rename src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/{ => Payment}/WxaGameQueryOrderInfoResponse.cs (100%) create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.json rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGameCancelPayRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGameCancelPayResponse.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGameGetBalanceRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGameGetBalanceResponse.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGamePayRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGamePayResponse.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGamePresentRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGamePresentResponse.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGameQueryOrderInfoRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/{ => Payment}/WxaGameQueryOrderInfoResponse.json (100%) diff --git a/docs/WechatApi/Basic_ModelDefinition.md b/docs/WechatApi/Basic_ModelDefinition.md index cd30f5ad..f9a417e7 100644 --- a/docs/WechatApi/Basic_ModelDefinition.md +++ b/docs/WechatApi/Basic_ModelDefinition.md @@ -109,10 +109,10 @@ | | 微信 API | 备注 | | :-: | :----------: | :--: | -| √ | 基础功能 | | -| √ | OpenAPI 管理 | | +| √ | 虚拟支付 | | +| √ | 接口调用凭证 | | | √ | 登录 | | -| √ | 内容安全 | | +| √ | 游戏内容安全 | | | √ | 开放数据 | | √ | 动态消息 | | | √ | 小程序码 | | @@ -125,11 +125,9 @@ | √ | 硬件设备 | | | √ | 网络 | | | √ | 帧同步 | | -| √ | 手机号 | | | √ | 安全风控 | | | √ | Short Link | | | √ | 订阅消息 | | -| √ | 虚拟支付 | | diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaSecurity/WxaMediaCheckEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaSecurity/WxaMediaCheckEvent.cs index 9d5593d4..79ed813a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaSecurity/WxaMediaCheckEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Events/WxaSecurity/WxaMediaCheckEvent.cs @@ -74,7 +74,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events } } - /// /// 获取或设置微信商户号。 /// @@ -101,7 +100,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events public string AppId { get; set; } = default!; /// - /// 获取或设置任务 ID。 + /// 获取或设置请求跟踪标识。 /// [Newtonsoft.Json.JsonProperty("trace_id")] [System.Text.Json.Serialization.JsonPropertyName("trace_id")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaGameExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaGameExtensions.cs index 7b4a7a89..b448d830 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaGameExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaGameExtensions.cs @@ -9,8 +9,57 @@ namespace SKIT.FlurlHttpClient.Wechat.Api { public static class WechatApiClientExecuteWxaGameExtensions { + #region ContentSpam + /// + /// 异步调用 [POST] /wxa/game/content_spam/msg_sec_check 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteWxaGameContentSpamMessageSecurityCheckAsync(this WechatApiClient client, Models.WxaGameContentSpamMessageSecurityCheckRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "wxa", "game", "content_spam", "msg_sec_check") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /wxa/game/content_spam/media_check_sync 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteWxaGameContentSpamMediaCheckSyncAsync(this WechatApiClient client, Models.WxaGameContentSpamMediaCheckSyncRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "wxa", "game", "content_spam", "media_check_sync") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region Payment private static T PreprocessRequest(WechatApiClient client, ref T request) - where T : Models.WxaGameRequestBase, new() + where T : Models.WxaGamePaymentRequestBase, new() { if (client is null) throw new ArgumentNullException(nameof(request)); if (request is null) throw new ArgumentNullException(nameof(request)); @@ -207,5 +256,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMediaCheckRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMediaCheckRequest.cs index 159c3712..a3f27ca5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMediaCheckRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMediaCheckRequest.cs @@ -1,10 +1,17 @@ -namespace SKIT.FlurlHttpClient.Wechat.Api.Models +namespace SKIT.FlurlHttpClient.Wechat.Api.Models { /// /// 表示 [POST] /wxa/media_check_async 接口的请求。 /// public class WxaMediaCheckRequest : WechatApiRequest, IInferable { + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string? OpenId { get; set; } + /// /// 获取或设置多媒体 URL。 /// @@ -32,12 +39,5 @@ [Newtonsoft.Json.JsonProperty("scene")] [System.Text.Json.Serialization.JsonPropertyName("scene")] public int? Scene { get; set; } - - /// - /// 获取或设置用户 OpenId。 - /// - [Newtonsoft.Json.JsonProperty("openid")] - [System.Text.Json.Serialization.JsonPropertyName("openid")] - public string? OpenId { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckRequest.cs index b67dbc97..f3c4a896 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckRequest.cs @@ -1,10 +1,17 @@ -namespace SKIT.FlurlHttpClient.Wechat.Api.Models +namespace SKIT.FlurlHttpClient.Wechat.Api.Models { /// /// 表示 [POST] /wxa/msg_sec_check 接口的请求。 /// public class WxaMessageSecurityCheckRequest : WechatApiRequest, IInferable { + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string? OpenId { get; set; } + /// /// 获取或设置用户昵称。 /// @@ -46,12 +53,5 @@ [Newtonsoft.Json.JsonProperty("scene")] [System.Text.Json.Serialization.JsonPropertyName("scene")] public int? Scene { get; set; } - - /// - /// 获取或设置用户 OpenId。 - /// - [Newtonsoft.Json.JsonProperty("openid")] - [System.Text.Json.Serialization.JsonPropertyName("openid")] - public string? OpenId { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckResponse.cs index 45665114..ebbc7a33 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/Wxa/Security/WxaMessageSecurityCheckResponse.cs @@ -1,4 +1,4 @@ -namespace SKIT.FlurlHttpClient.Wechat.Api.Models +namespace SKIT.FlurlHttpClient.Wechat.Api.Models { /// /// 表示 [POST] /wxa/msg_sec_check 接口的响应。 @@ -78,7 +78,7 @@ } /// - /// 获取或设置任务 ID。 + /// 获取或设置请求跟踪标识。 /// [Newtonsoft.Json.JsonProperty("trace_id")] [System.Text.Json.Serialization.JsonPropertyName("trace_id")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.cs new file mode 100644 index 00000000..262706be --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.cs @@ -0,0 +1,44 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/game/content_spam/media_check_sync 接口的请求。 + /// + public class WxaGameContentSpamMediaCheckSyncRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置多媒体 URL。 + /// + [Newtonsoft.Json.JsonProperty("media_url")] + [System.Text.Json.Serialization.JsonPropertyName("media_url")] + public string MediaUrl { get; set; } = string.Empty; + + /// + /// 获取或设置多媒体类型。 + /// + [Newtonsoft.Json.JsonProperty("media_type")] + [System.Text.Json.Serialization.JsonPropertyName("media_type")] + public int MediaType { get; set; } + + /// + /// 获取或设置版本号。 + /// 默认值:2 + /// + [Newtonsoft.Json.JsonProperty("version")] + [System.Text.Json.Serialization.JsonPropertyName("version")] + public int Version { get; set; } = 2; + + /// + /// 获取或设置场景值。 + /// + [Newtonsoft.Json.JsonProperty("scene")] + [System.Text.Json.Serialization.JsonPropertyName("scene")] + public int Scene { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.cs new file mode 100644 index 00000000..cbc8222f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.cs @@ -0,0 +1,87 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/game/content_spam/media_check_sync 接口的响应。 + /// + public class WxaGameContentSpamMediaCheckSyncResponse : WechatApiResponse + { + public static class Types + { + public class Result + { + /// + /// 获取或设置建议类型。 + /// + [Newtonsoft.Json.JsonProperty("suggest")] + [System.Text.Json.Serialization.JsonPropertyName("suggest")] + public string SuggestType { get; set; } = default!; + + /// + /// 获取或设置命中标签枚举值。 + /// + [Newtonsoft.Json.JsonProperty("label")] + [System.Text.Json.Serialization.JsonPropertyName("label")] + public int Label { get; set; } + } + + public class Detail + { + /// + /// 获取或设置错误码。 + /// + [Newtonsoft.Json.JsonProperty("errcode")] + [System.Text.Json.Serialization.JsonPropertyName("errcode")] + public int ErrorCode { get; set; } + + /// + /// 获取或设置策略类型。 + /// + [Newtonsoft.Json.JsonProperty("strategy")] + [System.Text.Json.Serialization.JsonPropertyName("strategy")] + public string Strategy { get; set; } = default!; + + /// + /// 获取或设置建议类型。 + /// + [Newtonsoft.Json.JsonProperty("suggest")] + [System.Text.Json.Serialization.JsonPropertyName("suggest")] + public string? SuggestType { get; set; } + + /// + /// 获取或设置命中标签枚举值。 + /// + [Newtonsoft.Json.JsonProperty("label")] + [System.Text.Json.Serialization.JsonPropertyName("label")] + public int? Label { get; set; } + + /// + /// 获取或设置置信度。 + /// + [Newtonsoft.Json.JsonProperty("prob")] + [System.Text.Json.Serialization.JsonPropertyName("prob")] + public int? Probability { get; set; } + } + } + + /// + /// 获取或设置请求跟踪标识。 + /// + [Newtonsoft.Json.JsonProperty("trace_id")] + [System.Text.Json.Serialization.JsonPropertyName("trace_id")] + public string TraceId { get; set; } = default!; + + /// + /// 获取或设置综合结果信息。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public Types.Result? Result { get; set; } + + /// + /// 获取或设置详细结果列表。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail[]? DetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.cs new file mode 100644 index 00000000..3beabd31 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.cs @@ -0,0 +1,44 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/game/content_spam/msg_sec_check 接口的请求。 + /// + public class WxaGameContentSpamMessageSecurityCheckRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置用户昵称。 + /// + [Newtonsoft.Json.JsonProperty("nickname")] + [System.Text.Json.Serialization.JsonPropertyName("nickname")] + public string? Nickname { get; set; } + + /// + /// 获取或设置文本内容。 + /// + [Newtonsoft.Json.JsonProperty("content")] + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } = string.Empty; + + /// + /// 获取或设置版本号。 + /// 默认值:2 + /// + [Newtonsoft.Json.JsonProperty("version")] + [System.Text.Json.Serialization.JsonPropertyName("version")] + public int Version { get; set; } = 2; + + /// + /// 获取或设置场景值。 + /// + [Newtonsoft.Json.JsonProperty("scene")] + [System.Text.Json.Serialization.JsonPropertyName("scene")] + public int Scene { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.cs new file mode 100644 index 00000000..801052ca --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.cs @@ -0,0 +1,46 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/game/content_spam/msg_sec_check 接口的响应。 + /// + public class WxaGameContentSpamMessageSecurityCheckResponse : WechatApiResponse + { + public static class Types + { + public class Result : WxaMessageSecurityCheckResponse.Types.Result + { + /// + /// 获取或设置替换后的文本。 + /// + [Newtonsoft.Json.JsonProperty("replaced_content")] + [System.Text.Json.Serialization.JsonPropertyName("replaced_content")] + public string ReplacedContent { get; set; } = default!; + } + + public class Detail : WxaMessageSecurityCheckResponse.Types.Detail + { + } + } + + /// + /// 获取或设置请求跟踪标识。 + /// + [Newtonsoft.Json.JsonProperty("trace_id")] + [System.Text.Json.Serialization.JsonPropertyName("trace_id")] + public string TraceId { get; set; } = default!; + + /// + /// 获取或设置综合结果信息。 + /// + [Newtonsoft.Json.JsonProperty("result")] + [System.Text.Json.Serialization.JsonPropertyName("result")] + public Types.Result? Result { get; set; } + + /// + /// 获取或设置详细结果列表。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail[]? DetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Abstractions/WxaGameRequestBase.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/Abstractions/WxaGamePaymentRequestBase.cs similarity index 97% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Abstractions/WxaGameRequestBase.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/Abstractions/WxaGamePaymentRequestBase.cs index 4589d2b1..56758b95 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Abstractions/WxaGameRequestBase.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/Abstractions/WxaGamePaymentRequestBase.cs @@ -1,6 +1,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models { - public abstract class WxaGameRequestBase : WechatApiRequest + public abstract class WxaGamePaymentRequestBase : WechatApiRequest { /// /// 获取或设置虚拟支付应用 ID。如果不指定将使用构造 时的 参数。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameCancelPayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameCancelPayRequest.cs similarity index 89% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameCancelPayRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameCancelPayRequest.cs index 3775fa37..5a380efa 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameCancelPayRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameCancelPayRequest.cs @@ -3,7 +3,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// /// 表示 [POST] /wxa/game/cancelpay 接口的请求。 /// - public class WxaGameCancelPayRequest : WxaGameRequestBase, IInferable + public class WxaGameCancelPayRequest : WxaGamePaymentRequestBase, IInferable { /// /// 获取或设置扣除游戏币的订单号。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameCancelPayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameCancelPayResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameCancelPayResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameCancelPayResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameGetBalanceRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameGetBalanceRequest.cs similarity index 68% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameGetBalanceRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameGetBalanceRequest.cs index af53e918..7ac80941 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameGetBalanceRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameGetBalanceRequest.cs @@ -3,7 +3,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// /// 表示 [POST] /wxa/game/getbalance 接口的请求。 /// - public class WxaGameGetBalanceRequest : WxaGameRequestBase, IInferable + public class WxaGameGetBalanceRequest : WxaGamePaymentRequestBase, IInferable { protected internal override string GetRequestPath() { diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameGetBalanceResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameGetBalanceResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameGetBalanceResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameGetBalanceResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePayRequest.cs similarity index 92% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePayRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePayRequest.cs index d67b201b..5cc1868e 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePayRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePayRequest.cs @@ -3,7 +3,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// /// 表示 [POST] /wxa/game/pay 接口的请求。 /// - public class WxaGamePayRequest : WxaGameRequestBase, IInferable + public class WxaGamePayRequest : WxaGamePaymentRequestBase, IInferable { /// /// 获取或设置扣除游戏币的订单号。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePayResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePayResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePayResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePresentRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePresentRequest.cs similarity index 86% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePresentRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePresentRequest.cs index 1ba78d67..9488639c 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePresentRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePresentRequest.cs @@ -3,7 +3,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// /// 表示 [POST] /wxa/game/present 接口的请求。 /// - public class WxaGamePresentRequest : WxaGameRequestBase, IInferable + public class WxaGamePresentRequest : WxaGamePaymentRequestBase, IInferable { /// /// 获取或设置赠送游戏币的订单号。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePresentResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePresentResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGamePresentResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGamePresentResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameQueryOrderInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameQueryOrderInfoRequest.cs similarity index 85% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameQueryOrderInfoRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameQueryOrderInfoRequest.cs index 00a167bf..7b487713 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameQueryOrderInfoRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameQueryOrderInfoRequest.cs @@ -3,7 +3,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// /// 表示 [POST] /wxa/game/queryorderinfo 接口的请求。 /// - public class WxaGameQueryOrderInfoRequest : WxaGameRequestBase, IInferable + public class WxaGameQueryOrderInfoRequest : WxaGamePaymentRequestBase, IInferable { /// /// 获取或设置外部订单号。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameQueryOrderInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameQueryOrderInfoResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/WxaGameQueryOrderInfoResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaGame/Payment/WxaGameQueryOrderInfoResponse.cs diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.json new file mode 100644 index 00000000..56d7c619 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncRequest.json @@ -0,0 +1,7 @@ +{ + "openid": "OPENID", + "scene": 1, + "version": 2, + "media_type": 2, + "media_url": "https://res.wx.qq.com/wxdoc/dist/assets/img/3-3.9b4ebdf8.png" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.json new file mode 100644 index 00000000..856e7efe --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMediaCheckSyncResponse.json @@ -0,0 +1,18 @@ +{ + "errcode": 0, + "errmsg": "ok", + "trace_id": "54bf091a-821t3794-237p1237", + "result": { + "suggest": "pass", + "label": 100 + }, + "detail": [ + { + "strategy": "minigame_content_model", + "errcode": 0, + "suggest": "pass", + "label": 100, + "prob": 90 + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.json new file mode 100644 index 00000000..88a0c7c5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckRequest.json @@ -0,0 +1,6 @@ +{ + "openid": "OPENID", + "scene": 5, + "version": 2, + "content": "最新队换马嗖红胡子攻略团" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.json new file mode 100644 index 00000000..3112339b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/ContentSpam/WxaGameContentSpamMessageSecurityCheckResponse.json @@ -0,0 +1,27 @@ +{ + "errcode": 0, + "errmsg": "ok", + "trace_id": "54bf091a-821t3794-237p1237", + "result": { + "suggest": "risky", + "label": 10001, + "replaced_content": "最新***嗖红胡子攻略团" + }, + "detail": [ + { + "strategy": "minigame_content_model", + "errcode": 0, + "suggest": "risky", + "label": 10001, + "prob": 90 + }, + { + "strategy": "keyword", + "errcode": 0, + "suggest": "risky", + "label": 10001, + "level": 90, + "keyword": "命中的关键词1" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameCancelPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameCancelPayRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameCancelPayRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameCancelPayRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameCancelPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameCancelPayResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameCancelPayResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameCancelPayResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameGetBalanceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameGetBalanceRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameGetBalanceRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameGetBalanceRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameGetBalanceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameGetBalanceResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameGetBalanceResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameGetBalanceResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePayRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePayRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePayRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePayResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePayResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePayResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePresentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePresentRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePresentRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePresentRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePresentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePresentResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGamePresentResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGamePresentResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameQueryOrderInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameQueryOrderInfoRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameQueryOrderInfoRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameQueryOrderInfoRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameQueryOrderInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameQueryOrderInfoResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/WxaGameQueryOrderInfoResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaGame/Payment/WxaGameQueryOrderInfoResponse.json