From 9dd180642c3fb6229f566d8e505290b1561a84dd Mon Sep 17 00:00:00 2001 From: mc7246 Date: Mon, 2 May 2022 21:41:06 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E9=9A=90?= =?UTF-8?q?=E7=A7=81=E6=8E=A5=E5=8F=A3=E6=9D=83=E9=99=90=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=8F=8A=E4=BA=8B=E4=BB=B6=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApplyPrivacyInterfaceJsonResult.cs | 14 +++ .../GetPrivacyInterfaceJsonResult.cs | 72 +++++++++++++++ .../Senparc.Weixin.Open/WxaAPIs/WxaApi.cs | 87 +++++++++++++++++++ .../Event/RequestMessageEvent_PrivacyApply.cs | 75 ++++++++++++++++ .../Senparc.Weixin.WxOpen/Enums.cs | 3 +- .../WxOpenMessageHandler.Event.cs | 27 +++++- 6 files changed, 276 insertions(+), 2 deletions(-) create mode 100644 src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs create mode 100644 src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs create mode 100644 src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs new file mode 100644 index 0000000000..2ea849dd02 --- /dev/null +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs @@ -0,0 +1,14 @@ +using Senparc.Weixin.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Senparc.Weixin.Open.WxaAPIs +{ + public class ApplyPrivacyInterfaceJsonResult : WxJsonResult + { + public uint audit_id { get; set; } + } +} diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs new file mode 100644 index 0000000000..feb9b403e4 --- /dev/null +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs @@ -0,0 +1,72 @@ +using Senparc.Weixin.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Senparc.Weixin.Open.WxaAPIs +{ + /// + /// 获取隐私接口列表结果 + /// + [Serializable] + public class GetPrivacyInterfaceJsonResult : WxJsonResult + { + /// + /// 隐私接口 + /// + public List interface_list { get; set; } + } + + [Serializable] + public class PrivacyInterfaceInfo + { + /// + /// api 英文名 + /// + public string api_name { get; set; } + + /// + /// api 中文名 + /// + public string api_ch_name { get; set; } + + /// + /// api描述 + /// + public string api_desc { get; set; } + + /// + /// 申请时间 ,该字段发起申请后才会有 + /// + public uint apply_time { get; set; } + + /// + /// 接口状态,该字段发起申请后才会有 + /// 1-待申请开通,2-无权限,3-申请中,4-申请失败,5-已开通 + /// + public int status { get; set; } + + /// + /// 申请单号,该字段发起申请后才会有 + /// + public uint audit_id { get; set; } + + /// + /// 申请被驳回原因或者无权限,该字段申请驳回时才会有 + /// + public string fail_reason { get; set; } + + /// + /// api文档链接 + /// + public string api_link { get; set; } + + /// + /// 分组名 + /// + public string group_name { get; set; } + } + +} diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs index 60c609a035..0d62c445d8 100644 --- a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs @@ -40,6 +40,7 @@ and limitations under the License. using Senparc.NeuChar; using Senparc.Weixin.CommonAPIs; using Senparc.Weixin.Entities; +using System.Collections.Generic; using System.Threading.Tasks; namespace Senparc.Weixin.Open.WxaAPIs @@ -146,6 +147,49 @@ public static GetAppealRecordsJsonResult GetAppealRecords(string accessToken, st return CommonJsonSend.Send(null, url, data); } + #endregion + #region 隐私接口 + /// + /// 获取隐私接口列表 + /// https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/apply_api/get_privacy_interface.html + /// + /// + /// + public static GetPrivacyInterfaceJsonResult GetPrivacyInterface(string accessToken) + { + var url = $"{Config.ApiMpHost}/wxa/security/get_privacy_interface?access_token={accessToken.AsUrlData()}"; + + + return CommonJsonSend.Send(null, url, null, CommonJsonSendType.GET); + + } + + /// + /// 申请隐私接口 + /// https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/apply_api/apply_privacy_interface.html + /// + /// + /// 申请的api英文名,例如wx.choosePoi,严格区分大小写 + /// 申请说原因,不超过300个字符;需要以utf-8编码提交,否则会出现审核失败 + /// (辅助网页)例如,上传官网网页链接用于辅助审核 + /// (辅助图片)填写图片的url ,最多10个 + /// (辅助视频)填写视频的链接 ,最多支持1个;视频格式只支持mp4格式 + /// + public static ApplyPrivacyInterfaceJsonResult ApplyPrivacyInterface(string accessToken, string api_name, string content, List url_list = null,List pic_list=null,List video_list=null) + { + var url = $"{Config.ApiMpHost}/wxa/security/apply_privacy_interface?access_token={accessToken.AsUrlData()}"; + + var data = new + { + api_name, + content, + url_list, + pic_list, + video_list + }; + + return CommonJsonSend.Send(null, url, data); + } #endregion #endregion @@ -245,6 +289,49 @@ public static async Task GetAppealRecordsAsync(strin return await CommonJsonSend.SendAsync(null, url, data).ConfigureAwait(false); } + #endregion + #region 隐私接口 + /// + /// 【异步方法】获取隐私接口列表 + /// https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/apply_api/get_privacy_interface.html + /// + /// + /// + public static async Task GetPrivacyInterfaceAsync(string accessToken) + { + var url = $"{Config.ApiMpHost}/wxa/security/get_privacy_interface?access_token={accessToken.AsUrlData()}"; + + + return await CommonJsonSend.SendAsync(null, url, null, CommonJsonSendType.GET).ConfigureAwait(false); + + } + + /// + /// 【异步方法】申请隐私接口 + /// https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/apply_api/apply_privacy_interface.html + /// + /// + /// 申请的api英文名,例如wx.choosePoi,严格区分大小写 + /// 申请说原因,不超过300个字符;需要以utf-8编码提交,否则会出现审核失败 + /// (辅助网页)例如,上传官网网页链接用于辅助审核 + /// (辅助图片)填写图片的url ,最多10个 + /// (辅助视频)填写视频的链接 ,最多支持1个;视频格式只支持mp4格式 + /// + public static async Task ApplyPrivacyInterfaceAsync(string accessToken, string api_name, string content, List url_list = null, List pic_list = null, List video_list = null) + { + var url = $"{Config.ApiMpHost}/wxa/security/apply_privacy_interface?access_token={accessToken.AsUrlData()}"; + + var data = new + { + api_name, + content, + url_list, + pic_list, + video_list + }; + + return await CommonJsonSend.SendAsync(null, url, data).ConfigureAwait(false); + } #endregion #endregion diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs new file mode 100644 index 0000000000..eef61afda3 --- /dev/null +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs @@ -0,0 +1,75 @@ +#region Apache License Version 2.0 +/*---------------------------------------------------------------- + +Copyright 2022 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) 2022 Senparc + + 文件名:RequestMessageEvent_WeAppAuditSuccess.cs + 文件功能描述:事件之小程序审核成功 + + + 创建标识:Senparc - 2010828 + +----------------------------------------------------------------*/ + +namespace Senparc.Weixin.WxOpen.Entities +{ + /// + /// 事件之隐私权限审核结果推送 + /// + public class RequestMessageEvent_PrivacyApply : RequestMessageEventBase, IRequestMessageEventBase + { + /// + /// 事件类型 + /// + public override Event Event + { + get { return Event.wxa_privacy_apply; } + } + + /// + /// 审核成功时的时间(整型),时间戳 + /// + public string SuccTime { get; set; } + + /// + /// 审核结果 + /// + public PrivacyApplyResultInfo result_info { get; set; } + } + + public class PrivacyApplyResultInfo + { + public string api_name { get; set; } + + public string apply_time { get; set; } + + public string audit_id { get; set; } + + public string audit_time { get; set; } + + public string reason { get; set; } + + /// + /// 2-审核不通过,3-审核通过 + /// + public string status { get; set; } + } +} diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs index 34277d01de..a51e68e28a 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs @@ -60,7 +60,8 @@ public enum Event weapp_audit_fail, weapp_audit_delay, wxa_illegal_record, //小程序违规记录事件 - wxa_appeal_record //小程序申诉记录推送 + wxa_appeal_record, //小程序申诉记录推送 + wxa_privacy_apply //隐私权限审核结果推送 } diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs index e47c6da43a..608eb7bec9 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs @@ -89,6 +89,9 @@ public virtual IResponseMessageBase OnEventRequest(IRequestMessageEventBase requ case Event.wxa_appeal_record: responseMessage = OnEvent_AppealRecordRequest(RequestMessage as RequestMessageEvent_AppealRecord); break; + case Event.wxa_privacy_apply: + responseMessage = OnEvent_PrivacyApplyRequest(RequestMessage as RequestMessageEvent_PrivacyApply); + break; default: throw new UnknownRequestMsgTypeException("未知的Event下属请求信息", null); } @@ -96,7 +99,6 @@ public virtual IResponseMessageBase OnEventRequest(IRequestMessageEventBase requ } #region Event 下属分类 - /// /// 在腾讯地图中创建门店的审核结果 /// @@ -195,6 +197,16 @@ public virtual IResponseMessageBase OnEvent_AppealRecordRequest(RequestMessageEv return DefaultResponseMessage(requestMessage); } + /// + /// 隐私权限申请结果推送 + /// + /// + /// + public virtual IResponseMessageBase OnEvent_PrivacyApplyRequest(RequestMessageEvent_PrivacyApply requestMessage) + { + return DefaultResponseMessage(requestMessage); + } + #endregion @@ -243,6 +255,9 @@ public virtual async Task OnEventRequestAsync(IRequestMess case Event.wxa_appeal_record: responseMessage = await OnEvent_AppealRecordRequestAsync(RequestMessage as RequestMessageEvent_AppealRecord); break; + case Event.wxa_privacy_apply: + responseMessage = await OnEvent_PrivacyApplyRequestAsync(RequestMessage as RequestMessageEvent_PrivacyApply); + break; default: throw new UnknownRequestMsgTypeException("未知的Event下属请求信息", null); } @@ -348,6 +363,16 @@ public virtual async Task OnEvent_AppealRecordRequestAsync return await DefaultAsyncMethod(requestMessage, () => OnEvent_AppealRecordRequest(requestMessage)).ConfigureAwait(false); } + /// + /// 【异步方法】隐私权限申请结果推送 + /// + /// + /// + public virtual async Task OnEvent_PrivacyApplyRequestAsync(RequestMessageEvent_PrivacyApply requestMessage) + { + return await DefaultAsyncMethod(requestMessage, () => OnEvent_PrivacyApplyRequest(requestMessage)).ConfigureAwait(false); + } + #endregion From ac23724d2221edcf287aa01a6a35f5e869973ddd Mon Sep 17 00:00:00 2001 From: mc7246 Date: Mon, 2 May 2022 21:47:39 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E4=B9=8B=E9=9A=90?= =?UTF-8?q?=E7=A7=81=E6=9D=83=E9=99=90=E5=AE=A1=E6=A0=B8=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs index eef61afda3..690c403e60 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs @@ -22,7 +22,7 @@ and limitations under the License. Copyright (C) 2022 Senparc 文件名:RequestMessageEvent_WeAppAuditSuccess.cs - 文件功能描述:事件之小程序审核成功 + 文件功能描述:事件之隐私权限审核结果推送 创建标识:Senparc - 2010828 From 8e7258b75c0cd31848edf9cfd6699fcdb2ed90b1 Mon Sep 17 00:00:00 2001 From: JeffreySu Date: Wed, 4 May 2022 00:35:04 +0800 Subject: [PATCH 3/4] =?UTF-8?q?MP=20v16.18.1=20=E5=85=AC=E4=BC=97=E5=8F=B7?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=B7=BB=E5=8A=A0=20article=5Fid=E3=80=81art?= =?UTF-8?q?icle=5Fview=5Flimited=20=E7=B1=BB=E5=9E=8B=20#2621=20=E6=84=9F?= =?UTF-8?q?=E8=B0=A2=20=20@niuniu12345677777?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...arc.Weixin.Net6Sample.CommonService.csproj | 2 +- .../Senparc.Weixin.Sample.Net6.csproj | 6 +- .../Views/Menu/Index.cshtml | 6 ++ .../wwwroot/Scripts/senparc.menu.js | 27 ++++++++- .../Senparc.WebSocket.net6.csproj | 2 +- .../Senparc.Weixin.AspNet.net6.csproj | 4 +- .../Senparc.Weixin.Cache.CsRedis.net6.csproj | 2 +- ...Senparc.Weixin.Cache.Memcached.net6.csproj | 2 +- .../Senparc.Weixin.Cache.Redis.net6.csproj | 2 +- .../Senparc.Weixin.MP.Middleware.net6.csproj | 4 +- ...Senparc.Weixin.MP.MvcExtension.net6.csproj | 4 +- .../CommonAPIs/Menu/CommonApi.Menu.Common.cs | 57 +++++++++++++++++-- .../JsonResult/Menu/GetMenuResultFull.cs | 3 + .../Menu/Buttons/SingleArticleIdButton.cs | 51 +++++++++++++++++ .../Buttons/SingleArticleViewLimitedButton.cs | 55 ++++++++++++++++++ .../Menu/Buttons/SingleMediaIdButton.cs | 2 + .../Menu/Buttons/SingleViewLimitedButton.cs | 2 + .../Senparc.Weixin.MP.net6.csproj | 7 ++- .../Senparc.Weixin.Open.net6.csproj | 4 +- .../Senparc.Weixin.TenPay.net6.csproj | 2 +- .../Senparc.Weixin.TenPayV3.net6.csproj | 4 +- ...Senparc.Weixin.Work.Middleware.net6.csproj | 4 +- .../Helpers/EntityHelper.cs | 16 +++--- .../Senparc.Weixin.Work.net6.csproj | 6 +- ...nparc.Weixin.WxOpen.Middleware.net6.csproj | 4 +- .../Senparc.Weixin.WxOpen.net6.csproj | 4 +- .../Senparc.Weixin/Senparc.Weixin.net6.csproj | 6 +- 27 files changed, 239 insertions(+), 49 deletions(-) create mode 100644 src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleIdButton.cs create mode 100644 src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleViewLimitedButton.cs diff --git a/Samples/All/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.Net6Sample.CommonService.csproj b/Samples/All/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.Net6Sample.CommonService.csproj index da130e8a0c..a14ea01626 100644 --- a/Samples/All/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.Net6Sample.CommonService.csproj +++ b/Samples/All/Senparc.Weixin.Sample.CommonService/Senparc.Weixin.Net6Sample.CommonService.csproj @@ -19,7 +19,7 @@ - + diff --git a/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Senparc.Weixin.Sample.Net6.csproj b/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Senparc.Weixin.Sample.Net6.csproj index 911768e2ed..2bb24fcc17 100644 --- a/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Senparc.Weixin.Sample.Net6.csproj +++ b/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Senparc.Weixin.Sample.Net6.csproj @@ -2,7 +2,7 @@ net6.0 - 6.5.13 + 6.5.14 35e58786-0820-4cde-b1ff-f4c6198d00f7 false @@ -40,8 +40,8 @@ - - + + diff --git a/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Views/Menu/Index.cshtml b/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Views/Menu/Index.cshtml index 1f9b280699..dc5622712d 100644 --- a/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Views/Menu/Index.cshtml +++ b/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/Views/Menu/Index.cshtml @@ -393,6 +393,7 @@ + } @@ -418,6 +419,8 @@ + +

@@ -435,6 +438,9 @@

MediaId:

+

+ ArticleId: +

如果还有下级菜单请忽略上述Type和Key、Url等参数。
diff --git a/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/wwwroot/Scripts/senparc.menu.js b/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/wwwroot/Scripts/senparc.menu.js index c58bb13dcd..9bd05f0c3b 100644 --- a/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/wwwroot/Scripts/senparc.menu.js +++ b/Samples/All/net6-mvc/Senparc.Weixin.Sample.Net6/wwwroot/Scripts/senparc.menu.js @@ -21,7 +21,8 @@ senparc.menu = { var nameId = idPrefix + "_name"; var typeId = idPrefix + "_type"; var urlId = idPrefix + "_url"; - var mediaIdId = idPrefix + "_mediaid"; + var mediaId = idPrefix + "_mediaid"; + var articleId = idPrefix + "_articleid"; var appidId = idPrefix + "_appid"; var pagepathId = idPrefix + "_pagepath"; @@ -30,13 +31,15 @@ senparc.menu = { var ddlDetailsType = $('#buttonDetails_type'); var txtDetailsUrl = $('#buttonDetails_url'); var txtMediaId = $('#buttonDetails_mediaId'); + var txtArticleId = $('#buttonDetails_articleId'); var txtDetailsAppid = $('#buttonDetails_miniprogram_appid'); var txtDetailsPagepath = $('#buttonDetails_miniprogram_pagepath'); var hiddenButtonKey = $('#' + keyId); var hiddenButtonType = $('#' + typeId); var hiddenButtonUrl = $('#' + urlId); - var hiddenButtonMediaId = $('#' + mediaIdId); + var hiddenButtonMediaId = $('#' + mediaId); + var hiddenButtonArticleId = $('#' + articleId); var hiddenButtonAppid = $('#' + appidId); var hiddenButtonPagepath = $('#' + pagepathId); @@ -45,6 +48,7 @@ senparc.menu = { ddlDetailsType.val(hiddenButtonType.val()); txtDetailsUrl.val(hiddenButtonUrl.val()); txtMediaId.val(hiddenButtonMediaId.val()); + txtArticleId.val(hiddenButtonArticleId.val()); txtDetailsAppid.val(hiddenButtonAppid.val()); txtDetailsPagepath.val(hiddenButtonPagepath.val()); @@ -62,6 +66,9 @@ senparc.menu = { txtMediaId.unbind('blur').blur(function () { hiddenButtonMediaId.val($(this).val()); }); + txtArticleId.unbind('blur').blur(function () { + hiddenButtonArticleId.val($(this).val()); + }); txtDetailsAppid.unbind('blur').blur(function () { hiddenButtonAppid.val($(this).val()); }); @@ -120,6 +127,7 @@ senparc.menu = { $('#menu_button' + i + '_appid').val(button.appid); $('#menu_button' + i + '_pagepath').val(button.pagepath); $('#menu_button' + i + '_mediaid').val(button.media_id); + $('#menu_button' + i + '_articleid').val(button.article_id); if (button.sub_button && button.sub_button.length > 0) { //二级菜单 @@ -133,6 +141,7 @@ senparc.menu = { $(idPrefix + "_appid").val(subButton.appid); $(idPrefix + "_pagepath").val(subButton.pagepath); $(idPrefix + "_mediaid").val(subButton.media_id); + $(idPrefix + "_articleid").val(subButton.article_id); } } else { //底部菜单 @@ -231,6 +240,7 @@ senparc.menu = { $('#buttonDetails_miniprogram_appid_area').slideUp(100); $('#buttonDetails_miniprogram_pagepath_area').slideUp(100); $('#buttonDetails_mediaId_area').slideUp(100); + $('#buttonDetails_articleId_area').slideUp(100); break; case 'VIEW': $('#buttonDetails_key_area').slideUp(100); @@ -238,6 +248,7 @@ senparc.menu = { $('#buttonDetails_miniprogram_appid_area').slideUp(100); $('#buttonDetails_miniprogram_pagepath_area').slideUp(100); $('#buttonDetails_mediaId_area').slideUp(100); + $('#buttonDetails_articleId_area').slideUp(100); break; case 'MINIPROGRAM': $('#buttonDetails_key_area').slideUp(100); @@ -245,6 +256,7 @@ senparc.menu = { $('#buttonDetails_miniprogram_appid_area').slideDown(100); $('#buttonDetails_miniprogram_pagepath_area').slideDown(100); $('#buttonDetails_mediaId_area').slideUp(100); + $('#buttonDetails_articleId_area').slideUp(100); break; case 'MEDIA_ID': case 'VIEW_LIMITED': @@ -253,6 +265,16 @@ senparc.menu = { $('#buttonDetails_miniprogram_appid_area').slideUp(100); $('#buttonDetails_miniprogram_pagepath_area').slideUp(100); $('#buttonDetails_mediaId_area').slideDown(100); + $('#buttonDetails_articleId_area').slideUp(100); + break; + case 'ARTICLE_ID': + case 'ARTICLE_VIEW_LIMITED': + $('#buttonDetails_key_area').slideUp(100); + $('#buttonDetails_url_area').slideUp(100); + $('#buttonDetails_miniprogram_appid_area').slideUp(100); + $('#buttonDetails_miniprogram_pagepath_area').slideUp(100); + $('#buttonDetails_mediaId_area').slideUp(100); + $('#buttonDetails_articleId_area').slideDown(100); break; default: $('#buttonDetails_key_area').slideDown(100); @@ -260,6 +282,7 @@ senparc.menu = { $('#buttonDetails_miniprogram_appid_area').slideUp(100); $('#buttonDetails_miniprogram_pagepath_area').slideUp(100); $('#buttonDetails_mediaId_area').slideUp(100); + $('#buttonDetails_articleId_area').slideUp(100); break; } }, diff --git a/src/Senparc.WebSocket/src/Senparc.WebSocket/Senparc.WebSocket/Senparc.WebSocket.net6.csproj b/src/Senparc.WebSocket/src/Senparc.WebSocket/Senparc.WebSocket/Senparc.WebSocket.net6.csproj index 3d5b5848fd..8450be1489 100644 --- a/src/Senparc.WebSocket/src/Senparc.WebSocket/Senparc.WebSocket/Senparc.WebSocket.net6.csproj +++ b/src/Senparc.WebSocket/src/Senparc.WebSocket/Senparc.WebSocket/Senparc.WebSocket.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0 - 0.17 + 0.17.1 Senparc.WebSocket Senparc.WebSocket true diff --git a/src/Senparc.Weixin.AspNet/Senparc.Weixin.AspNet.net6.csproj b/src/Senparc.Weixin.AspNet/Senparc.Weixin.AspNet.net6.csproj index 2f023af518..eb0967a814 100644 --- a/src/Senparc.Weixin.AspNet/Senparc.Weixin.AspNet.net6.csproj +++ b/src/Senparc.Weixin.AspNet/Senparc.Weixin.AspNet.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0 - 0.8 + 0.8.1 Senparc.Weixin.AspNet Senparc.Weixin.AspNet true @@ -75,7 +75,7 @@ - + diff --git a/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.CsRedis/Senparc.Weixin.Cache.CsRedis.net6.csproj b/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.CsRedis/Senparc.Weixin.Cache.CsRedis.net6.csproj index 3c64bf3076..a665eef1de 100644 --- a/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.CsRedis/Senparc.Weixin.Cache.CsRedis.net6.csproj +++ b/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.CsRedis/Senparc.Weixin.Cache.CsRedis.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 0.8 + 0.8.1 Senparc.Weixin.Cache.CsRedis Senparc.Weixin.Cache.CsRedis true diff --git a/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Memcached/Senparc.Weixin.Cache.Memcached.net6.csproj b/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Memcached/Senparc.Weixin.Cache.Memcached.net6.csproj index 68ed4b6f17..a4713e0aa2 100644 --- a/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Memcached/Senparc.Weixin.Cache.Memcached.net6.csproj +++ b/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Memcached/Senparc.Weixin.Cache.Memcached.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 2.13 + 2.13.1 Senparc.Weixin.Cache.Memcached Senparc.Weixin.Cache.Memcached diff --git a/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Redis/Senparc.Weixin.Cache.Redis.net6.csproj b/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Redis/Senparc.Weixin.Cache.Redis.net6.csproj index a4e44f14ce..5130085a37 100644 --- a/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Redis/Senparc.Weixin.Cache.Redis.net6.csproj +++ b/src/Senparc.Weixin.Cache/Senparc.Weixin.Cache.Redis/Senparc.Weixin.Cache.Redis.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 2.15 + 2.15.1 Senparc.Weixin.Cache.Redis Senparc.Weixin.Cache.Redis true diff --git a/src/Senparc.Weixin.MP.Middleware/Senparc.Weixin.MP.Middleware.net6.csproj b/src/Senparc.Weixin.MP.Middleware/Senparc.Weixin.MP.Middleware.net6.csproj index 8b844d351e..95aa19537d 100644 --- a/src/Senparc.Weixin.MP.Middleware/Senparc.Weixin.MP.Middleware.net6.csproj +++ b/src/Senparc.Weixin.MP.Middleware/Senparc.Weixin.MP.Middleware.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0 - 0.8 + 0.8.1 Senparc.Weixin.MP.Middleware Senparc.Weixin.MP.Middleware true @@ -70,7 +70,7 @@ - + diff --git a/src/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension.net6.csproj b/src/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension.net6.csproj index fb4f0670f6..b062e71294 100644 --- a/src/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension.net6.csproj +++ b/src/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension/Senparc.Weixin.MP.MvcExtension.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0 - 7.12 + 7.12.1 Senparc.Weixin.MP.MvcExtension Senparc.Weixin.MP.MvcExtension true @@ -147,7 +147,7 @@ - + diff --git a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/CommonAPIs/Menu/CommonApi.Menu.Common.cs b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/CommonAPIs/Menu/CommonApi.Menu.Common.cs index 2f662fd53e..37cbc75f00 100644 --- a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/CommonAPIs/Menu/CommonApi.Menu.Common.cs +++ b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/CommonAPIs/Menu/CommonApi.Menu.Common.cs @@ -51,6 +51,9 @@ and limitations under the License. 修改标识:Senparc - 20170419 修改描述:v14.4.13 修复二级菜单小程序无法设置的问题 + 修改标识:Senparc - 20220503 + 修改描述:v16.18.1 添加 article_id 类型按钮 + ----------------------------------------------------------------*/ /* @@ -194,7 +197,7 @@ private static void GetButtonGroup(List rootButtonList, But } else if (rootButton.type.Equals("MEDIA_ID", StringComparison.OrdinalIgnoreCase)) { - //扫码推事件 + //下发消息(除文本消息)按钮 buttonGroup.button.Add(new SingleMediaIdButton() { name = rootButton.name, @@ -204,7 +207,7 @@ private static void GetButtonGroup(List rootButtonList, But } else if (rootButton.type.Equals("VIEW_LIMITED", StringComparison.OrdinalIgnoreCase)) { - //扫码推事件 + //永久素材 buttonGroup.button.Add(new SingleViewLimitedButton() { name = rootButton.name, @@ -212,6 +215,26 @@ private static void GetButtonGroup(List rootButtonList, But type = rootButton.type }); } + else if (rootButton.type.Equals("ARTICLE_ID", StringComparison.OrdinalIgnoreCase)) + { + //article_id 按钮 + buttonGroup.button.Add(new SingleArticleIdButton() + { + name = rootButton.name, + article_id = rootButton.article_id, + type = rootButton.type + }); + } + else if (rootButton.type.Equals("ARTICLE_VIEW_LIMITED", StringComparison.OrdinalIgnoreCase)) + { + //article_view_limited 按钮 + buttonGroup.button.Add(new SingleArticleViewLimitedButton() + { + name = rootButton.name, + article_id = rootButton.article_id, + type = rootButton.type + }); + } else { throw new WeixinMenuException("菜单类型无法处理:" + rootButton.type); @@ -325,7 +348,7 @@ private static void GetButtonGroup(List rootButtonList, But } else if (subSubButton.type.Equals("MEDIA_ID", StringComparison.OrdinalIgnoreCase)) { - //扫码推事件 + //下发消息(除文本消息)按钮 subButton.sub_button.Add(new SingleMediaIdButton() { name = subSubButton.name, @@ -335,7 +358,7 @@ private static void GetButtonGroup(List rootButtonList, But } else if (subSubButton.type.Equals("VIEW_LIMITED", StringComparison.OrdinalIgnoreCase)) { - //扫码推事件 + //永久素材按钮 subButton.sub_button.Add(new SingleViewLimitedButton() { name = subSubButton.name, @@ -343,7 +366,7 @@ private static void GetButtonGroup(List rootButtonList, But type = subSubButton.type }); } - else + if (subSubButton.type.Equals("SCANCODE_WAITMSG", StringComparison.OrdinalIgnoreCase)) { //扫码推事件且弹出“消息接收中”提示框 subButton.sub_button.Add(new SingleScancodeWaitmsgButton() @@ -353,6 +376,30 @@ private static void GetButtonGroup(List rootButtonList, But type = subSubButton.type }); } + else if (subSubButton.type.Equals("ARTICLE_ID", StringComparison.OrdinalIgnoreCase)) + { + //article_id 按钮 + subButton.sub_button.Add(new SingleArticleIdButton() + { + name = subSubButton.name, + article_id = subSubButton.article_id, + type = subSubButton.type + }); + } + else if (subSubButton.type.Equals("ARTICLE_VIEW_LIMITED", StringComparison.OrdinalIgnoreCase)) + { + //article_view_limited 按钮 + subButton.sub_button.Add(new SingleArticleViewLimitedButton() + { + name = subSubButton.name, + article_id = subSubButton.article_id, + type = subSubButton.type + }); + } + else + { + throw new WeixinMenuException("菜单类型无法处理(二级菜单):" + subSubButton.type); + } } } } diff --git a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/JsonResult/Menu/GetMenuResultFull.cs b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/JsonResult/Menu/GetMenuResultFull.cs index 8d7bad6c76..014363bf2e 100644 --- a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/JsonResult/Menu/GetMenuResultFull.cs +++ b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/JsonResult/Menu/GetMenuResultFull.cs @@ -76,6 +76,9 @@ public class MenuFull_RootButton public string media_id { get; set; } + public string article_id { get; set; } + + public List sub_button { get; set; } } #endregion diff --git a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleIdButton.cs b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleIdButton.cs new file mode 100644 index 0000000000..d2f716d809 --- /dev/null +++ b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleIdButton.cs @@ -0,0 +1,51 @@ +#region Apache License Version 2.0 +/*---------------------------------------------------------------- + +Copyright 2022 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) 2022 Senparc + + 文件名:SingleArticleIdButton.cs + 文件功能描述:用户点击 article_id 类型按钮后,微信客户端将会以卡片形式,下发开发者在按钮中填写的图文消息 + + + 创建标识:Senparc - 20220503 + +----------------------------------------------------------------*/ +using Senparc.NeuChar; + +namespace Senparc.Weixin.MP.Entities.Menu +{ + ///

+ /// article_id 按钮 + /// 用户点击 article_id 类型按钮后,微信客户端将会以卡片形式,下发开发者在按钮中填写的图文消息 + /// + public class SingleArticleIdButton : SingleButton + { + /// + /// 发布后获得的合法 article_id + /// + public string article_id { get; set; } + + public SingleArticleIdButton() + : base(MenuButtonType.article_id.ToString()) + { + } + } +} diff --git a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleViewLimitedButton.cs b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleViewLimitedButton.cs new file mode 100644 index 0000000000..1faa968792 --- /dev/null +++ b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleArticleViewLimitedButton.cs @@ -0,0 +1,55 @@ +#region Apache License Version 2.0 +/*---------------------------------------------------------------- + +Copyright 2022 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) 2022 Senparc + + 文件名:SingleArticleViewLimitedButton.cs + 文件功能描述:类似 view_limited,但不使用 media_id 而使用 article_id: + 跳转图文消息URL用户点击view_limited类型按钮后, + 微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL, + 永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材” + 接口上传后获得的合法id。 + + + 创建标识:Senparc - 20220503 + +----------------------------------------------------------------*/ +using Senparc.NeuChar; + +namespace Senparc.Weixin.MP.Entities.Menu +{ + /// + /// SingleArticleViewLimitedButton 按钮 + /// 类似 view_limited,但不使用 media_id 而使用 article_id + /// + public class SingleArticleViewLimitedButton : SingleButton + { + /// + /// 类似 view_limited,但不使用 media_id 而使用 article_id + /// + public string article_id { get; set; } + + public SingleArticleViewLimitedButton() + : base(MenuButtonType.article_view_limited.ToString()) + { + } + } +} diff --git a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleMediaIdButton.cs b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleMediaIdButton.cs index bb4438ba0a..07a2b97b54 100644 --- a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleMediaIdButton.cs +++ b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleMediaIdButton.cs @@ -32,12 +32,14 @@ and limitations under the License. ----------------------------------------------------------------*/ using Senparc.NeuChar; +using System; namespace Senparc.Weixin.MP.Entities.Menu { /// /// 下发消息(除文本消息)按钮 /// + [Obsolete("草稿接口灰度完成后,将不再支持图文信息类型的 media_id 和 view_limited,有需要的,请使用 article_id 和 article_view_limited 代替")] public class SingleMediaIdButton : SingleButton { /// diff --git a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleViewLimitedButton.cs b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleViewLimitedButton.cs index bd166a39d6..ef102ad81f 100644 --- a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleViewLimitedButton.cs +++ b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Entities/Menu/Buttons/SingleViewLimitedButton.cs @@ -32,12 +32,14 @@ and limitations under the License. ----------------------------------------------------------------*/ using Senparc.NeuChar; +using System; namespace Senparc.Weixin.MP.Entities.Menu { /// /// 下发消息(除文本消息)按钮 /// + [Obsolete("草稿接口灰度完成后,将不再支持图文信息类型的 media_id 和 view_limited,有需要的,请使用 article_id 和 article_view_limited 代替")] public class SingleViewLimitedButton : SingleButton { /// diff --git a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Senparc.Weixin.MP.net6.csproj b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Senparc.Weixin.MP.net6.csproj index a66713ab4c..079c692ef2 100644 --- a/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Senparc.Weixin.MP.net6.csproj +++ b/src/Senparc.Weixin.MP/Senparc.Weixin.MP/Senparc.Weixin.MP.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 16.18 + 16.18.1 Senparc.Weixin.MP Senparc.Weixin.MP true @@ -515,6 +515,7 @@ v16.17.2 优化永久素材上传接口,提供素材类型枚举:UploadForeverMediaType v16.17.3 UserApi.Info() 接口返回值,将 headimgurl、nickname 设为过期 v16.17.8 新增草稿箱和发布能力接口 + v16.18.1 公众号菜单添加 article_id、article_view_limited 类型 https://github.com/JeffreySu/WeiXinMPSDK @@ -572,8 +573,8 @@ - - + + diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj index 7c6d23b3dd..3ae2780e4f 100644 --- a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 4.14 + 4.14.1 Senparc.Weixin.Open Senparc.Weixin.Open true @@ -237,7 +237,7 @@ - + diff --git a/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay.net6.csproj b/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay.net6.csproj index 292ad4af76..1eb03dc31c 100644 --- a/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay.net6.csproj +++ b/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay/Senparc.Weixin.TenPay.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 1.12 + 1.12.1 Senparc.Weixin.TenPay Senparc.Weixin.TenPay true diff --git a/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPayV3/Senparc.Weixin.TenPayV3.net6.csproj b/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPayV3/Senparc.Weixin.TenPayV3.net6.csproj index 7d62678b4b..41be9ff88c 100644 --- a/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPayV3/Senparc.Weixin.TenPayV3.net6.csproj +++ b/src/Senparc.Weixin.TenPay/Senparc.Weixin.TenPayV3/Senparc.Weixin.TenPayV3.net6.csproj @@ -1,7 +1,7 @@ netstandard2.1 - 0.6.1-beta1 + 0.6.2-beta1 Senparc.Weixin.TenPayV3 Senparc.Weixin.TenPayV3 10.0 @@ -31,7 +31,7 @@ v0.5.6 使用 Senparc.Weixin.Config.TenPayV3Host 提供可配置的 API 域名 v0.5.7 升级微信支付请求的方法,支持多种加密方式 v0.6.1 修复 CloseOrderAsync() 参数问题 - + https://github.com/JeffreySu/WeiXinMPSDK diff --git a/src/Senparc.Weixin.Work.Middleware/Senparc.Weixin.Work.Middleware.net6.csproj b/src/Senparc.Weixin.Work.Middleware/Senparc.Weixin.Work.Middleware.net6.csproj index 470533bb90..6961886d00 100644 --- a/src/Senparc.Weixin.Work.Middleware/Senparc.Weixin.Work.Middleware.net6.csproj +++ b/src/Senparc.Weixin.Work.Middleware/Senparc.Weixin.Work.Middleware.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0 - 0.8 + 0.8.1 Senparc.Weixin.Work.Middleware Senparc.Weixin.Work.Middleware true @@ -67,7 +67,7 @@ - + diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Helpers/EntityHelper.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Helpers/EntityHelper.cs index 2b10693acb..0f8994a27a 100644 --- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Helpers/EntityHelper.cs +++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Helpers/EntityHelper.cs @@ -287,11 +287,11 @@ public static class EntityHelper //不同返回类型需要对应不同特殊格式的排序 if (entity is ResponseMessageNews) { - propNameOrder.AddRange(new[] { "ArticleCount", "Articles", "FuncFlag",/*以下是Atricle属性*/ "Title ", "Description ", "PicUrl", "Url" }); + propNameOrder.AddRange(new[] { "ArticleCount", "Articles", "FuncFlag",/*以下是Article属性*/ "Title ", "Description ", "PicUrl", "Url" }); } else if (entity is ResponseMessageMpNews) { - propNameOrder.AddRange(new[] { "MpNewsArticleCount", "MpNewsArticles", "FuncFlag",/*以下是MpNewsAtricle属性*/ "Title ", "Description ", "PicUrl", "Url" }); + propNameOrder.AddRange(new[] { "MpNewsArticleCount", "MpNewsArticles", "FuncFlag",/*以下是MpNewsArticle属性*/ "Title ", "Description ", "PicUrl", "Url" }); } else if (entity is ResponseMessageImage) { @@ -322,26 +322,26 @@ public static class EntityHelper if (propName == "Articles") { //文章列表 - var atriclesElement = new XElement("Articles"); + var articlesElement = new XElement("Articles"); var articales = prop.GetValue(entity, null) as List
; foreach (var articale in articales) { var subNodes = ConvertEntityToXml(articale).Root.Elements(); - atriclesElement.Add(new XElement("item", subNodes)); + articlesElement.Add(new XElement("item", subNodes)); } - root.Add(atriclesElement); + root.Add(articlesElement); } else if (propName == "MpNewsArticles") { - var mpNewsAtriclesElement = new XElement("MpNewsArticles"); + var mpNewsArticlesElement = new XElement("MpNewsArticles"); var mpNewsAtricles = prop.GetValue(entity, null) as List; foreach (var mpNewsArticale in mpNewsAtricles) { var subNodes = ConvertEntityToXml(mpNewsArticale).Root.Elements(); - mpNewsAtriclesElement.Add(subNodes); + mpNewsArticlesElement.Add(subNodes); } - root.Add(mpNewsAtriclesElement); + root.Add(mpNewsArticlesElement); } else if (propName == "Image" || propName == "Video" || propName == "Voice") { diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net6.csproj b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net6.csproj index 2d49ba0e6f..8ceb2e1b1a 100644 --- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net6.csproj +++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.net6.csproj @@ -2,7 +2,7 @@ net462;netstandard2.0;netstandard2.1 $(Net35FrameworkPathOverride) - 3.15.2-beta3 + 3.15.3-beta3 10.0 Senparc.Weixin.Work Senparc.Weixin.Work @@ -178,7 +178,7 @@ v3.14.11 优化OAuth相关接口 v3.15.1 修复 LoginCheckResultJson 缺少 open_userid v3.15.2 添加“用户标签管理”接口 - + https://github.com/JeffreySu/WeiXinMPSDK False @@ -226,7 +226,7 @@ - + diff --git a/src/Senparc.Weixin.WxOpen.Middleware/Senparc.Weixin.WxOpen.Middleware.net6.csproj b/src/Senparc.Weixin.WxOpen.Middleware/Senparc.Weixin.WxOpen.Middleware.net6.csproj index b91caebd99..a72663da39 100644 --- a/src/Senparc.Weixin.WxOpen.Middleware/Senparc.Weixin.WxOpen.Middleware.net6.csproj +++ b/src/Senparc.Weixin.WxOpen.Middleware/Senparc.Weixin.WxOpen.Middleware.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0 - 0.8 + 0.8.1 Senparc.Weixin.WxOpen.Middleware Senparc.Weixin.WxOpen.Middleware true @@ -67,7 +67,7 @@ - + diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj index 2e5588aaaf..cd9f889dc4 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 3.15 + 3.15.1 Senparc.Weixin.WxOpen Senparc.Weixin.WxOpen true @@ -204,7 +204,7 @@ - + diff --git a/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.net6.csproj b/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.net6.csproj index c1ee9ac28c..13a91eadfb 100644 --- a/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.net6.csproj +++ b/src/Senparc.Weixin/Senparc.Weixin/Senparc.Weixin.net6.csproj @@ -2,7 +2,7 @@ net462;netstandard2.0;netstandard2.1 $(Net35FrameworkPathOverride) - 6.15 + 6.15.1 10.0 Senparc.Weixin Senparc.Weixin @@ -327,7 +327,7 @@ v6.12.500 提供 UserHelper v6.14.5 添加试用小程序接口及事件 v6.15 最低 .NET Framework 版本升级至 4.6.2 - + https://github.com/JeffreySu/WeiXinMPSDK @@ -369,7 +369,7 @@ - + From ce7368f36ca5abfaf01b2c470a668e33c4013a33 Mon Sep 17 00:00:00 2001 From: JeffreySu Date: Wed, 4 May 2022 00:48:16 +0800 Subject: [PATCH 4/4] =?UTF-8?q?Open=20v4.14.2=20&=20WxOpen=20=20v3.15.2=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B0=8F=E7=A8=8B=E5=BA=8F=E9=9A=90=E7=A7=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20#2628=20=E6=84=9F=E8=B0=A2=20@mc7246?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Senparc.Weixin.Open.net6.csproj | 29 +++++++------- .../ApplyPrivacyInterfaceJsonResult.cs | 39 ++++++++++++++++++- .../GetPrivacyInterfaceJsonResult.cs | 33 +++++++++++++++- .../Senparc.Weixin.Open/WxaAPIs/WxaApi.cs | 3 ++ .../Event/RequestMessageEvent_PrivacyApply.cs | 5 ++- .../Senparc.Weixin.WxOpen/Enums.cs | 3 ++ .../WxOpenMessageHandler.Event.cs | 3 ++ .../Senparc.Weixin.WxOpen.net6.csproj | 5 ++- 8 files changed, 101 insertions(+), 19 deletions(-) diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj index 3ae2780e4f..b76288f1b4 100644 --- a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/Senparc.Weixin.Open.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 4.14.1 + 4.14.2 Senparc.Weixin.Open Senparc.Weixin.Open true @@ -177,19 +177,20 @@ v4.7.502.3 代小程序开发 添加撤回审核接口 v4.8.102 添加接口“代小程序实现业务 - 设置业务域名”(SetWebViewDomainApi) v4.8.201 服务号订阅通知相关接口 & 补充小程序[获取小程序账号的类目]接口 - v4.8.400 - 1、代小程序实现业务-提交审核接口添加UGC参数 - 2、修正截屏附件字段类型 - v4.10.3 统一使用 Senparc.Weixin.CommonAPIs.CommonJsonSend 方法 - v4.11.500 用户信息调整:不再返回用户性别及地区信息 - v4.12 新增快速创建个人小程序接口 - v4.13 实现“小程序用户隐私指引接口” - v4.13.1 配置小程序用户隐私保护指引接口增加privacy_ver参数 - v4.13.2 添加“小程序违规和申诉管理”接口及消息事件 - v4.13.3 修复获取小程序违规记录返回信息 - v4.13.4 完善“公众号权限集” - v4.13.9 添加试用小程序接口及事件 - + v4.8.400 + 1、代小程序实现业务-提交审核接口添加UGC参数 + 2、修正截屏附件字段类型 + v4.10.3 统一使用 Senparc.Weixin.CommonAPIs.CommonJsonSend 方法 + v4.11.500 用户信息调整:不再返回用户性别及地区信息 + v4.12 新增快速创建个人小程序接口 + v4.13 实现“小程序用户隐私指引接口” + v4.13.1 配置小程序用户隐私保护指引接口增加privacy_ver参数 + v4.13.2 添加“小程序违规和申诉管理”接口及消息事件 + v4.13.3 修复获取小程序违规记录返回信息 + v4.13.4 完善“公众号权限集” + v4.13.9 添加试用小程序接口及事件 + v4.14.2 添加小程序隐私接口 + https://github.com/JeffreySu/WeiXinMPSDK diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs index 2ea849dd02..c004333f39 100644 --- a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/ApplyPrivacyInterfaceJsonResult.cs @@ -1,4 +1,35 @@ -using Senparc.Weixin.Entities; +#region Apache License Version 2.0 +/*---------------------------------------------------------------- + +Copyright 2022 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) 2020 Senparc + + 文件名:ApplyPrivacyInterfaceJsonResult.cs + 文件功能描述:申请隐私接口 返回值 + + + 创建标识:mc7246 - 20220504 + +----------------------------------------------------------------*/ + +using Senparc.Weixin.Entities; using System; using System.Collections.Generic; using System.Linq; @@ -7,8 +38,14 @@ namespace Senparc.Weixin.Open.WxaAPIs { + /// + /// 申请隐私接口 返回值 + /// public class ApplyPrivacyInterfaceJsonResult : WxJsonResult { + /// + /// + /// public uint audit_id { get; set; } } } diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs index feb9b403e4..a4df053ae0 100644 --- a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/SecurityJson/GetPrivacyInterfaceJsonResult.cs @@ -1,4 +1,35 @@ -using Senparc.Weixin.Entities; +#region Apache License Version 2.0 +/*---------------------------------------------------------------- + +Copyright 2022 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) 2020 Senparc + + 文件名:GetPrivacyInterfaceJsonResult.cs + 文件功能描述:获取隐私接口列表结果 + + + 创建标识:mc7246 - 20220504 + +----------------------------------------------------------------*/ + +using Senparc.Weixin.Entities; using System; using System.Collections.Generic; using System.Linq; diff --git a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs index 0d62c445d8..3e3d490e06 100644 --- a/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs +++ b/src/Senparc.Weixin.Open/Senparc.Weixin.Open/WxaAPIs/WxaApi.cs @@ -34,6 +34,9 @@ and limitations under the License. 修改标识:mc7246 - 20211209 修改描述:v4.13.2 添加“小程序违规和申诉管理”接口 + 修改标识:mc7246 - 20220504 + 修改描述:v4.14.2 添加小程序隐私接口 + ----------------------------------------------------------------*/ using Senparc.CO2NET.Extensions; diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs index 690c403e60..1234885679 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Entities/Request/Event/RequestMessageEvent_PrivacyApply.cs @@ -26,7 +26,10 @@ and limitations under the License. 创建标识:Senparc - 2010828 - + + 修改标识:mc7246 - 20220504 + 修改描述:vv3.15.2 添加小程序隐私接口 + ----------------------------------------------------------------*/ namespace Senparc.Weixin.WxOpen.Entities diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs index a51e68e28a..48fecf4ab6 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Enums.cs @@ -27,6 +27,9 @@ and limitations under the License. 创建标识:Senparc - 20170106 + 修改标识:mc7246 - 20220504 + 修改描述:v3.15.2 添加小程序隐私权限审核结果推送 + ----------------------------------------------------------------*/ using System.ComponentModel; diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs index 608eb7bec9..b9c582cc4c 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/MessageHandlers/WxOpenMessageHandler.Event.cs @@ -36,6 +36,9 @@ and limitations under the License. 修改标识:mc7246 - 20211209 修改描述:v4.13.2 添加 OnEvent_AppealRecordRequest()、OnEvent_IllegalRecordRequest() 方法 + 修改标识:mc7246 - 20220504 + 修改描述:v3.15.2 添加小程序隐私权限审核结果推送 + ----------------------------------------------------------------*/ using Senparc.NeuChar.Entities; diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj index cd9f889dc4..48c134ff0c 100644 --- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj +++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.net6.csproj @@ -1,7 +1,7 @@ net462;netstandard2.0;netstandard2.1 - 3.15.1 + 3.15.2 Senparc.Weixin.WxOpen Senparc.Weixin.WxOpen true @@ -161,7 +161,8 @@ v3.14.4 添加 BusinessApi.GetUserPhoneNumber() 接口 v3.14.5 修改“下发小程序和公众号统一的服务消息”接口参数,提升兼容性 v3.14.10.1 修复 WxAppApi.GetWxaCodeUnlimitAsync() 接口参数错误 - + v3.15.2 添加小程序隐私接口 + https://github.com/JeffreySu/WeiXinMPSDK