亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
成為開發(fā)者
關(guān)注帳號(hào),訊息,自動(dòng)應(yīng)答,事件回應(yīng)
首頁(yè) 微信小程式 微信開發(fā) C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)訊息,自動(dòng)應(yīng)答,事件回應(yīng),自訂選單

C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)訊息,自動(dòng)應(yīng)答,事件回應(yīng),自訂選單

Feb 13, 2017 pm 12:00 PM

成為開發(fā)者


string[]?ArrTmp?=?{?"token",?
Request["timestamp"],?
Request["nonce"]?};
Array.Sort(ArrTmp);?????
//字典排序string?tmpStr?=?string.Join("",?ArrTmp);
tmpStr?=?FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,?"SHA1");
tmpStr?=?tmpStr.ToLower();if?(tmpStr?!=?Request["signature"].ToLower())
{
???Response.Write(Request["echostr"]);
}


關(guān)注帳號(hào),訊息,自動(dòng)應(yīng)答,事件回應(yīng)

C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)消息,自動(dòng)應(yīng)答,事件響應(yīng),自定義菜單 ?C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)消息,自動(dòng)應(yīng)答,事件響應(yīng),自定義菜單 reee

namespace ElegantWM.WebUI.Areas.WeiXin.Controllers
{
    /// <summary>
    /// 微信公共服務(wù)類
    /// </summary>
    public class RobotController : BaseController
    {
        /// <summary>
        /// 接收微信請(qǐng)求接口,認(rèn)證的接口
        /// </summary>
        /// <returns></returns>
        public ContentResult Index()
        {
            string result = AnalyzeXmlFromWeiXin();
            return Content(result);
        }

        /// <summary>
        /// 分析微信POST到本服務(wù)器的XML數(shù)據(jù)
        /// </summary>
        /// <param name="xmlStream"></param>
        /// <returns></returns>
        private string AnalyzeXmlFromWeiXin()
        {
            StreamReader reader = new StreamReader(Request.InputStream);
            string xml = reader.ReadToEnd();
            //獲取MsgType
            log.Info(xml);
            string msgType = XmlHelper.ReadXmlStr(xml, "/xml/MsgType", "");
            switch (msgType)
            {
                case "event"://如果是事件
                    return OnAttention(xml);
                case "text"://如果是文本消息
                    return OnReceiveTextMsg(xml);
                default:
                    return "不被支持的關(guān)鍵字!";
            }
        }

        /// <summary>
        /// 響應(yīng)文本消息
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        private string OnReceiveTextMsg(string xml)
        {
            WxTextMsg msg = XmlEntityExchange<WxTextMsg>.ConvertXml2Entity(xml);
            //返回消息,互換收發(fā)用戶
            string toUser = msg.FromUserName;
            msg.FromUserName = msg.ToUserName;
            msg.ToUserName = toUser;

            switch (msg.Content.Trim())
            {
                case "?":
                    msg.Content = HelpDocument();
                    break;
                case "?":
                    msg.Content = HelpDocument();
                    break;
                case "1":
                    msg.Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    break;
                case "2":
                    msg.Content = Tools.HttpCrossDomain.Get("http://www.weather.com.cn/data/sk/101210301.html");
                    break;
                case "3":
                    msg.Content = "來(lái)吧,想嘮點(diǎn)什么呢? [偷笑]";
                    break;
                case "你是男的女的":
                    msg.Content = "姑娘一枚 [偷笑]";
                    break;
                default:
                    msg.Content = "抱歉哦,我不認(rèn)識(shí)您輸入的命令。/害羞 /:,@-D";
                    break;
            }
            return XmlEntityExchange<WxTextMsg>.ConvertEntity2Xml(msg);
        }
        /// <summary>
        /// 獲取幫助菜單文檔
        /// </summary>
        /// <returns></returns>
        private string HelpDocument()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("HI,請(qǐng)回復(fù)數(shù)字,選擇服務(wù)").Append("\n\n");
            sb.Append("1. 當(dāng)前時(shí)間").Append("\n");
            sb.Append("2. 天氣信息").Append("\n");
            sb.Append("3. 聊天嘮嗑").Append("\n");
            sb.Append("n. 更多服務(wù)開發(fā)中...").Append("\n");
            sb.Append("回復(fù)【?】顯示此幫助菜單");
            return sb.ToString();
        }

        /// <summary>
        /// 當(dāng)用戶關(guān)注微信帳號(hào)的時(shí)候觸發(fā),事件響應(yīng)
        /// </summary>
        /// <param name="xml"></param>
        private string OnAttention(string xml)
        {
            WxEvent wxevent = XmlEntityExchange<WxEvent>.ConvertXml2Entity(xml);
            WxTextMsg msg = new WxTextMsg();
            msg.ToUserName = wxevent.FromUserName;
            msg.FromUserName = wxevent.ToUserName;
            msg.CreateTime = DateTime.Now.Ticks;
            msg.MsgType = "text";
            //如果是關(guān)注,則發(fā)送歡迎消息
            switch (wxevent.Event)
            {
                case "subscribe":
                    msg.Content = System.Configuration.ConfigurationManager.AppSettings["DefaultWxMsg"];
                    break;
                case "CLICK":
                    msg.Content = "您單擊的是:" + wxevent.EventKey;
                    break;
                default:
                    msg.Content = "暫未處理的事件:Event" + wxevent.Event + ";EventKey:" + wxevent.EventKey;
                    break;
            }
            string rst = XmlEntityExchange<WxTextMsg>.ConvertEntity2Xml(msg);
            log.Info(rst);
            return rst;
        }
    }
}

C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)消息,自動(dòng)應(yīng)答,事件響應(yīng),自定義菜單 基礎(chǔ)類:http請(qǐng)求C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)消息,自動(dòng)應(yīng)答,事件響應(yīng),自定義菜單

//實(shí)體
public class WxEvent
    {
        /// <summary>
        /// 接收人
        /// </summary>
        public string ToUserName { get; set; }
        /// <summary>
        /// 發(fā)送人
        /// </summary>
        public string FromUserName { get; set; }
        /// <summary>
        /// 時(shí)間
        /// </summary>
        public string CreateTime { get; set; }
        /// <summary>
        /// 類型
        /// </summary>
        public string MsgType { get; set; }
        /// <summary>
        /// 事件
        /// </summary>
        public string Event { get; set; }

        public string EventKey { get; set; }
    }

public class WxTextMsg
    {
        /// <summary>
        /// 接收人
        /// </summary>
        public string ToUserName { get; set; }
        /// <summary>
        /// 發(fā)送人
        /// </summary>
        public string FromUserName { get; set; }
        /// <summary>
        /// 時(shí)間
        /// </summary>
        public long CreateTime { get; set; }
        /// <summary>
        /// 類型
        /// </summary>
        public string MsgType { get; set; }
        /// <summary>
        /// 內(nèi)容
        /// </summary>
        public string Content { get; set; }
    }

獲取Token:C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)消息,自動(dòng)應(yīng)答,事件響應(yīng),自定義菜單

//XML和實(shí)體對(duì)象間的相互轉(zhuǎn)化
namespace ElegantWM.WebUI.Areas.WeiXin
{
    public class XmlEntityExchange<T> where T : new()
    {
        /// <summary>
        /// 將XML轉(zhuǎn)換為對(duì)象
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static T ConvertXml2Entity(string xml)
        {
            XmlDocument doc = new XmlDocument();
            PropertyInfo[] propinfos = null;
            doc.LoadXml(xml);
            XmlNodeList nodelist = doc.SelectNodes("/xml");
            T entity = new T();
            foreach (XmlNode node in nodelist)
            {
                //初始化propertyinfo
                if (propinfos == null)
                {
                    Type objtype = entity.GetType();
                    propinfos = objtype.GetProperties();
                }
                //填充entity類的屬性
                foreach (PropertyInfo pi in propinfos)
                {
                    XmlNode cnode = node.SelectSingleNode(pi.Name);
                    pi.SetValue(entity, Convert.ChangeType(cnode.InnerText, pi.PropertyType), null);
                }
            }
            return entity;
        }

        /// <summary>
        /// 構(gòu)造微信消息
        /// </summary>
        /// <param name="t">對(duì)象實(shí)體</param>
        /// <returns>返回微信消息xml格式</returns>
        public static string ConvertEntity2Xml(T t)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("<xml>");
            Type objtype = t.GetType();
            //填充entity類的屬性
            foreach (PropertyInfo pi in objtype.GetProperties())
            {
                object obj = pi.GetValue(t);
                string value = obj == null ? "" : obj.ToString();
                if (pi.PropertyType.Name.ToLower() == "int64")
                    builder.Append("<" + pi.Name + ">" + value + "</" + pi.Name + ">");
                else
                    builder.Append("<" + pi.Name + "><![CDATA[" + value + "]]></" + pi.Name + ">");
            }
            builder.Append("</xml>");
            return builder.ToString();
        }
    }
}


獲取和更新選單

事件回應(yīng),自訂選單?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72