diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs index 7811bbab..9d18fbcf 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs @@ -127,6 +127,54 @@ namespace SKIT.FlurlHttpClient.Wechat.Api } #endregion + #region FamousBrand + /// + /// 异步调用 [POST] /wxa/sec/famousbrand/apply 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteWxaSecFamousBrandApplyAsync(this WechatApiClient client, Models.WxaSecFamousBrandApplyRequest 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", "sec", "famousbrand", "apply") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /wxa/sec/famousbrand/get_status 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteWxaSecFamousBrandGetStatusAsync(this WechatApiClient client, Models.WxaSecFamousBrandGetStatusRequest 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", "sec", "famousbrand", "get_status") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + #region Order /// /// 异步调用 [POST] /wxa/sec/order/upload_shipping_info 接口。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandApplyRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandApplyRequest.cs new file mode 100644 index 00000000..35db31df --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandApplyRequest.cs @@ -0,0 +1,85 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/famousbrand/apply 接口的请求。 + /// + public class WxaSecFamousBrandApplyRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class Application + { + public static class Types + { + public class AuditInfo + { + /// + /// 获取或设置品牌名称。 + /// + [Newtonsoft.Json.JsonProperty("brand_name")] + [System.Text.Json.Serialization.JsonPropertyName("brand_name")] + public string BrandName { get; set; } = string.Empty; + + /// + /// 获取或设置品牌类型。 + /// + [Newtonsoft.Json.JsonProperty("brand_type")] + [System.Text.Json.Serialization.JsonPropertyName("brand_type")] + public int BrandType { get; set; } + + /// + /// 获取或设置电商平台旗舰店。 + /// + [Newtonsoft.Json.JsonProperty("flagship_in_which_ec_platform")] + [System.Text.Json.Serialization.JsonPropertyName("flagship_in_which_ec_platform")] + public string? FlagshipInWhichECPlatform { get; set; } + + /// + /// 获取或设置电商平台旗舰店佐证材料 MediaId 列表。 + /// + [Newtonsoft.Json.JsonProperty("ec_platform_proof_list")] + [System.Text.Json.Serialization.JsonPropertyName("ec_platform_proof_list")] + public IList? ECPlatformProofMediaIdList { get; set; } + + /// + /// 获取或设置其他补充说明材料 MediaId 列表。 + /// + [Newtonsoft.Json.JsonProperty("other_material_list")] + [System.Text.Json.Serialization.JsonPropertyName("other_material_list")] + public IList? OtherMaterialMediaIdList { get; set; } + + /// + /// 获取或设置有关部门认定的驰名商标佐证材料 MediaId 列表。 + /// + [Newtonsoft.Json.JsonProperty("authority_certified_proof_list")] + [System.Text.Json.Serialization.JsonPropertyName("authority_certified_proof_list")] + public IList? AuthorityCertifiedProofMediaIdList { get; set; } + } + } + + /// + /// 获取或设置品牌申请类型。 + /// + [Newtonsoft.Json.JsonProperty("apply_for")] + [System.Text.Json.Serialization.JsonPropertyName("apply_for")] + public int ApplyForType { get; set; } + + /// + /// 获取或设置品牌信息。 + /// + [Newtonsoft.Json.JsonProperty("audit_info")] + [System.Text.Json.Serialization.JsonPropertyName("audit_info")] + public Types.AuditInfo? AuditInfo { get; set; } + } + } + + /// + /// 获取或设置申请信息。 + /// + [Newtonsoft.Json.JsonProperty("Application")] + [System.Text.Json.Serialization.JsonPropertyName("Application")] + public Types.Application Application { get; set; } = new Types.Application(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandApplyResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandApplyResponse.cs new file mode 100644 index 00000000..3d0d46ee --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandApplyResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/famousbrand/apply 接口的响应。 + /// + public class WxaSecFamousBrandApplyResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusRequest.cs new file mode 100644 index 00000000..9221035a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/famousbrand/get_status 接口的请求。 + /// + public class WxaSecFamousBrandGetStatusRequest : WechatApiRequest, IInferable + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusResponse.cs new file mode 100644 index 00000000..3785dc1c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusResponse.cs @@ -0,0 +1,72 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/famousbrand/get_status 接口的响应。 + /// + public class WxaSecFamousBrandGetStatusResponse : WechatApiResponse + { + public static class Types + { + public class Progress + { + /// + /// 获取或设置申请状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } + + public class Application + { + public static class Types + { + public class AuditInfo + { + /// + /// 获取或设置审核原因。 + /// + [Newtonsoft.Json.JsonProperty("audit_reason")] + [System.Text.Json.Serialization.JsonPropertyName("audit_reason")] + public string? AuditReason { get; set; } + } + } + + /// + /// 获取或设置品牌申请类型。 + /// + [Newtonsoft.Json.JsonProperty("apply_for")] + [System.Text.Json.Serialization.JsonPropertyName("apply_for")] + public int ApplyForType { get; set; } + + /// + /// 获取或设置审核信息。 + /// + [Newtonsoft.Json.JsonProperty("audit_info")] + [System.Text.Json.Serialization.JsonPropertyName("audit_info")] + public Types.AuditInfo? AuditInfo { get; set; } + + /// + /// 获取或设置申请状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + } + } + + /// + /// 获取或设置申请信息。 + /// + [Newtonsoft.Json.JsonProperty("progress")] + [System.Text.Json.Serialization.JsonPropertyName("progress")] + public Types.Progress Progress { get; set; } = default!; + + /// + /// 获取或设置申请信息。 + /// + [Newtonsoft.Json.JsonProperty("application")] + [System.Text.Json.Serialization.JsonPropertyName("application")] + public Types.Application Application { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/FamousBrand/WxaSecFamousBrandApplyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/FamousBrand/WxaSecFamousBrandApplyRequest.json new file mode 100644 index 00000000..d9028c40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/FamousBrand/WxaSecFamousBrandApplyRequest.json @@ -0,0 +1,19 @@ +{ + "Application": { + "apply_for": 2, + "audit_info": { + "brand_name": "我的小店", + "brand_type": 4, + "flagship_in_which_ec_platform": "淘宝", + "ec_platform_proof_list": [ + "R7oH3VuVWboktgKh3QABx2UqbeNoUDJzLdDjLVvi4kLEOtkCTAGmX9g8-xxxxxx" + ], + "other_material_list": [ + "R7oH3VuVWboktgKh3QABx2UqbeNoUDJzLdDjLVvi4kLEOtkCTAGmX9g8-xxxxxx" + ], + "authority_certified_proof_list": [ + "R7oH3VuVWboktgKh3QABx2UqbeNoUDJzLdDjLVvi4kLEOtkCTAGmX9g8-xxxxxx" + ] + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusResponse.json new file mode 100644 index 00000000..01bfa910 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/FamousBrand/WxaSecFamousBrandGetStatusResponse.json @@ -0,0 +1,14 @@ +{ + "errcode": 0, + "errmsg": "ok", + "progress": { + "status": 0 + }, + "application": { + "apply_for": 1, + "audit_info": { + "audit_reason": "" + }, + "status": 0 + } +}