diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardClick.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardClick.cs
deleted file mode 100644
index 71f8a11a6d..0000000000
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardClick.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-/*----------------------------------------------------------------
- Copyright (C) 2024 Senparc
-
- 文件名:RequestMessageEvent_TemplateCardClick.cs
- 文件功能描述:模板卡片点击回调事件
-
-
- 创建标识:LofyLiu - 20240315
-----------------------------------------------------------------*/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Senparc.Weixin.Work.Entities
-{
- public class RequestMessageEvent_TemplateCardClick : RequestMessageEventBase, IRequestMessageEventBase, IRequestMessageEventKey
- {
- ///
- /// 事件类型
- ///
- public override Event Event
- {
- get { return Event.TEMPLATE_CARD_CLICK; }
- }
-
- ///
- /// 事件KEY值,与自定义菜单接口中KEY值对应
- ///
- public string EventKey { get; set; }
- }
-}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardEvent.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardEvent.cs
new file mode 100644
index 0000000000..0da50f7092
--- /dev/null
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardEvent.cs
@@ -0,0 +1,79 @@
+/*----------------------------------------------------------------
+ Copyright (C) 2024 Senparc
+
+ 文件名:RequestMessageEvent_TemplateCardEvent.cs
+ 文件功能描述:企业微信-模板卡片事件推送
+
+
+ 创建标识:IcedMango - 20241114
+
+----------------------------------------------------------------*/
+
+using System.Collections.Generic;
+using System.Xml.Serialization;
+
+namespace Senparc.Weixin.Work.Entities
+{
+ ///
+ /// 企业微信-模板卡片事件推送
+ ///
+ public class RequestMessageEvent_TemplateCardEvent : RequestMessageEventBase, IRequestMessageEventBase, IRequestMessageEventKey
+ {
+ ///
+ /// 事件类型(template_card_event,点击模板卡片按钮)
+ ///
+ public override Event Event => Event.TEMPLATE_CARD_EVENT;
+
+ ///
+ /// 与发送模板卡片消息时指定的按钮btn:key值相同
+ ///
+ public string EventKey { get; set; }
+
+ ///
+ /// 与发送模板卡片消息时指定的task_id相同
+ ///
+ public string TaskId { get; set; }
+
+ ///
+ /// 通用模板卡片的类型
+ ///
+ public TemplateCard_CardTypeEnum CardType { get; set; }
+
+ ///
+ /// 用于调用更新卡片接口的ResponseCode,72小时内有效,且只能使用一次
+ ///
+ public string ResponseCode { get; set; }
+
+ ///
+ ///
+ ///
+ [XmlArray("SelectedItems")]
+ [XmlArrayItem("SelectedItem")]
+ public List SelectedItems { get; set; }
+ }
+
+ ///
+ /// 通用模板卡片的类型
+ ///
+ public enum TemplateCard_CardTypeEnum
+ {
+ text_notice,
+ news_notice,
+ button_interaction,
+ vote_interaction,
+ multiple_interaction
+ }
+
+ public class TemplateCard_SelectedItem
+ {
+ ///
+ /// 问题的key值
+ ///
+ [XmlElement("QuestionKey")]
+ public string QuestionKey { get; set; }
+
+ [XmlArray("OptionIds")]
+ [XmlArrayItem("OptionId")]
+ public List OptionIds { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardMenuEvent.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardMenuEvent.cs
new file mode 100644
index 0000000000..ddc049ccc3
--- /dev/null
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_TemplateCardMenuEvent.cs
@@ -0,0 +1,47 @@
+/*----------------------------------------------------------------
+ Copyright (C) 2024 Senparc
+
+ 文件名:RequestMessageEvent_TemplateCardMenuEvent.cs
+ 文件功能描述:通用模板卡片右上角菜单事件推送
+
+
+ 创建标识:IcedMango - 20241114
+
+----------------------------------------------------------------*/
+
+using System.Collections.Generic;
+using System.Xml.Serialization;
+
+namespace Senparc.Weixin.Work.Entities
+{
+ ///
+ /// 企业微信-模板卡片事件推送
+ ///
+ public class RequestMessageEvent_TemplateCardMenuEvent : RequestMessageEventBase, IRequestMessageEventBase, IRequestMessageEventKey
+ {
+ ///
+ /// 事件类型(template_card_menu_event,通用模板卡片右上角菜单事件推送)
+ ///
+ public override Event Event => Event.TEMPLATE_CARD_MENU_EVENT;
+
+ ///
+ /// 与发送模板卡片消息时指定的按钮btn:key值相同
+ ///
+ public string EventKey { get; set; }
+
+ ///
+ /// 与发送模板卡片消息时指定的task_id相同
+ ///
+ public string TaskId { get; set; }
+
+ ///
+ /// 通用模板卡片的类型
+ ///
+ public TemplateCard_CardTypeEnum CardType { get; set; }
+
+ ///
+ /// 用于调用更新卡片接口的ResponseCode,72小时内有效,且只能使用一次
+ ///
+ public string ResponseCode { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs
index ffd8e7e6bf..fdf6cc37a9 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs
@@ -60,6 +60,9 @@ GroupTaskSentStatus 枚举
修改标识:LofyLiu - 20240315
修改描述:添加枚举“模板卡片点击回调事件”
+
+ 修改标识: IcedMango - 20241114
+ 修改描述: 添加: 通用模板卡片右上角菜单事件推送; 修复不正确的通用模板卡片事件推送类型
----------------------------------------------------------------*/
using static System.Net.WebRequestMethods;
@@ -218,9 +221,14 @@ public enum Event
MSGAUDIT_NOTIFY,
///
- /// 模板卡片点击回调事件
+ /// 模板卡片事件推送
+ ///
+ TEMPLATE_CARD_EVENT,
+
+ ///
+ /// 通用模板卡片右上角菜单事件
///
- TEMPLATE_CARD_CLICK,
+ TEMPLATE_CARD_MENU_EVENT,
}
public enum TencentGender
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageContext/DefaultWorkMessageContext.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageContext/DefaultWorkMessageContext.cs
index 76cfe70fbc..89939d0efe 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageContext/DefaultWorkMessageContext.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageContext/DefaultWorkMessageContext.cs
@@ -238,8 +238,11 @@ public override IWorkRequestMessageBase GetRequestEntityMappingResult(RequestMsg
case "MSGAUDIT_NOTIFY":
requestMessage = new RequestMessageEvent_MsgAuditNotify();
break;
- case "TEMPLATE_CARD_EVENT": //模板卡片回调事件
- requestMessage = new RequestMessageEvent_TemplateCardClick();
+ case "TEMPLATE_CARD_EVENT": // 模板卡片事件推送
+ requestMessage = new RequestMessageEvent_TemplateCardEvent();
+ break;
+ case "TEMPLATE_CARD_MENU_EVENT": // 通用模板卡片右上角菜单事件
+ requestMessage = new RequestMessageEvent_TemplateCardMenuEvent();
break;
default://其他意外类型(也可以选择抛出异常)
requestMessage = new RequestMessageEventBase();
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/Async/WorkMessageHandler.Async.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/Async/WorkMessageHandler.Async.cs
index 010ce52a62..aac49bd451 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/Async/WorkMessageHandler.Async.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/Async/WorkMessageHandler.Async.cs
@@ -1,23 +1,26 @@
/*----------------------------------------------------------------
Copyright (C) 2024 Senparc
-
+
文件名:WorkMessageHandler.cs
文件功能描述:企业号请求的集中处理方法
-
-
+
+
创建标识:Senparc - 20150313
-
+
修改标识:ccccccmd - 20220227
修改描述:v3.14.10 添加异步方法
-
+
修改标识:Senparc - 20230914
修改描述:v3.16.4 企业微信三方代开发处理事件: 修复 Async 方法循环调用的 Bug
-
+
修改标识:IcedMango - 20240229
修改描述:添加: 企业微信会话存档-产生会话回调事件
修改标识:LofyLiu - 20240315
修改描述:添加: 模板卡片点击回调事件
+
+ 修改标识: IcedMango - 20241114
+ 修改描述: 添加: 通用模板卡片右上角菜单事件推送; 修复不正确的通用模板卡片事件推送类型
----------------------------------------------------------------*/
using Senparc.NeuChar.Context;
@@ -38,7 +41,6 @@ public abstract partial class WorkMessageHandler
{
public override async Task BuildResponseMessageAsync(CancellationToken cancellationToken)
{
-
switch (RequestMessage.MsgType)
{
case RequestMsgType.Unknown: //第三方回调
@@ -53,15 +55,16 @@ public override async Task BuildResponseMessageAsync(CancellationToken cancellat
throw new WeixinException("没有找到合适的消息类型。");
}
}
- break;
+ break;
//以下是普通信息
case RequestMsgType.Text:
{
var requestMessage = RequestMessage as RequestMessageText;
+
ResponseMessage = await OnTextOrEventRequestAsync(requestMessage) ??
await OnTextRequestAsync(requestMessage);
}
- break;
+ break;
case RequestMsgType.Location:
ResponseMessage = await OnLocationRequestAsync(RequestMessage as RequestMessageLocation);
break;
@@ -83,10 +86,11 @@ public override async Task BuildResponseMessageAsync(CancellationToken cancellat
case RequestMsgType.Event:
{
var requestMessageText = (RequestMessage as IRequestMessageEventBase).ConvertToRequestMessageText();
+
ResponseMessage = await OnTextOrEventRequestAsync(requestMessageText) ??
await OnEventRequestAsync(RequestMessage as IRequestMessageEventBase);
}
- break;
+ break;
default:
throw new UnknownRequestMsgTypeException("未知的MsgType请求类型", null);
}
@@ -182,6 +186,7 @@ public virtual async Task OnEventRequestAsync(IRequest
{
var strongRequestMessage = RequestMessage as IRequestMessageEventBase;
IWorkResponseMessageBase responseMessage = null;
+
switch (strongRequestMessage.Event)
{
case Event.CLICK: //菜单点击
@@ -192,7 +197,7 @@ public virtual async Task OnEventRequestAsync(IRequest
break;
case Event.PIC_PHOTO_OR_ALBUM: //弹出拍照或者相册发图
responseMessage = await OnEvent_PicPhotoOrAlbumRequestAsync(
- RequestMessage as RequestMessageEvent_Pic_Photo_Or_Album);
+ RequestMessage as RequestMessageEvent_Pic_Photo_Or_Album);
break;
case Event.SCANCODE_PUSH: //扫码推事件
responseMessage =
@@ -236,6 +241,7 @@ public virtual async Task OnEventRequestAsync(IRequest
break;
case Event.change_contact:
var ccRequestMessage = RequestMessage as IRequestMessageEvent_Change_Contact_Base;
+
switch (ccRequestMessage.ChangeType)
{
case ContactChangeType.create_user:
@@ -281,6 +287,7 @@ public virtual async Task OnEventRequestAsync(IRequest
//外部联系人事件相关
case Event.CHANGE_EXTERNAL_CONTACT:
var cecRequestMessage = RequestMessage as IRequestMessageEvent_Change_ExternalContact_Base;
+
switch (cecRequestMessage.ChangeType)
{
case ExternalContactChangeType.add_external_contact:
@@ -319,6 +326,7 @@ public virtual async Task OnEventRequestAsync(IRequest
break;
case Event.CHANGE_EXTERNAL_CHAT: //客户群变更事件
var cechat = RequestMessage as RequestMessageEvent_Change_External_Chat_Base;
+
switch (cechat.ChangeType)
{
case ExternalChatChangeType.create:
@@ -344,6 +352,7 @@ public virtual async Task OnEventRequestAsync(IRequest
break;
case Event.CHANGE_EXTERNAL_TAG: //企业客户标签变更事件
var tag = RequestMessage as RequestMessageEvent_Change_External_Tag_Base;
+
switch (tag.ChangeType)
{
case ExternalTagChangeType.create:
@@ -387,16 +396,21 @@ public virtual async Task OnEventRequestAsync(IRequest
OnEvent_Open_Approval_Change_Status_ChangeRequestAsync(
RequestMessage as RequestMessageEvent_OpenApprovalChange);
break;
-
+
case Event.MSGAUDIT_NOTIFY: //企业微信会话存档-产生会话回调事件
responseMessage = await
OnEvent_MsgAuditNotifyRequestAsync(
RequestMessage as RequestMessageEvent_MsgAuditNotify);
break;
- case Event.TEMPLATE_CARD_CLICK://模板卡片点击回调事件
- responseMessage = await
- OnEvent_TemplateCardEventClickRequestAsync(
- RequestMessage as RequestMessageEvent_TemplateCardClick);
+ case Event.TEMPLATE_CARD_EVENT: // 企业微信-模板卡片事件推送
+ responseMessage = await
+ OnEvent_TemplateCardEventRequestAsync(
+ RequestMessage as RequestMessageEvent_TemplateCardEvent);
+ break;
+ case Event.TEMPLATE_CARD_MENU_EVENT: // 通用模板卡片右上角菜单事件推送
+ responseMessage = await
+ OnEvent_TemplateCardMenuEventRequestAsync(
+ RequestMessage as RequestMessageEvent_TemplateCardMenuEvent);
break;
default:
throw new UnknownRequestMsgTypeException("未知的Event下属请求信息", null);
@@ -718,6 +732,7 @@ public virtual async Task OnEvent_ChangeExternalChatDi
}
#region 企业客户标签事件
+
///
/// 企业客户标签-创建
///
@@ -762,6 +777,7 @@ public virtual async Task OnEvent_ChangeExternalTagShu
{
return await Task.Run(() => OnEvent_ChangeExternalTagShuffleRequest(requestMessage)).ConfigureAwait(false);
}
+
#endregion
public virtual async Task OnEvent_Living_Status_ChangeRequestAsync(
@@ -769,12 +785,14 @@ public virtual async Task OnEvent_Living_Status_Change
{
return await Task.Run(() => OnEvent_Living_Status_ChangeRequest(requestMessage)).ConfigureAwait(false);
}
+
///
/// 修改设置工作台自定义开关事件推送
///
///
///
- public virtual async Task OnEvent_SwitchWorkbenchModel(RequestMessageEvent_Switch_WorkBench_Mode requestMessage)
+ public virtual async Task OnEvent_SwitchWorkbenchModel(
+ RequestMessageEvent_Switch_WorkBench_Mode requestMessage)
{
return await Task.Run(() => OnEvent_SwitchWorkBenchMode(requestMessage)).ConfigureAwait(false);
}
@@ -806,26 +824,40 @@ public virtual async Task OnEvent_Open_Approval_Change
}
#endregion
-
+
///
/// 企业微信会话存档-产生会话回调事件
///
///
///
- public virtual async Task OnEvent_MsgAuditNotifyRequestAsync(RequestMessageEvent_MsgAuditNotify requestMessage)
+ public virtual async Task OnEvent_MsgAuditNotifyRequestAsync(
+ RequestMessageEvent_MsgAuditNotify requestMessage)
{
return await Task.Run(() => OnEvent_MsgAuditNotifyRequest(requestMessage)).ConfigureAwait(false);
}
///
- /// 模板卡片点击回调事件
+ /// 企业微信-模板卡片事件推送
+ ///
+ ///
+ ///
+ public virtual async Task OnEvent_TemplateCardEventRequestAsync(
+ RequestMessageEvent_TemplateCardEvent requestMessage)
+ {
+ return await Task.Run(() => OnEvent_TemplateCardEventRequest(requestMessage)).ConfigureAwait(false);
+ }
+
+ ///
+ /// 通用模板卡片右上角菜单事件推送
///
///
///
- public virtual async Task OnEvent_TemplateCardEventClickRequestAsync(RequestMessageEvent_TemplateCardClick requestMessage)
+ public virtual async Task OnEvent_TemplateCardMenuEventRequestAsync(
+ RequestMessageEvent_TemplateCardMenuEvent requestMessage)
{
- return await Task.Run(() => OnEvent_TemplateCardEventClickRequest(requestMessage)).ConfigureAwait(false);
+ return await Task.Run(() => OnEvent_TemplateCardMenuEventRequest(requestMessage)).ConfigureAwait(false);
}
+
#endregion //Event 下属分类
#endregion
@@ -849,10 +881,12 @@ private Task OnThirdPartyEventAsync(IThirdPartyInfoBase thirdPartyInfo)
case ThirdPartyInfo.REGISTER_CORP:
return OnThirdPartyEvent_Register_CorpAsync((RequestMessager_Register_Corp)thirdPartyInfo);
case ThirdPartyInfo.RESET_PERMANENT_CODE:
- return OnThirdPartEvent_Reset_Permanent_CodeAsync((RequestMessageInfo_Reset_Permanent_Code)thirdPartyInfo);
+ return OnThirdPartEvent_Reset_Permanent_CodeAsync(
+ (RequestMessageInfo_Reset_Permanent_Code)thirdPartyInfo);
case ThirdPartyInfo.CHANGE_EXTERNAL_CONTACT:
{
var cecRequestMessage = RequestMessage as IRequestMessageEvent_Change_ExternalContact_Base;
+
switch (cecRequestMessage.ChangeType)
{
case ExternalContactChangeType.add_external_contact:
@@ -926,7 +960,8 @@ protected virtual async Task OnThirdPartyEvent_Suite_TicketAsync(
return await Task.Run(() => OnThirdPartyEvent_Suite_Ticket(thirdPartyInfo)).ConfigureAwait(false);
}
- protected virtual async Task OnThirdPartEvent_Reset_Permanent_CodeAsync(RequestMessageInfo_Reset_Permanent_Code thirdPartyInfo)
+ protected virtual async Task OnThirdPartEvent_Reset_Permanent_CodeAsync(
+ RequestMessageInfo_Reset_Permanent_Code thirdPartyInfo)
{
return await Task.Run(() => OnThirdPartEvent_ResetPermanentCode(thirdPartyInfo)).ConfigureAwait(false);
}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageHandler.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageHandler.cs
index 7df6acf9aa..61b3e9654f 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageHandler.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageHandler.cs
@@ -74,6 +74,9 @@ OnThirdPartyEvent_Contact_Sync 改名为 OnThirdPartyEvent_Change_Contact()
修改标识:LofyLiu - 20240315
修改描述:添加: 模板卡片点击回调事件
+
+ 修改标识: IcedMango - 20241114
+ 修改描述: 添加: 通用模板卡片右上角菜单事件推送; 修复不正确的通用模板卡片事件推送类型
----------------------------------------------------------------*/
using System;
@@ -901,11 +904,21 @@ public virtual IWorkResponseMessageBase OnEvent_MsgAuditNotifyRequest(RequestMes
}
///
- /// 模板卡片点击回调事件
+ /// 模板卡片事件推送
+ ///
+ ///
+ ///
+ public virtual IWorkResponseMessageBase OnEvent_TemplateCardEventRequest(RequestMessageEvent_TemplateCardEvent requestMessage)
+ {
+ return DefaultResponseMessage(requestMessage);
+ }
+
+ ///
+ /// 通用模板卡片右上角菜单事件推送
///
///
///
- public virtual IWorkResponseMessageBase OnEvent_TemplateCardEventClickRequest(RequestMessageEvent_TemplateCardClick requestMessage)
+ public virtual IWorkResponseMessageBase OnEvent_TemplateCardMenuEventRequest(RequestMessageEvent_TemplateCardMenuEvent requestMessage)
{
return DefaultResponseMessage(requestMessage);
}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net8.csproj b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net8.csproj
index c0ae7ccd39..68e7e86348 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net8.csproj
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net8.csproj
@@ -1,28 +1,28 @@
-
- net462;netstandard2.0;netstandard2.1
- 3.23.3
- 10.0
- Senparc.Weixin.Work
- Senparc.Weixin.Work
- true
-
+
+ net462;netstandard2.0;netstandard2.1
+ 3.24.0
+ 10.0
+ Senparc.Weixin.Work
+ Senparc.Weixin.Work
+ true
+
微信 SDK - 企业微信 模块
Senparc.Weixin SDK 开源项目:
https://github.com/JeffreySu/WeiXinMPSDK
- Senparc Copyright © 2004~2024
- 微信,weixin,公众号,企业微信,WeChat,Senparc,盛派,SDK,C#,JSSDK,微信支付,分布式,小程序,企业号
- Jeffrey Su
- Senparc
- Apache-2.0
- https://github.com/JeffreySu/WeiXinMPSDK
- Senparc.Weixin.Work.dll
- 微信 SDK for .NET / C#
- https://github.com/JeffreySu/WeiXinMPSDK
- icon.jpg
-
+ Senparc Copyright © 2004~2024
+ 微信,weixin,公众号,企业微信,WeChat,Senparc,盛派,SDK,C#,JSSDK,微信支付,分布式,小程序,企业号
+ Jeffrey Su
+ Senparc
+ Apache-2.0
+ https://github.com/JeffreySu/WeiXinMPSDK
+ Senparc.Weixin.Work.dll
+ 微信 SDK for .NET / C#
+ https://github.com/JeffreySu/WeiXinMPSDK
+ icon.jpg
+
v0.1.0 完成从Senparc.Weixin.Work.dll的初步移植,添加Work(企业微信)中的新接口
v0.2.0 整理类名,MessageHandler跑通
@@ -171,102 +171,103 @@
v3.14.3 修正“批量获取客户详情”接口传入参数
v3.14.6 添加“审批申请状态变化回调通知”接口
v3.14.7 添加“自建应用>审批流程引擎”接口及 Sample
- v3.14.8 为 JsApiTicket 提供 IsAgentConfig 参数
- v3.14.10 添加异步方法
- v3.14.11 优化OAuth相关接口
- v3.15.1 修复 LoginCheckResultJson 缺少 open_userid
- v3.15.2 添加“用户标签管理”接口
- v3.15.4 添加 MailList.Member 下的 biz_mail 属性
- v3.15.5 调整批量获取客户详情返回值
- v3.15.7
- 1、添加“创建企业群发”接口
- 2、添加“获取企业的全部群发记录”接口
- 3、添加“发送新客户欢迎语”接口
- v3.15.8 支持“发送应用消息”的“模板卡片消息”类型(MassApi.SendTemplateCard() 方法)
- v3.15.9
- 1、补充完整“客户联系「联系我」管理”接口
- 2、添加“客户群「加入群聊」管理”接口
- v3.15.13 ThirdParty_AuthCorpInfo 增加 3 个属性:corp_scale、corp_industry、corp_sub_industry
- v3.15.15
- 1、添加:重置永久授权码通知枚举:ThirdpartyInfo.RESET_PERMANENT_CODE
- 2、丰富 Webhook 接口:SendTemplateCard, SendFile
- v3.15.16
- 1、添加应用“消息撤回”(PR #2793)
- 2、添加“上下游及互联企业”相关接口、“获取下级/下游企业小程序session”接口(PR #2794)
- 3、添加“审批”接口
- 4、添加“客户标签管理Api”接口,添加“任务卡片事件推送”事件(待完善)(PR #2414)
- v3.15.17 添加“邮箱获取 userid”接口
- v3.15.17.1 修改 RequestMessageEvent_OpenApprovalChange 中 OpenTemplateId 参数类型为 string
- v3.15.18.1 GetMomentListLocation.latitude / longitude 设置为 long 类型 (Issue #2823)
- v3.15.19 自定义工作台接口(PR #2840)
- v3.15.20 增加更新模版卡片消息(PR #2580)
- v3.15.21 添加获取子部门ID列表方法,包含同步及异步(PR #2858)
- v3.15.22 v3.15.22 JSSDKHelper.GetNoncestr() 弃用 MD5 加密方法
- v3.16.0 MessageHandler 和客服接口支持长文本自动切割后连续发送
- v3.16.4 企业微信三方代开发处理事件: 修复 Async 方法循环调用的 Bug
- v3.17.0 成员对外联系 > 客户消息通知处理
- v3.18.1
- 1、Work v3.18.1 新加企业微信企业客户标签回调事件(PR #2948)
- 2、修复:ApprovalCreateTemplateRequest.template_names 命名更正为:template_name(Issue #2949)
- v3.19.0 企业微信中间件增加:会话存档-产生会话回调事件回调 (PR #2993)
- v3.20.0 模板卡片点击回调事件(PR #2997)
- [2024-08-06] v3.21.4 更新基础库,包括 Senparc.CO2NET 相关库、Senparc.AI
- [2024-08-12] v3.22.2 Work:增加获客链接管理接口 #3060
- [2024-09-29] v3.23.0 更新并同意 BuildingKey 方法,构建一致的 AppKey
-
- https://github.com/JeffreySu/WeiXinMPSDK
- False
-
-
- ..\..\BuildOutPut
- $(DefineConstants);RELEASE
-
-
- ..\..\BuildOutPut
- $(DefineConstants);RELEASE
- ..\..\BuildOutPut\Senparc.Weixin.Work.XML
- true
- pdbonly
- prompt
- MinimumRecommendedRules.ruleset
-
-
- ..\..\BuildOutPut\
- ..\..\BuildOutPut\net462\Senparc.Weixin.Work.xml
-
-
- ..\..\BuildOutPut\
- ..\..\BuildOutPut\netstandard2.0\Senparc.Weixin.Work.xml
-
-
- ..\..\BuildOutPut\
- ..\..\BuildOutPut\netstandard2.1\Senparc.Weixin.Work.xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ v3.14.8 为 JsApiTicket 提供 IsAgentConfig 参数
+ v3.14.10 添加异步方法
+ v3.14.11 优化OAuth相关接口
+ v3.15.1 修复 LoginCheckResultJson 缺少 open_userid
+ v3.15.2 添加“用户标签管理”接口
+ v3.15.4 添加 MailList.Member 下的 biz_mail 属性
+ v3.15.5 调整批量获取客户详情返回值
+ v3.15.7
+ 1、添加“创建企业群发”接口
+ 2、添加“获取企业的全部群发记录”接口
+ 3、添加“发送新客户欢迎语”接口
+ v3.15.8 支持“发送应用消息”的“模板卡片消息”类型(MassApi.SendTemplateCard() 方法)
+ v3.15.9
+ 1、补充完整“客户联系「联系我」管理”接口
+ 2、添加“客户群「加入群聊」管理”接口
+ v3.15.13 ThirdParty_AuthCorpInfo 增加 3 个属性:corp_scale、corp_industry、corp_sub_industry
+ v3.15.15
+ 1、添加:重置永久授权码通知枚举:ThirdpartyInfo.RESET_PERMANENT_CODE
+ 2、丰富 Webhook 接口:SendTemplateCard, SendFile
+ v3.15.16
+ 1、添加应用“消息撤回”(PR #2793)
+ 2、添加“上下游及互联企业”相关接口、“获取下级/下游企业小程序session”接口(PR #2794)
+ 3、添加“审批”接口
+ 4、添加“客户标签管理Api”接口,添加“任务卡片事件推送”事件(待完善)(PR #2414)
+ v3.15.17 添加“邮箱获取 userid”接口
+ v3.15.17.1 修改 RequestMessageEvent_OpenApprovalChange 中 OpenTemplateId 参数类型为 string
+ v3.15.18.1 GetMomentListLocation.latitude / longitude 设置为 long 类型 (Issue #2823)
+ v3.15.19 自定义工作台接口(PR #2840)
+ v3.15.20 增加更新模版卡片消息(PR #2580)
+ v3.15.21 添加获取子部门ID列表方法,包含同步及异步(PR #2858)
+ v3.15.22 v3.15.22 JSSDKHelper.GetNoncestr() 弃用 MD5 加密方法
+ v3.16.0 MessageHandler 和客服接口支持长文本自动切割后连续发送
+ v3.16.4 企业微信三方代开发处理事件: 修复 Async 方法循环调用的 Bug
+ v3.17.0 成员对外联系 > 客户消息通知处理
+ v3.18.1
+ 1、Work v3.18.1 新加企业微信企业客户标签回调事件(PR #2948)
+ 2、修复:ApprovalCreateTemplateRequest.template_names 命名更正为:template_name(Issue #2949)
+ v3.19.0 企业微信中间件增加:会话存档-产生会话回调事件回调 (PR #2993)
+ v3.20.0 模板卡片点击回调事件(PR #2997)
+ [2024-08-06] v3.21.4 更新基础库,包括 Senparc.CO2NET 相关库、Senparc.AI
+ [2024-08-12] v3.22.2 Work:增加获客链接管理接口 #3060
+ [2024-09-29] v3.23.0 更新并同意 BuildingKey 方法,构建一致的 AppKey
+ [2024-11-14] v3.24.0 企微回调: 移除不正确的通用模板卡片事件; 增加通用模板卡片事件推送; 增加通用模板卡片右上角菜单事件推送(PR #3096)
+
+ https://github.com/JeffreySu/WeiXinMPSDK
+ False
+
+
+ ..\..\BuildOutPut
+ $(DefineConstants);RELEASE
+
+
+ ..\..\BuildOutPut
+ $(DefineConstants);RELEASE
+ ..\..\BuildOutPut\Senparc.Weixin.Work.XML
+ true
+ pdbonly
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ ..\..\BuildOutPut\
+ ..\..\BuildOutPut\net462\Senparc.Weixin.Work.xml
+
+
+ ..\..\BuildOutPut\
+ ..\..\BuildOutPut\netstandard2.0\Senparc.Weixin.Work.xml
+
+
+ ..\..\BuildOutPut\
+ ..\..\BuildOutPut\netstandard2.1\Senparc.Weixin.Work.xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeApi.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeApi.cs
index f4d7b3002d..764721b595 100644
--- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeApi.cs
+++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeApi.cs
@@ -6,7 +6,10 @@
创建标识:Senparc - 20210118
-
+
+ 修改标识:Senparc - 20241114
+ 修改描述:v3.22.0 添加 NCF UrlScheme 接口 #3093 感谢 @mojinxun
+
----------------------------------------------------------------*/
using Senparc.NeuChar;
@@ -56,6 +59,37 @@ public static GenerateSchemeJsonResult GenerateScheme(string accessTokenOrAppId,
}, accessTokenOrAppId);
}
+ ///
+ /// 获取 NFC 的小程序 scheme
+ /// 该接口用于获取用于 NFC 的小程序 scheme 码,适用于 NFC 拉起小程序的业务场景。目前仅针对国内非个人主体的小程序开放,详见 NFC 标签打开小程序
+ /// 详见
+ /// https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-scheme/generateNFCScheme.html
+ ///
+ ///
+ /// (必填)跳转到的目标小程序信息。
+ /// (非必填)生成的scheme码类型,到期失效:true,永久有效:false。
+ /// (非必填)到期失效的scheme码的失效时间,为Unix时间戳。生成的到期失效scheme码在该时间前有效。生成到期失效的scheme时必填。
+ ///
+ ///
+ public static GenerateNFCSchemeJsonResult GenerateNFCScheme(string accessTokenOrAppId, GenerateNFCSchemeJumpWxa jumpWxa = null, string model_id = "",
+ string sn = null, int timeOut = Config.TIME_OUT)
+ {
+ return WxOpenApiHandlerWapper.TryCommonApi(accessToken =>
+ {
+ string urlFormat = Config.ApiMpHost + "/wxa/generatenfcscheme?access_token={0}";
+
+ var data = new
+ {
+ jump_wxa = jumpWxa,
+ model_id = model_id,
+ sn = sn
+ };
+
+ return CommonJsonSend.Send(accessToken, urlFormat, data, timeOut: timeOut,
+ jsonSetting: new CO2NET.Helpers.Serializers.JsonSetting(true));
+ }, accessTokenOrAppId);
+ }
+
#endregion
#region 异步方法
@@ -90,6 +124,37 @@ public static async Task GenerateSchemeAsync(string ac
jsonSetting: new CO2NET.Helpers.Serializers.JsonSetting(true));
}, accessTokenOrAppId).ConfigureAwait(false);
}
+
+ ///
+ /// 获取 NFC 的小程序 scheme
+ /// 该接口用于获取用于 NFC 的小程序 scheme 码,适用于 NFC 拉起小程序的业务场景。目前仅针对国内非个人主体的小程序开放,详见 NFC 标签打开小程序
+ /// 详见
+ /// https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-scheme/generateNFCScheme.html
+ ///
+ ///
+ /// (必填)跳转到的目标小程序信息。
+ /// (非必填)生成的scheme码类型,到期失效:true,永久有效:false。
+ /// (非必填)到期失效的scheme码的失效时间,为Unix时间戳。生成的到期失效scheme码在该时间前有效。生成到期失效的scheme时必填。
+ ///
+ ///
+ public static async Task GenerateNFCSchemeAsync(string accessTokenOrAppId, GenerateNFCSchemeJumpWxa jumpWxa = null, string model_id = "",
+ string sn = null, int timeOut = Config.TIME_OUT)
+ {
+ return await WxOpenApiHandlerWapper.TryCommonApiAsync(async accessToken =>
+ {
+ string urlFormat = Config.ApiMpHost + "/wxa/generatenfcscheme?access_token={0}";
+
+ var data = new
+ {
+ jump_wxa = jumpWxa,
+ model_id = model_id,
+ sn = sn
+ };
+
+ return CommonJsonSend.Send(accessToken, urlFormat, data, timeOut: timeOut,
+ jsonSetting: new CO2NET.Helpers.Serializers.JsonSetting(true));
+ }, accessTokenOrAppId).ConfigureAwait(false);
+ }
#endregion
}
}
diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeJson/GenerateNFCSchemeJsonResult.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeJson/GenerateNFCSchemeJsonResult.cs
new file mode 100644
index 0000000000..2758b37adf
--- /dev/null
+++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeJson/GenerateNFCSchemeJsonResult.cs
@@ -0,0 +1,26 @@
+/*----------------------------------------------------------------
+ Copyright (C) 2024 Senparc
+
+ 文件名:GenerateNFCSchemeJsonResult.cs
+ 文件功能描述:GenerateNFCScheme() 接口返回参数
+
+
+ 创建标识:Senparc - 20241114
+
+----------------------------------------------------------------*/
+
+using Senparc.Weixin.Entities;
+
+namespace Senparc.Weixin.WxOpen.AdvancedAPIs.UrlScheme
+{
+ ///
+ /// GenerateNFCScheme() 接口返回参数
+ ///
+ public class GenerateNFCSchemeJsonResult : WxJsonResult
+ {
+ ///
+ /// 小程序scheme码
+ ///
+ public string openlink { get; set; }
+ }
+}
diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeJson/GenerateNFCSchemeJumpWxa.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeJson/GenerateNFCSchemeJumpWxa.cs
new file mode 100644
index 0000000000..10083119f0
--- /dev/null
+++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/AdvancedAPIs/WxApp/UrlScheme/UrlSchemeJson/GenerateNFCSchemeJumpWxa.cs
@@ -0,0 +1,66 @@
+#region Apache License Version 2.0
+/*----------------------------------------------------------------
+
+Copyright 2024 Jeffrey Su & Suzhou Senparc Network Technology Co.,Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+except in compliance with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed under the
+License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+either express or implied. See the License for the specific language governing permissions
+and limitations under the License.
+
+Detail: https://github.com/JeffreySu/WeiXinMPSDK/blob/master/license.md
+
+----------------------------------------------------------------*/
+#endregion Apache License Version 2.0
+
+/*----------------------------------------------------------------
+ Copyright (C) 2024 Senparc
+
+ 文件名:GenerateNFCSchemeJumpWxa.cs
+ 文件功能描述:GenerateNFCScheme() 接口中的 jumpWxa 参数
+
+ 创建标识:Senparc - 20241114
+
+----------------------------------------------------------------*/\
+
+
+
+namespace Senparc.Weixin.WxOpen.AdvancedAPIs.UrlScheme
+{
+ ///
+ /// GenerateNFCScheme() 接口中的 jumpWxa 参数
+ ///
+ public class GenerateNFCSchemeJumpWxa
+ {
+ ///
+ /// (必填)通过scheme码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带query。path为空时会跳转小程序主页。
+ ///
+ public string path { get; set; }
+ ///
+ /// (必填)通过scheme码进入小程序时的query,最大128个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~
+ ///
+ public string query { get; set; }
+ ///
+ /// (选填)默认值"release"。要打开的小程序版本。正式版为"release",体验版为"trial",开发版为"develop",仅在微信外打开时生效。
+ ///
+ public string env_version { get; set; }
+
+ ///
+ /// GenerateScheme() 接口中的 jumpWxa 参数
+ ///
+ ///
+ ///
+ ///
+ public GenerateNFCSchemeJumpWxa(string path, string query, string env_version = null)
+ {
+ this.path = path ?? "";
+ this.query = query ?? "";
+ this.env_version = env_version ?? "release";
+ }
+ }
+}
diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net8.csproj b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net8.csproj
index 4cb8b7f33d..06f1ff5607 100644
--- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net8.csproj
+++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net8.csproj
@@ -1,28 +1,28 @@
-
- net462;netstandard2.0;netstandard2.1
- 3.21.2
- 9.0
- Senparc.Weixin.WxOpen
- Senparc.Weixin.WxOpen
- true
-
+
+ net462;netstandard2.0;netstandard2.1
+ 3.22.0
+ 9.0
+ Senparc.Weixin.WxOpen
+ Senparc.Weixin.WxOpen
+ true
+
微信 SDK - 微信小程序 模块
Senparc.Weixin SDK 开源项目:
https://github.com/JeffreySu/WeiXinMPSDK
- Senparc Copyright © 2004~2024
- 微信,weixin,小程序,wxopen,MiniProgram,公众号,WeChat,Senparc,盛派,SDK,C#,JSSDK,微信支付,分布式
- Jeffrey Su
- Senparc
- Apache-2.0
- https://github.com/JeffreySu/WeiXinMPSDK
- Senparc.Weixin.WxOpen.dll
- 微信 SDK for .NET / C#
- https://github.com/JeffreySu/WeiXinMPSDK
- icon.jpg
-
+ Senparc Copyright © 2004~2024
+ 微信,weixin,小程序,wxopen,MiniProgram,公众号,WeChat,Senparc,盛派,SDK,C#,JSSDK,微信支付,分布式
+ Jeffrey Su
+ Senparc
+ Apache-2.0
+ https://github.com/JeffreySu/WeiXinMPSDK
+ Senparc.Weixin.WxOpen.dll
+ 微信 SDK for .NET / C#
+ https://github.com/JeffreySu/WeiXinMPSDK
+ icon.jpg
+
v0.1.0 添加基础解决方案,包括模板消息API
v0.1.0 添加基础库,已包含模板消息API
@@ -150,91 +150,92 @@
v3.8.512 添加解密到实例信息方法
v3.10.101 新增 WxOpen 专属 AccessTokenContainer,解决没有提供 name 参数的情况下,Register 过程和公众号注册信息发生冲突的问题
v3.10.102 修正 UniformSendData.Mp_Template_Msg.Miniprogram 参数 pagepath -> page
- v3.10.103 修正 WxOpenApiHandlerWapper 正确引用 AccessTokenContainer
- v3.10.104 添加 WxAppApi.GenerateScheme() 接口
- v3.10.401 升级 MessageApi.SendSubscribe() 方法参数
- v3.11.100 修改完善“附近的小程序”接口
- v3.13.500-preview4.1 添加“Short Link”接口
- v3.14 添加 ExpressApi 接口
- v3.14.2 添加“小程序违规和申诉管理”消息事件
- v3.14.3 添加 UrlLinkApi.Generate() 接口
- v3.14.4 添加 BusinessApi.GetUserPhoneNumber() 接口
- v3.14.5 修改“下发小程序和公众号统一的服务消息”接口参数,提升兼容性
- v3.14.10.1 修复 WxAppApi.GetWxaCodeUnlimitAsync() 接口参数错误
- v3.15.2 添加小程序隐私接口
- v3.15.3 添加商户客户参数(BusinessId)
- v3.15.4 添加小程序客服管理接口
- v3.15.6 添加“异步校验图片/音频是否含有违法违规内容”接口
- v3.15.7
- 1、添加 OnEvent_MediaCheckRequest() 方法:内容安全回调 - wxa_media_check 推送结果
- 2、修复 RequestMsgType.Event 返回值没有正确赋值的问题
- v3.15.10 EncryptHelper.DecodeEncryptedData() 方法添加 keySize 参数
- v3.15.12 添加小程序类目审核结果事件推送
- v3.15.13 添加“文本内容安全识别”接口 PR #2786
- v3.15.15 添加物流服务相关接口和事件推送 PR #2834
- v3.15.15.1 获取小程序服务GenerateScheme模型增加env_version字段 PR #2861
- v3.16.0 客服接口支持长文本自动切割后连续发送
- v3.16.4 微信已于2023 年 9 月 20 日收回下发统一消息接口,标注过时 PR #2921
- v3.17.1 添加 CodeApi.RevertCodeRelease() 方法的 appVersion 参数
- v3.17.2 添加“小程序虚拟支付”功能 PR #2961 / Issue #2951
- v3.17.3 添加小程序分类审核异步通知事件 / PR #2969
- v3.17.5 新增小程序认证年审事件接口 / PR #2979
- v3.17.6 虚拟支付增加了接口从1.0.7~1.0.10,同步完善 / PR #2987
- v3.19.0 添加小程序发货信息管理服务-查询小程序是否已完成交易结算管理确认接口 / PR #3030
- [2024-08-06] v3.19.2 更新基础库,包括 Senparc.CO2NET 相关库、Senparc.AI
- [2024-09-02] v3.20.2 WxOpen 支持小程序付费能力的用量告警事件
- [2024-10-08] v3.21.0 WxOpen 添加“查询购买资源包的用量情况”接口 #3078
- [2024-10-20] v3.21.2 修正 first_save_flag 类型错误,应为 int; 同时增加 FirstSaveFlag 属性, 用于 bool 类型判断是否首次充值 #2986 感谢 @WanderingGrass
-
- https://github.com/JeffreySu/WeiXinMPSDK
-
-
- ..\..\..\..\BuildOutPut
- TRACE
-
-
- ..\..\..\..\..\..\BuildOutPut
- $(DefineConstants);RELEASE
- ..\..\..\..\..\..\BuildOutPut\Senparc.Weixin.WxOpen.XML
- true
- pdbonly
- prompt
- MinimumRecommendedRules.ruleset
-
-
- ..\..\..\..\BuildOutPut\
- ..\..\..\..\BuildOutPut\netstandard2.0\Senparc.Weixin.WxOpen.xml
-
-
- ..\..\..\..\BuildOutPut\
- ..\..\..\..\BuildOutPut\netstandard2.1\Senparc.Weixin.WxOpen.xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ v3.10.103 修正 WxOpenApiHandlerWapper 正确引用 AccessTokenContainer
+ v3.10.104 添加 WxAppApi.GenerateScheme() 接口
+ v3.10.401 升级 MessageApi.SendSubscribe() 方法参数
+ v3.11.100 修改完善“附近的小程序”接口
+ v3.13.500-preview4.1 添加“Short Link”接口
+ v3.14 添加 ExpressApi 接口
+ v3.14.2 添加“小程序违规和申诉管理”消息事件
+ v3.14.3 添加 UrlLinkApi.Generate() 接口
+ v3.14.4 添加 BusinessApi.GetUserPhoneNumber() 接口
+ v3.14.5 修改“下发小程序和公众号统一的服务消息”接口参数,提升兼容性
+ v3.14.10.1 修复 WxAppApi.GetWxaCodeUnlimitAsync() 接口参数错误
+ v3.15.2 添加小程序隐私接口
+ v3.15.3 添加商户客户参数(BusinessId)
+ v3.15.4 添加小程序客服管理接口
+ v3.15.6 添加“异步校验图片/音频是否含有违法违规内容”接口
+ v3.15.7
+ 1、添加 OnEvent_MediaCheckRequest() 方法:内容安全回调 - wxa_media_check 推送结果
+ 2、修复 RequestMsgType.Event 返回值没有正确赋值的问题
+ v3.15.10 EncryptHelper.DecodeEncryptedData() 方法添加 keySize 参数
+ v3.15.12 添加小程序类目审核结果事件推送
+ v3.15.13 添加“文本内容安全识别”接口 PR #2786
+ v3.15.15 添加物流服务相关接口和事件推送 PR #2834
+ v3.15.15.1 获取小程序服务GenerateScheme模型增加env_version字段 PR #2861
+ v3.16.0 客服接口支持长文本自动切割后连续发送
+ v3.16.4 微信已于2023 年 9 月 20 日收回下发统一消息接口,标注过时 PR #2921
+ v3.17.1 添加 CodeApi.RevertCodeRelease() 方法的 appVersion 参数
+ v3.17.2 添加“小程序虚拟支付”功能 PR #2961 / Issue #2951
+ v3.17.3 添加小程序分类审核异步通知事件 / PR #2969
+ v3.17.5 新增小程序认证年审事件接口 / PR #2979
+ v3.17.6 虚拟支付增加了接口从1.0.7~1.0.10,同步完善 / PR #2987
+ v3.19.0 添加小程序发货信息管理服务-查询小程序是否已完成交易结算管理确认接口 / PR #3030
+ [2024-08-06] v3.19.2 更新基础库,包括 Senparc.CO2NET 相关库、Senparc.AI
+ [2024-09-02] v3.20.2 WxOpen 支持小程序付费能力的用量告警事件
+ [2024-10-08] v3.21.0 WxOpen 添加“查询购买资源包的用量情况”接口 #3078
+ [2024-10-20] v3.21.2 修正 first_save_flag 类型错误,应为 int; 同时增加 FirstSaveFlag 属性, 用于 bool 类型判断是否首次充值 #2986 感谢 @WanderingGrass
+ [2024-11-14] v3.22.0 添加 NCF UrlScheme 接口 #3093 感谢 @mojinxun
+
+ https://github.com/JeffreySu/WeiXinMPSDK
+
+
+ ..\..\..\..\BuildOutPut
+ TRACE
+
+
+ ..\..\..\..\..\..\BuildOutPut
+ $(DefineConstants);RELEASE
+ ..\..\..\..\..\..\BuildOutPut\Senparc.Weixin.WxOpen.XML
+ true
+ pdbonly
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ ..\..\..\..\BuildOutPut\
+ ..\..\..\..\BuildOutPut\netstandard2.0\Senparc.Weixin.WxOpen.xml
+
+
+ ..\..\..\..\BuildOutPut\
+ ..\..\..\..\BuildOutPut\netstandard2.1\Senparc.Weixin.WxOpen.xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file