国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
開発者になる
アカウントをフォローし、メッセージ、自動(dòng)応答、イベント応答をトリガーする
ホームページ WeChat アプレット WeChatの開発 C# .net WeChat開発、開発認(rèn)証、アテンショントリガーメッセージ、自動(dòng)応答、イベント応答、カスタムメニュー

C# .net WeChat開発、開発認(rèn)証、アテンショントリガーメッセージ、自動(dòng)応答、イベント応答、カスタムメニュー

Feb 13, 2017 pm 12:00 PM

開発者になる


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"]);
}


アカウントをフォローし、メッセージ、自動(dò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),自定義菜單

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),自定義菜單

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 = "來吧,想嘮點(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;
        }
    }
}

補(bǔ)助クラス

//實(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; }
    }
//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();
        }
    }
}

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

基本クラス: httpリクエスト

/* *
 * Copyright ? 2013 CCT All Rights Reserved 
 * 作者:JackChain 
 * 時(shí)間:2013/8/23 18:21:23
 * 功能:跨域訪問
 * 版本:V1.0
 *
 * 修改人:
 * 修改點(diǎn):
 * */namespace ElegantWM.Tools
{    public class HttpCrossDomain
    {        /// <summary>
        /// 跨域訪問        /// </summary>
        /// <param name="url"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static string Post(string url, string param, int time = 60000)
        {
            Uri address = new Uri(url);
            HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
            request.Method = "POST";
            request.ContentType = "application/json;charset=utf-8"; //"application/x-www-form-urlencoded";
            request.Timeout = time;            byte[] byteData = UTF8Encoding.UTF8.GetBytes(param == null ? "" : param);
            request.ContentLength = byteData.Length;            using (Stream postStream = request.GetRequestStream())
            {
                postStream.Write(byteData, 0, byteData.Length);
            }            string result = "";            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                StreamReader reader = new StreamReader(response.GetResponseStream());
                result = reader.ReadToEnd();
            }            return (result);
        }        /// <summary>
        /// 跨域訪問        /// </summary>
        /// <param name="url"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static string Get(string url, int time = 60000)
        {
            Uri address = new Uri(url);
            HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
            request.Method = "GET";
            request.ContentType = "application/json;charset=utf-8"; //"application/x-www-form-urlencoded";
            request.Timeout = time;            string result = "";            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                StreamReader reader = new StreamReader(response.GetResponseStream());
                result = reader.ReadToEnd();
            }            return (result);
        }

    }
}


トークンの取得:


public class CommonController : Controller
    {
        /// <summary>
        /// 獲取微信憑證
        /// </summary>
        /// <returns></returns>
        public JsonResult GetWxCredential()
        {
            string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
            url = string.Format(url, ConfigurationManager.AppSettings["AppId"], ConfigurationManager.AppSettings["AppSecret"]);
            string rst = HttpCrossDomain.Get(url);
            if (rst.Contains("access_token"))
            {
                string tokenId=rst.Replace("{\"access_token\":\"", "").Replace("\",\"expires_in\":7200}", "");
                CacheHelper.CacheInsertAddMinutes("access_token",tokenId,120);
                return Json(tokenId, JsonRequestBehavior.AllowGet);
            }
            else
                return Json(rst, JsonRequestBehavior.AllowGet);
        }
    }


メニューの取得と更新


/// <summary>
        /// 獲取微信菜單
        /// </summary>
        /// <returns></returns>
        public JsonResult Get()
        {
            string url = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=";
            if (CacheHelper.CacheValue("access_token") != null)
            {
                url = url + CacheHelper.CacheValue("access_token").ToString();
            }
            string rst = HttpCrossDomain.Get(url);
            return Json(rst,JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// 創(chuàng)建Menu
        /// </summary>
        /// <param name="json"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult Create(string json)
        {
            string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=";
            if (CacheHelper.CacheValue("access_token") != null)
            {
                url = url+CacheHelper.CacheValue("access_token").ToString();
            }
            string rst = HttpCrossDomain.Post(url, json);
            return Json(rst);
        }


その他の C# .net WeChat 開発、開発認(rèn)証、トリガー メッセージのフォロー、自動(dòng)応答、イベントレスポンス、カスタムメニューに関する関連記事は、PHP 中國語 Web サイトに注目してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)