diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageWxopenExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageWxopenExtensions.cs
index c40c3f5d..788dd2a9 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageWxopenExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinMessageWxopenExtensions.cs
@@ -11,6 +11,26 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
{
public static class WechatApiClientExecuteCgibinMessageWxopenExtensions
{
+ ///
+ /// 异步调用 [POST] /cgi-bin/message/wxopen/template/uniform_send 接口。
+ /// REF: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/uniform-message/uniformMessage.send.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinMessageWxopenTemplateUniformSendAsync(this WechatApiClient client, Models.CgibinMessageWxopenTemplateUniformSendRequest 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", "wxopen", "template", "uniform_send")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
///
/// 异步调用 [POST] /cgi-bin/message/wxopen/activityid/create 接口。
/// REF: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/updatable-message/updatableMessage.createActivityId.html
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendRequest.cs
new file mode 100644
index 00000000..50f06ce9
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendRequest.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/message/wxopen/template/uniform_send 接口的请求。
+ ///
+ public class CgibinMessageWxopenTemplateUniformSendRequest : WechatApiRequest
+ {
+ public static class Types
+ {
+ public class MpTemplateMessage
+ {
+ public static class Types
+ {
+ public class MiniProgram : CgibinMessageTemplateSendRequest.Types.MiniProgram
+ {
+ }
+
+ public class DataItem : CgibinMessageTemplateSendRequest.Types.DataItem
+ {
+ }
+ }
+
+ ///
+ /// 获取或设置公众号 AppId。
+ ///
+ [Newtonsoft.Json.JsonProperty("appid")]
+ [System.Text.Json.Serialization.JsonPropertyName("appid")]
+ public string AppId { 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("url")]
+ [System.Text.Json.Serialization.JsonPropertyName("url")]
+ public string? Url { get; set; }
+
+ ///
+ /// 获取或设置点击消息跳转的小程序信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("miniprogram")]
+ [System.Text.Json.Serialization.JsonPropertyName("miniprogram")]
+ public Types.MiniProgram? MiniProgram { get; set; }
+
+ ///
+ /// 获取或设置消息正文。
+ ///
+ [Newtonsoft.Json.JsonProperty("data")]
+ [System.Text.Json.Serialization.JsonPropertyName("data")]
+ public IDictionary? Data { get; set; }
+ }
+ }
+
+ ///
+ /// 获取或设置接收消息的用户 OpenId。
+ ///
+ [Newtonsoft.Json.JsonProperty("touser")]
+ [System.Text.Json.Serialization.JsonPropertyName("touser")]
+ public string ToUserOpenId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置公众号模板消息信息。
+ ///
+ [Newtonsoft.Json.JsonProperty("mp_template_msg")]
+ [System.Text.Json.Serialization.JsonPropertyName("mp_template_msg")]
+ public Types.MpTemplateMessage? MpTemplateMessage { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendResponse.cs
new file mode 100644
index 00000000..da9639a7
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMessageWxopen/CgibinMessageWxopenTemplateUniformSendResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/message/wxopen/template/uniform_send 接口的响应。
+ ///
+ public class CgibinMessageWxopenTemplateUniformSendResponse : WechatApiResponse
+ {
+ }
+}