Пример #1
0
        public string MessageToXml(WeChatMessage data)
        {
            return($@"<xml>
<ToUserName><![CDATA[{data.ToUserName}]]></ToUserName>
<FromUserName><![CDATA[{data.FromUserName}]]></FromUserName>
<CreateTime>{DateTimeOffset.Now.ToUnixTimeSeconds()}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{data.Content}]]></Content>
</xml>");
        }
Пример #2
0
        public IActionResult ReceiveMessages(string signature, string echostr, string timestamp, string nonce, string openid)
        {
            //校验signature
            if (!weChat.CheckSignature(timestamp, nonce, signature))
            {
                return(new JsonResult(new ApiModel
                {
                    code = -111,
                    msg = "签名校验错误"
                }));
            }
            //绑定接口URL时Token验证
            if (echostr != null)
            {
                return(new ContentResult()
                {
                    Content = echostr
                });
            }

            //处理消息
            if (Request.Body != null)
            {
                using (var reader = new StreamReader(Request.Body))
                {
                    var xml     = reader.ReadToEnd();
                    var message = weChat.HandleMessage(xml);

                    var reply = new WeChatMessage()
                    {
                        FromUserName = message.ToUserName,
                        ToUserName   = message.FromUserName,
                        MsgType      = "text"
                    };
                    //关注公众号返回Apikey
                    //if (message.MsgType == "event")
                    //{
                    //    if (message.Event== "subscribe")
                    //    {
                    //        reply.Content = CreateApiKey(message.FromUserName);
                    //    }
                    //    else if(message.Event== "unsubscribe")
                    //    {
                    //        RemoveApiKey(message.FromUserName);
                    //        reply.Content = "已取消绑定";
                    //    }
                    //}

                    if (message.MsgType == "text")
                    {
                        switch (message.Content)
                        {
                        case "绑定":
                            reply.Content = $"APIKEY:{CreateApiKey(message.FromUserName)}";
                            break;

                        case "取消绑定":
                            RemoveApiKey(message.FromUserName);
                            reply.Content = "已取消绑定,APIKEY已经失效";
                            break;

                        default:

                            reply.Content = "未知命令\n回复'绑定'获取一个APIKEY\n回复'取消绑定'移除已绑定的APIKEY";
                            break;
                        }
                        return(new ContentResult()
                        {
                            Content = weChat.MessageToXml(reply)
                        });
                    }
                    else
                    {
                        reply.Content = "只支持文本消息";
                        return(new ContentResult()
                        {
                            Content = weChat.MessageToXml(reply)
                        });
                    }
                }
            }
            else
            {
                return(new ContentResult()
                {
                    Content = ""
                });
            }
        }