using Microsoft.Extensions.DependencyInjection; using Nirvana.Common; using Senparc.NeuChar.Entities; using Senparc.NeuChar.Helpers; using Senparc.Weixin.MP.Entities; using Senparc.Weixin.MP.Entities.Request; using Senparc.Weixin.MP.MessageHandlers; using System; using System.IO; using System.Threading.Tasks; using YBDevice.Core; using YBDevice.WX.MessageHandlers.CustomMessageHandler; using YBDevice.WXApplication.WXInfo; namespace YBDevice.WX.MessageHandlers { /// /// 开放平台全网发布之前需要做的验证 /// public class OpenCheckMessageHandler : MessageHandler { private string componentAppId = Senparc.Weixin.Config.SenparcWeixinSetting.Component_Appid; private string componentSecret = Senparc.Weixin.Config.SenparcWeixinSetting.Component_Secret; public OpenCheckMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount = 0, IServiceProvider serviceProvider = null) : base(inputStream, postModel, maxRecordCount, serviceProvider: serviceProvider) { } /// /// 消息请求验证 /// /// /// public override async Task OnTextRequestAsync(RequestMessageText requestMessage) { if (requestMessage.Content == "TESTCOMPONENT_MSG_TYPE_TEXT") { var responseMessage = requestMessage.CreateResponseMessage(); responseMessage.Content = requestMessage.Content + "_callback";//固定为TESTCOMPONENT_MSG_TYPE_TEXT_callback return responseMessage; } if (requestMessage.Content.StartsWith("QUERY_AUTH_CODE:")) { var wxService = base.ServiceProvider.GetService(); string openTicket = await wxService.GetOpenTicketAsync(componentAppId); var query_auth_code = requestMessage.Content.Replace("QUERY_AUTH_CODE:", ""); try { var component_access_token = Senparc.Weixin.Open.ComponentAPIs.ComponentApi.GetComponentAccessToken(componentAppId, componentSecret, openTicket).component_access_token; var oauthResult = Senparc.Weixin.Open.ComponentAPIs.ComponentApi.QueryAuth(component_access_token, componentAppId, query_auth_code); //调用客服接口 var content = query_auth_code + "_from_api"; var sendResult = Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(oauthResult.authorization_info.authorizer_access_token, requestMessage.FromUserName, content); } catch (Exception ex) { var loggerService = base.ServiceProvider.GetService(); var msg = $"{requestMessage.ToJson()}"; loggerService.AddErrorLogger(ex, msg, "消息请求验证"); } } return null; } /// /// 事件请求验证 /// /// /// public override IResponseMessageBase OnEventRequest(IRequestMessageEventBase requestMessage) { var responseMessage = requestMessage.CreateResponseMessage(); responseMessage.Content = requestMessage.Event + "from_callback"; return responseMessage; } public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { var responseMessage = requestMessage.CreateResponseMessage(); responseMessage.Content = "默认消息"; return responseMessage; } } }