OpenCheckMessageHandler.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Web.Configuration;
  7. using Senparc.Weixin.MP.Entities;
  8. using Senparc.Weixin.MP.Helpers;
  9. using Senparc.Weixin.MP.MessageHandlers;
  10. using Senparc.Weixin.MP.Sample.CommonService.CustomMessageHandler;
  11. using Senparc.Weixin.MP.Entities.Request;
  12. using Senparc.Weixin.MP.Sample.CommonService.OpenTicket;
  13. using Senparc.Weixin.MP.Sample.CommonService.Utilities;
  14. namespace Senparc.Weixin.MP.Sample.CommonService.MessageHandlers.OpenMessageHandler
  15. {
  16. /// <summary>
  17. /// 开放平台全网发布之前需要做的验证
  18. /// </summary>
  19. public class OpenCheckMessageHandler : MessageHandler<CustomMessageContext>
  20. {
  21. //private string testAppId = "wx570bc396a51b8ff8";
  22. private string componentAppId = WebConfigurationManager.AppSettings["Component_Appid"];
  23. private string componentSecret = WebConfigurationManager.AppSettings["Component_Secret"];
  24. public OpenCheckMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount = 0)
  25. : base(inputStream, postModel, maxRecordCount)
  26. {
  27. }
  28. public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
  29. {
  30. if (requestMessage.Content == "TESTCOMPONENT_MSG_TYPE_TEXT")
  31. {
  32. var responseMessage = requestMessage.CreateResponseMessage<ResponseMessageText>();
  33. responseMessage.Content = requestMessage.Content + "_callback";//固定为TESTCOMPONENT_MSG_TYPE_TEXT_callback
  34. return responseMessage;
  35. }
  36. if (requestMessage.Content.StartsWith("QUERY_AUTH_CODE:"))
  37. {
  38. string openTicket = OpenTicketHelper.GetOpenTicket(componentAppId);
  39. var query_auth_code = requestMessage.Content.Replace("QUERY_AUTH_CODE:", "");
  40. try
  41. {
  42. var component_access_token = Open.ComponentAPIs.ComponentApi.GetComponentAccessToken(componentAppId, componentSecret, openTicket).component_access_token;
  43. var oauthResult = Open.ComponentAPIs.ComponentApi.QueryAuth(component_access_token, componentAppId, query_auth_code);
  44. //调用客服接口
  45. var content = query_auth_code + "_from_api";
  46. var sendResult = AdvancedAPIs.CustomApi.SendText(oauthResult.authorization_info.authorizer_access_token,
  47. requestMessage.FromUserName, content);
  48. }
  49. catch (Exception ex)
  50. {
  51. throw;
  52. }
  53. }
  54. return null;
  55. }
  56. public override IResponseMessageBase OnEventRequest(IRequestMessageEventBase requestMessage)
  57. {
  58. var responseMessage = requestMessage.CreateResponseMessage<ResponseMessageText>();
  59. responseMessage.Content = requestMessage.Event + "from_callback";
  60. return responseMessage;
  61. }
  62. public override Entities.IResponseMessageBase DefaultResponseMessage(Entities.IRequestMessageBase requestMessage)
  63. {
  64. var responseMessage = requestMessage.CreateResponseMessage<ResponseMessageText>();
  65. responseMessage.Content = "默认消息";
  66. return responseMessage;
  67. }
  68. }
  69. }