diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs
index 46bc33fd..c7b52c10 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaBusinessExtensions.cs
@@ -263,7 +263,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
#region Runtime
///
/// 异步调用 [POST] /wxa/business/runtime/adddevice 接口。
- /// REF: https://developers.weixin.qq.com/doc/oplatform/Miniprogram_Frame/deviceId.html
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Miniprogram_Frame/api/backend/addDevice.html
///
///
///
@@ -280,6 +280,26 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
+
+ ///
+ /// 异步调用 [POST] /wxa/business/runtime/pushappmsg 接口。
+ /// REF: https://developers.weixin.qq.com/doc/oplatform/Miniprogram_Frame/api/backend/pushAppMsg.html
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteWxaBusinessRuntimePushAppMessageAsync(this WechatApiClient client, Models.WxaBusinessRuntimePushAppMessageRequest 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, "wxa", "business", "runtime", "pushappmsg")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
#endregion
#region Internet
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/IInferable.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/IInferable.cs
similarity index 100%
rename from src/SKIT.FlurlHttpClient.Wechat.Api/Models/IInferable.cs
rename to src/SKIT.FlurlHttpClient.Wechat.Api/IInferable.cs
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageRequest.cs
new file mode 100644
index 00000000..7c297bce
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageRequest.cs
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /wxa/business/runtime/pushappmsg 接口的请求。
+ ///
+ public class WxaBusinessRuntimePushAppMessageRequest : WechatApiRequest, IInferable
+ {
+ ///
+ /// 获取或设置消息内容。
+ ///
+ [Newtonsoft.Json.JsonProperty("msg")]
+ [System.Text.Json.Serialization.JsonPropertyName("msg")]
+ public string Message { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置产品中文名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("push_token")]
+ [System.Text.Json.Serialization.JsonPropertyName("push_token")]
+ public string PushToken { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageResponse.cs
new file mode 100644
index 00000000..eb906f5b
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Api.Models
+{
+ ///
+ /// 表示 [POST] /wxa/business/runtime/pushappmsg 接口的响应。
+ ///
+ public class WxaBusinessRuntimePushAppMessageResponse : WechatApiResponse
+ {
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageRequest.json
new file mode 100644
index 00000000..6902e463
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimePushAppMessageRequest.json
@@ -0,0 +1,4 @@
+{
+ "msg": "your msg",
+ "push_token": "your push token"
+}