diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageSubscribeExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageSubscribeExtensions.cs index 257b34a4..79ee29c9 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageSubscribeExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageSubscribeExtensions.cs @@ -14,8 +14,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /cgi-bin/message/subscribe/bizsend 接口。 /// REF: https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/api.html#send%E5%8F%91%E9%80%81%E8%AE%A2%E9%98%85%E9%80%9A%E7%9F%A5 - /// REF: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html - /// REF: https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html /// /// /// @@ -32,5 +30,26 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + /// + /// 异步调用 [POST] /cgi-bin/message/subscribe/send 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html + /// REF: https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinMessageSubscribeSendAsync(this WechatApiClient client, Models.CgibinMessageSubscribeSendRequest 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 + .CreateRequest(request, HttpMethod.Post, "cgi-bin", "message", "subscribe", "send") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendRequest.cs index 1cbf8ba3..de65071b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendRequest.cs @@ -71,6 +71,6 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("data")] [System.Text.Json.Serialization.JsonPropertyName("data")] - public IDictionary? Data { get; set; } + public IDictionary Data { get; set; } = new Dictionary(); } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeSendRequest.cs new file mode 100644 index 00000000..8493e07a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeSendRequest.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/subscribe/send 接口的请求。 + /// + public class CgibinMessageSubscribeSendRequest : WechatApiRequest + { + public static class Types + { + public class DataItem + { + /// + /// 获取或设置消息内容文本。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string Value { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置接收消息的用户 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("touser")] + [System.Text.Json.Serialization.JsonPropertyName("touser")] + public string ToUserOpenId { get; set; } = string.Empty; + + /// + /// 获取或设置订阅消息模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("template_id")] + [System.Text.Json.Serialization.JsonPropertyName("template_id")] + public string TemplateId { get; set; } = string.Empty; + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("page")] + [System.Text.Json.Serialization.JsonPropertyName("page")] + public string? MiniProgramPagePath { get; set; } + + /// + /// 获取或设置小程序类型。 + /// + [Newtonsoft.Json.JsonProperty("miniprogram_state")] + [System.Text.Json.Serialization.JsonPropertyName("miniprogram_state")] + public string? MiniProgramState { get; set; } + + /// + /// 获取或设置消息正文。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public IDictionary Data { get; set; } = new Dictionary(); + + /// + /// 获取或设置进入小程序的语言类型。 + /// + [Newtonsoft.Json.JsonProperty("lang")] + [System.Text.Json.Serialization.JsonPropertyName("lang")] + public string? Language { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeSendResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeSendResponse.cs new file mode 100644 index 00000000..2aa2b22e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageSubscribe/CgibinMessageSubscribeSendResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/message/subscribe/send 接口的响应。 + /// + public class CgibinMessageSubscribeSendResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingPartnerships/QueryMarketingPartnershipsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingPartnerships/QueryMarketingPartnershipsRequest.cs index b27f4925..872759a5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingPartnerships/QueryMarketingPartnershipsRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MarketingPartnerships/QueryMarketingPartnershipsRequest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; +/* @codestyle-disable no-jsonable-property-in-get */ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models { ///