第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 使用盛派微信SDK(Senparc.Weixin.MP)设计公众号被动回复API不返回信息问题

使用盛派微信SDK(Senparc.Weixin.MP)设计公众号被动回复API不返回信息问题

时间:2023-01-06 11:26:43

相关推荐

使用盛派微信SDK(Senparc.Weixin.MP)设计公众号被动回复API不返回信息问题

研究了一晚上,终于找到原因了,这坑挖的真是害人不浅

不能收到回复的原因为两点:

1.盛派官方的sdk例子根本是错误的,post请求也必须传参而不是使用盛派的model

2.返回结果要用Content,不要用盛派官方的WeixinResult或FixWeixinBugWeixinResult

下面说说两个重要的api

验证请求Get不多说了,比较简单,验证成功原样返回字符串,不成功返回空字符串

被动回复接口,盛派官方sample给的是这样的

我告诉你,这就是个坑,因为微信不会给你这么发post请求的,你如果这么写了你永远都收不到任何信息

正确写法是:

还有一个坑就是返回结果类型,只有第一个能用

最后贴下我的源代码

[Route("api/[controller]")][ApiController]public class WxMsgController : ControllerBase{static WxAppConfig wxCfg => WxAppConfig.Instance;[HttpGet]public ActionResult Get(string signature, string timestamp, string nonce, string echostr){// 验证成功返回echostr,否则返回空字符串return Content(!CheckSignature.Check(signature, timestamp, nonce, wxCfg.Token) ? "" : echostr);}[HttpPost]public ActionResult Post(string signature, string timestamp, string nonce, string msg_signature){var postModel = new PostModel{Signature = signature,Timestamp = timestamp,Nonce = nonce,Msg_Signature = msg_signature,};if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, wxCfg.Token)){return Content("参数错误!");}postModel.SetSecretInfo(wxCfg.Token, wxCfg.EncodingAESKey, wxCfg.AppId);var messageHandler = new CustomMessageHandler(Request.GetRequestMemoryStream(), postModel);// 接收消息messageHandler.Execute();// 执行微信处理过程return Content(messageHandler.ResponseDocument.ToString());}}

处理流程:

public class CustomMessageHandler : MessageHandler<MessageContext<IRequestMessageBase, IResponseMessageBase>>{#region 构造方法public CustomMessageHandler(Stream inputStream, PostModel postModel) : base(inputStream, postModel) { }public CustomMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount = 0) : base(inputStream, postModel, maxRecordCount) { }public CustomMessageHandler(RequestMessageBase requestMessage, PostModel postModel) : base(requestMessage, postModel) { }#endregionpublic override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage){var respMsg = CreateResponseMessage<ResponseMessageText>();respMsg.Content = "欢迎使用阴阳易演计算模型";return respMsg;}public override IResponseMessageBase OnTextRequest(RequestMessageText reqMsq){var respMsg = CreateResponseMessage<ResponseMessageText>();switch (reqMsq.Content.ToUpper()){case "ID":respMsg.Content = "您的OpenID是:" + respMsg.FromUserName;break;case "天气":respMsg.Content = "抱歉,还未开通此功能!";break;}return respMsg;}}

最终效果:

欢迎关注我的公众号:道易龙腾,这是一个易经三才计算的公众服务号,用于术数学计算和起卦排盘工具

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。