diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalApi.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalApi.cs
index a78e9795ac..6eba16033c 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalApi.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalApi.cs
@@ -10,6 +10,9 @@
修改标识:lishewen - 20200318
修改描述:v3.7.401 新增“获取客户群列表”“获取客户群详情” API
+ 修改标识:gokeiyou - 20201013
+ 修改描述:v3.7.604 添加外部联系人管理 > 客户管理相关接口
+
----------------------------------------------------------------*/
/*
@@ -20,6 +23,7 @@
using Senparc.Weixin.CommonAPIs;
using Senparc.Weixin.Entities;
using Senparc.Weixin.Work.AdvancedAPIs.External;
+using Senparc.Weixin.Work.AdvancedAPIs.External.ExternalJson;
using System.Threading.Tasks;
namespace Senparc.Weixin.Work.AdvancedAPIs
@@ -119,6 +123,91 @@ public static GroupChatGetResult GroupChatGet(string accessTokenOrAppKey, string
}, accessTokenOrAppKey);
}
+
+ #region 客户管理
+
+ ///
+ /// 获取客户列表
+ ///
+ /// 调用接口凭证
+ /// 企业成员的userid
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.GetExternalContactList", true)]
+ public static GetExternalContactListResult GetExternalContactList(string accessTokenOrAppKey, string userid, int timeOut = Config.TIME_OUT)
+ {
+ return ApiHandlerWapper.TryCommonApi(accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/list?access_token={accessToken}&userid={userid}";
+
+ return CommonJsonSend.Send(null, url, null, CommonJsonSendType.GET, timeOut);
+ }, accessTokenOrAppKey);
+ }
+
+ ///
+ /// 获取客户详情
+ ///
+ /// 调用接口凭证
+ /// 外部联系人的userid,注意不是企业成员的帐号
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.GetExternalContactInfo", true)]
+ public static GetExternalContactResultJson GetExternalContactInfo(string accessTokenOrAppKey, string externalUserId, int timeOut = Config.TIME_OUT)
+ {
+ return ApiHandlerWapper.TryCommonApi(accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/get?access_token={accessToken}&external_userid={externalUserId}";
+
+ return CommonJsonSend.Send(null, url, null, CommonJsonSendType.GET, timeOut);
+ }, accessTokenOrAppKey);
+ }
+
+ ///
+ /// 批量获取客户详情
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.GetExternalContactInfoBatch", true)]
+ public static GetExternalContactInfoBatchResult GetExternalContactInfoBatch(string accessTokenOrAppKey, string userid, string cursor = "", int limit = 50, int timeOut = Config.TIME_OUT)
+ {
+ return ApiHandlerWapper.TryCommonApi(accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/batch/get_by_user?access_token={accessToken}";
+
+ var data = new
+ {
+ userid,
+ cursor,
+ limit
+ };
+
+ return CommonJsonSend.Send(null, url, data, CommonJsonSendType.POST, timeOut);
+ }, accessTokenOrAppKey);
+ }
+
+ ///
+ /// 修改客户备注信息
+ ///
+ /// 调用接口凭证
+ /// 请求报文
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.UpdateExternalContactRemark", true)]
+ public static WorkJsonResult UpdateExternalContactRemark(string accessTokenOrAppKey, UpdateExternalContactRemarkRequest rquest, int timeOut = Config.TIME_OUT)
+ {
+ return ApiHandlerWapper.TryCommonApi(accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/remark?access_token={accessToken}";
+
+ return CommonJsonSend.Send(null, url, rquest, CommonJsonSendType.POST, timeOut);
+ }, accessTokenOrAppKey);
+ }
+
+ #endregion
+
#endregion
@@ -212,6 +301,91 @@ public static async Task GroupChatGetAsync(string accessToke
}, accessTokenOrAppKey).ConfigureAwait(false);
}
+
+ #region 客户管理
+
+ ///
+ /// 【异步方法】获取客户列表
+ ///
+ /// 调用接口凭证
+ /// 企业成员的userid
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.GetExternalContactListAsync", true)]
+ public static async Task GetExternalContactListAsync(string accessTokenOrAppKey, string userid, int timeOut = Config.TIME_OUT)
+ {
+ return await ApiHandlerWapper.TryCommonApiAsync(async accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/list?access_token={accessToken}&userid={userid}";
+
+ return await CommonJsonSend.SendAsync(null, url, null, CommonJsonSendType.GET, timeOut).ConfigureAwait(false);
+ }, accessTokenOrAppKey).ConfigureAwait(false);
+ }
+
+ ///
+ /// 【异步方法】获取客户详情
+ ///
+ /// 调用接口凭证
+ /// 外部联系人的userid,注意不是企业成员的帐号
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.GetExternalContactInfoAsync", true)]
+ public static async Task GetExternalContactInfoAsync(string accessTokenOrAppKey, string externalUserId, int timeOut = Config.TIME_OUT)
+ {
+ return await ApiHandlerWapper.TryCommonApiAsync(async accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/get?access_token={accessToken}&external_userid={externalUserId}";
+
+ return await CommonJsonSend.SendAsync(null, url, null, CommonJsonSendType.GET, timeOut).ConfigureAwait(false);
+ }, accessTokenOrAppKey).ConfigureAwait(false);
+ }
+
+ ///
+ /// 【异步方法】批量获取客户详情
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.GetExternalContactInfoBatchAsync", true)]
+ public static async Task GetExternalContactInfoBatchAsync(string accessTokenOrAppKey, string userid, string cursor = "", int limit = 50, int timeOut = Config.TIME_OUT)
+ {
+ return await ApiHandlerWapper.TryCommonApiAsync(async accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/batch/get_by_user?access_token={accessToken}";
+
+ var data = new
+ {
+ userid,
+ cursor,
+ limit
+ };
+
+ return await CommonJsonSend.SendAsync(null, url, data, CommonJsonSendType.POST, timeOut).ConfigureAwait(false);
+ }, accessTokenOrAppKey).ConfigureAwait(false);
+ }
+
+ ///
+ /// 修改客户备注信息
+ ///
+ /// 调用接口凭证
+ /// 请求报文
+ ///
+ ///
+ [ApiBind(NeuChar.PlatformType.WeChat_Work, "ExternalApi.UpdateExternalContactRemarkAsync", true)]
+ public static async Task UpdateExternalContactRemarkAsync(string accessTokenOrAppKey, UpdateExternalContactRemarkRequest rquest, int timeOut = Config.TIME_OUT)
+ {
+ return await ApiHandlerWapper.TryCommonApiAsync(async accessToken =>
+ {
+ var url = $"{Config.ApiWorkHost}/cgi-bin/externalcontact/remark?access_token={accessToken}";
+
+ return await CommonJsonSend.SendAsync(null, url, rquest, CommonJsonSendType.POST, timeOut).ConfigureAwait(false);
+ }, accessTokenOrAppKey).ConfigureAwait(false);
+ }
+
+ #endregion
+
#endregion
}
}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/GetExternalContactInfoBatchResult.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/GetExternalContactInfoBatchResult.cs
new file mode 100644
index 0000000000..a268df2109
--- /dev/null
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/GetExternalContactInfoBatchResult.cs
@@ -0,0 +1,63 @@
+/*----------------------------------------------------------------
+ Copyright (C) 2020 Senparc
+
+ 文件名:GetExternalContactInfoBatchResult.cs
+ 文件功能描述:批量获取客户详情 返回结果
+
+
+ 创建标识:gokeiyou - 20201013
+
+----------------------------------------------------------------*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Senparc.Weixin.Entities;
+
+namespace Senparc.Weixin.Work.AdvancedAPIs.External.ExternalJson
+{
+ ///
+ /// 批量获取客户详情 返回结果
+ ///
+ public class GetExternalContactInfoBatchResult : WorkJsonResult
+ {
+ ///
+ ///
+ ///
+ public List external_contact_list { get; set; }
+
+ ///
+ /// 分页游标,再下次请求时填写以获取之后分页的记录,如果已经没有更多的数据则返回空
+ ///
+ public string next_cursor { get; set; }
+ }
+
+ public class ExternalContactList
+ {
+ public ExternalContact external_contact { get; set; }
+ public FollowUser follow_info { get; set; }
+ }
+
+
+ public class ExternalContact
+ {
+ public string external_userid { get; set; }
+ public string name { get; set; }
+ public int type { get; set; }
+ public string avatar { get; set; }
+ public int gender { get; set; }
+ public string unionid { get; set; }
+ }
+
+ public class FollowUser
+ {
+ public string remark { get; set; }
+ public string description { get; set; }
+ public long creattime { get; set; }
+ public string[] tag_id { get; set; }
+ public string[] remark_mobiles { get; set; }
+ public int add_way { get; set; }
+ }
+}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/GetExternalContactListResult.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/GetExternalContactListResult.cs
new file mode 100644
index 0000000000..6a96c79503
--- /dev/null
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/GetExternalContactListResult.cs
@@ -0,0 +1,31 @@
+/*----------------------------------------------------------------
+ Copyright (C) 2020 Senparc
+
+ 文件名:GetExternalContactInfoBatchResult.cs
+ 文件功能描述:批量获取客户详情 返回结果
+
+
+ 创建标识:gokeiyou - 20201013
+
+----------------------------------------------------------------*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Senparc.Weixin.Entities;
+
+namespace Senparc.Weixin.Work.AdvancedAPIs.External.ExternalJson
+{
+ ///
+ /// 获取客户列表返回实体
+ ///
+ public class GetExternalContactListResult : WorkJsonResult
+ {
+ ///
+ /// 外部联系人的userid列表
+ ///
+ public List external_userid { get; set; }
+ }
+}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/UpdateExternalContactRemarkRequest.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/UpdateExternalContactRemarkRequest.cs
new file mode 100644
index 0000000000..b8884c3ec3
--- /dev/null
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/AdvancedAPIs/External/ExternalJson/UpdateExternalContactRemarkRequest.cs
@@ -0,0 +1,51 @@
+/*----------------------------------------------------------------
+ Copyright (C) 2020 Senparc
+
+ 文件名:GetExternalContactInfoBatchResult.cs
+ 文件功能描述:批量获取客户详情 返回结果
+
+
+ 创建标识:gokeiyou - 20201013
+
+----------------------------------------------------------------*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Senparc.Weixin.Work.AdvancedAPIs.External.ExternalJson
+{
+ public class UpdateExternalContactRemarkRequest
+ {
+ ///
+ /// 企业成员的userid
+ ///
+ public string userid { get; set; }
+ ///
+ /// 外部联系人userid
+ ///
+ public string external_userid { get; set; }
+ ///
+ /// 此用户对外部联系人的备注,最多20个字符
+ ///
+ public string remark { get; set; }
+ ///
+ /// 此用户对外部联系人的描述,最多150个字符
+ ///
+ public string description { get; set; }
+ ///
+ /// 此用户对外部联系人备注的所属公司名称,最多20个字符
+ ///
+ public string remark_company { get; set; }
+ ///
+ /// 此用户对外部联系人备注的手机号
+ ///
+ public string[] remark_mobiles { get; set; }
+ ///
+ /// 备注图片的mediaid
+ ///
+ public string remark_pic_mediaid { get; set; }
+ }
+}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_ExternalContact.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_ExternalContact.cs
index 9e4dca8780..894a4e6135 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_ExternalContact.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Entities/Request/Event/RequestMessageEvent_ExternalContact.cs
@@ -13,6 +13,9 @@
修改标识:OrchesAdam - 20200430
修改描述:v3.7.502 添加编辑企业客户事件
+ 修改标识:gokeiyou - 20201013
+ 修改描述:v3.7.604 添加外部联系人管理 > 客户管理相关接口
+
----------------------------------------------------------------*/
namespace Senparc.Weixin.Work.Entities.Request.Event
@@ -22,6 +25,8 @@ namespace Senparc.Weixin.Work.Entities.Request.Event
///
public interface IRequestMessageEvent_Change_ExternalContact_Base : IRequestMessageEventBase
{
+ string SuiteId { get; set; }
+ string AuthCorpId { get; set; }
ExternalContactChangeType ChangeType
{
get;
@@ -30,6 +35,8 @@ ExternalContactChangeType ChangeType
public class RequestMessageEvent_Change_ExternalContact_Base : RequestMessageEventBase, IRequestMessageEvent_Change_ExternalContact_Base
{
+ public string SuiteId { get; set; }
+ public string AuthCorpId { get; set; }
public override Work.Event Event
{
get { return Work.Event.CHANGE_EXTERNAL_CONTACT; }
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs
index b3297451d6..a81c10581f 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Enums.cs
@@ -29,6 +29,9 @@ v1.4.1 增加“接收通讯录变更事件”
修改标识:jiehanlin - 20200430
修改描述:v3.7.502 添加枚举“客户群变更事件”(CHANGE_EXTERNAL_CHAT)
+ 修改标识:gokeiyou - 20201013
+ 修改描述:v3.7.604 添加外部联系人管理 > 客户管理相关接口
+
----------------------------------------------------------------*/
namespace Senparc.Weixin.Work
@@ -183,7 +186,12 @@ public enum ThirdPartyInfo
///
/// 通讯录变更通知
///
- CHANGE_CONTACT//更新前字符串:CONTACT_SYNC
+ CHANGE_CONTACT,//更新前字符串:CONTACT_SYNC
+
+ ///
+ /// 外部联系人变更通知
+ ///
+ CHANGE_EXTERNAL_CONTACT
}
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 6cb53c8c76..68601f233c 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageHandler.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/MessageHandlers/WorkMessageHandler.cs
@@ -48,6 +48,9 @@ OnThirdPartyEvent_Contact_Sync 改名为 OnThirdPartyEvent_Change_Contact()
修改标识:OrchesAdam - 20200430
修改描述:添加“客户群变更事件”(OnEvent_ChangeExternalChatRequest)
+ 修改标识:gokeiyou - 20201013
+ 修改描述:v3.7.604 添加外部联系人管理 > 客户管理相关接口
+
----------------------------------------------------------------*/
using System;
@@ -739,6 +742,33 @@ private string OnThirdPartyEvent(IThirdPartyInfoBase thirdPartyInfo)
return OnThirdPartyEvent_Create_Auth((RequestMessageInfo_Create_Auth)thirdPartyInfo);
case ThirdPartyInfo.CHANGE_CONTACT:
return OnThirdPartyEvent_Change_Contact((RequestMessageInfo_Change_Contact)thirdPartyInfo);
+ case ThirdPartyInfo.CHANGE_EXTERNAL_CONTACT:
+ {
+ var cecRequestMessage = RequestMessage as IRequestMessageEvent_Change_ExternalContact_Base;
+ switch (cecRequestMessage.ChangeType)
+ {
+ case ExternalContactChangeType.add_external_contact:
+ return OnThirdPartyEvent_ChangeExternalContactAddRequest(
+ RequestMessage as RequestMessageEvent_Change_ExternalContact_Add);
+ case ExternalContactChangeType.edit_external_contact:
+ return OnThirdPartyEvent_ChangeExternalContactUpdateRequest(
+ RequestMessage as RequestMessageEvent_Change_ExternalContact_Modified);
+ case ExternalContactChangeType.add_half_external_contact:
+ return OnThirdPartyEvent_ChangeExternalContactAddHalfRequest(
+ RequestMessage as RequestMessageEvent_Change_ExternalContact_Add_Half);
+ case ExternalContactChangeType.del_external_contact:
+ return OnThirdPartyEvent_ChangeExternalContactDelRequest(
+ RequestMessage as RequestMessageEvent_Change_ExternalContact_Del);
+ case ExternalContactChangeType.del_follow_user:
+ return OnThirdPartyEvent_ChangeExternalContactDelFollowUserRequest(
+ RequestMessage as RequestMessageEvent_Change_ExternalContact_Del_FollowUser);
+ case ExternalContactChangeType.msg_audit_approved:
+ return OnThirdPartyEvent_ChangeExternalContactMsgAudit(
+ RequestMessage as RequestMessageEvent_Change_ExternalContact_MsgAudit);
+ default:
+ throw new UnknownRequestMsgTypeException("未知的外部联系人事件Event.CHANGE_EXTERNAL_CONTACT下属请求信息", null);
+ }
+ }
default:
throw new UnknownRequestMsgTypeException("未知的InfoType请求类型", null);
}
@@ -769,6 +799,40 @@ protected virtual string OnThirdPartyEvent_Suite_Ticket(RequestMessageInfo_Suite
return ThirdPartyEventSuccessResult;
}
+ #region 外部联系人
+
+ protected virtual string OnThirdPartyEvent_ChangeExternalContactAddRequest(RequestMessageEvent_Change_ExternalContact_Add requestMessage)
+ {
+ return ThirdPartyEventSuccessResult;
+ }
+
+ protected virtual string OnThirdPartyEvent_ChangeExternalContactUpdateRequest(RequestMessageEvent_Change_ExternalContact_Modified requestMessage)
+ {
+ return ThirdPartyEventSuccessResult;
+ }
+
+ protected virtual string OnThirdPartyEvent_ChangeExternalContactAddHalfRequest(RequestMessageEvent_Change_ExternalContact_Add_Half requestMessage)
+ {
+ return ThirdPartyEventSuccessResult;
+ }
+
+ protected virtual string OnThirdPartyEvent_ChangeExternalContactDelRequest(RequestMessageEvent_Change_ExternalContact_Del requestMessage)
+ {
+ return ThirdPartyEventSuccessResult;
+ }
+
+ protected virtual string OnThirdPartyEvent_ChangeExternalContactDelFollowUserRequest(RequestMessageEvent_Change_ExternalContact_Del_FollowUser requestMessage)
+ {
+ return ThirdPartyEventSuccessResult;
+ }
+
+ protected virtual string OnThirdPartyEvent_ChangeExternalContactMsgAudit(RequestMessageEvent_Change_ExternalContact_MsgAudit requestMessage)
+ {
+ return ThirdPartyEventSuccessResult;
+ }
+
+ #endregion
+
#endregion
}
}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/RequestMessageFactory.cs b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/RequestMessageFactory.cs
index 18e6facb52..e4ae0d3862 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/RequestMessageFactory.cs
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/RequestMessageFactory.cs
@@ -15,6 +15,10 @@
修改标识:Senparc - 20180909
修改描述:v3.1.2 RequestMessageInfo_Contact_Sync 改名为 RequestMessageInfo_Change_Contact
+
+ 修改标识:gokeiyou - 20201013
+ 修改描述:v3.7.604 添加外部联系人管理 > 客户管理相关接口
+
----------------------------------------------------------------*/
using System;
@@ -23,6 +27,7 @@
using System.Xml.Linq;
using Senparc.Weixin.Exceptions;
using Senparc.Weixin.Work.Entities;
+using Senparc.Weixin.Work.Entities.Request.Event;
using Senparc.NeuChar;
using Senparc.NeuChar.Helpers;
using Senparc.NeuChar.Context;
@@ -84,6 +89,9 @@ public static IWorkRequestMessageBase GetRequestEntity(TMC messageContext,
case ThirdPartyInfo.CHANGE_CONTACT://通讯录变更通知
requestMessage = new RequestMessageInfo_Change_Contact();
break;
+ case ThirdPartyInfo.CHANGE_EXTERNAL_CONTACT:
+ requestMessage = new RequestMessageEvent_Change_ExternalContact_Base();
+ break;
default:
throw new UnknownRequestMsgTypeException(string.Format("InfoType:{0} 在RequestMessageFactory中没有对应的处理程序!", infoType), new ArgumentOutOfRangeException());//为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常
}
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.csproj b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.csproj
index d35f7abb3c..47d1162b73 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.csproj
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.csproj
@@ -82,7 +82,13 @@
+
+
+
+
+
+
diff --git a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.netcore3.csproj b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.netcore3.csproj
index a85f4193c6..5c38face36 100644
--- a/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.netcore3.csproj
+++ b/src/Senparc.Weixin.Work/Senparc.Weixin.Work/Senparc.Weixin.Work.netcore3.csproj
@@ -2,7 +2,7 @@
net45;netstandard2.0;netstandard2.1
$(Net35FrameworkPathOverride)
- 3.7.603
+ 3.7.604
Senparc.Weixin.Work
Senparc.Weixin.Work
true
@@ -151,9 +151,10 @@
v3.7.502.1 “更新任务卡片”接口更新返回类型
v3.7.510.1 GetMemberResult 补充 open_userid、main_department(主部门)属性
v3.7.601 修改“删除标签成员”接口返回参数
- v3.7.603
+ v3.7.603
1、企业微信通讯录模块下 成员 实体 更新实体新增别名、MemberBase移除isleader
2、新增is_leader_in_dept
+ v3.7.604 添加外部联系人管理 > 客户管理相关接口
https://github.com/JeffreySu/WeiXinMPSDK
False
diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Helpers/EncryptHelper.cs b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Helpers/EncryptHelper.cs
index 288cd4a206..7f12c37dc8 100644
--- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Helpers/EncryptHelper.cs
+++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Helpers/EncryptHelper.cs
@@ -33,6 +33,9 @@ and limitations under the License.
修改标识:Senparc - 20190727
修改描述:完善 AES_Decrypt,处理偶然出现的 adding is invalid and cannot be removed 问题(未发现规律)
+ 修改标识:likui0623 - 20201013
+ 修改描述:添加解密到实例信息方法
+
----------------------------------------------------------------*/
using System;
diff --git a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.netcore3.csproj b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.netcore3.csproj
index 3fca6b7307..e8efe38221 100644
--- a/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.netcore3.csproj
+++ b/src/Senparc.Weixin.WxOpen/src/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen/Senparc.Weixin.WxOpen.netcore3.csproj
@@ -1,7 +1,7 @@
net45;netstandard2.0;netstandard2.1
- 3.8.600
+ 3.8.601
Senparc.Weixin.WxOpen
Senparc.Weixin.WxOpen
true
@@ -147,7 +147,7 @@
v3.8.511
1、小程序 WxOpenMessageHandler 增加 OnImageRequestAsync 和 OnTextRequestAsync
2、调整 MessageHandler 异步方法执行代码
- v3.8.512 修复普通链接二维码与小程序码-获取校验文件名称及内容
+ v3.8.512 添加解密到实例信息方法
https://github.com/JeffreySu/WeiXinMPSDK