麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

用c#開(kāi)發(fā)微信(1)服務(wù)號(hào)的服務(wù)器配置和企業(yè)號(hào)的回調(diào)模式

2019-11-17 02:23:40
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

用c#開(kāi)發(fā)微信(1)服務(wù)號(hào)的服務(wù)器配置和企業(yè)號(hào)的回調(diào)模式 - url接入 (源碼下載)

最近研究了下服務(wù)號(hào)的服務(wù)器配置和企業(yè)號(hào)的回調(diào)模式。真正實(shí)現(xiàn)完后,覺(jué)得很簡(jiǎn)單,但一開(kāi)始還是走了點(diǎn)彎路,所以寫(xiě)了個(gè)web程序,只用改下配置文件里的參數(shù)就可以直接用了。下面介紹下詳細(xì)的用法以及實(shí)現(xiàn)步驟。

本文原文地址:用c#開(kāi)發(fā)微信(1)服務(wù)號(hào)的服務(wù)器配置和企業(yè)號(hào)的回調(diào)模式 - url接入 (源碼下載)

一、用法

1. 下載web程序

http://yunpan.cn/cjeTSAKwUVmv9 訪問(wèn)密碼 7ab3

2. 修改配置文件web.config

<appSettings>
   <!--微信的Token-->
   <add key="WeixinToken" value="dd"/>
   <add key="AppId" value="wxdbddd2bc"/>
   <add key="AppSecret" value="82f7ddd88e196"/>
   <!--企業(yè)號(hào)配置信息-->
   <add key="CorpToken" value="fddd"/>
   <add key="CorpId" value="wx1156d982ddda8"/>
   <add key="EncodingAESKey" value="aNvJOkGYddyGwf5Rg"/>
 </appSettings>

3. 發(fā)布到你的服務(wù)器上

4. 服務(wù)號(hào)和企業(yè)號(hào)里分別填上url及參數(shù):

企業(yè)號(hào):

image

服務(wù)號(hào):

image

二、實(shí)現(xiàn)方法

1. 新建一個(gè)web程序

2. 添加二個(gè)ashx文件(這里不用aspx頁(yè)面,是為了更簡(jiǎn)便),參考官方文檔,實(shí)現(xiàn)校驗(yàn)流程

服務(wù)號(hào):

image

完整源碼:

/// <summary>
        /// 處理微信服務(wù)器驗(yàn)證消息
        /// </summary>
        public void Auth()
        {
            string token = ConfigurationManager.AppSettings[Token].ToString();
            string signature = HttpContext.Current.Request.QueryString["signature"];
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
            string nonce = HttpContext.Current.Request.QueryString["nonce"];
            string echostr = HttpContext.Current.Request.QueryString["echostr"];
            if (HttpContext.Current.Request.HttpMethod.ToUpper() == "GET")
            {
                //get method - 僅在微信后臺(tái)填寫(xiě)URL驗(yàn)證時(shí)觸發(fā)
                if (CheckSignature(signature, timestamp, nonce, token))
                {
                    WriteContent(echostr); //返回隨機(jī)字符串則表示驗(yàn)證通過(guò)
                }
                else
                {
                    WriteContent("failed:" + signature + "," + GetSignature(timestamp, nonce, token) + "。" +
                                "如果你在瀏覽器中看到這句話,說(shuō)明此地址可以被作為微信公眾賬號(hào)后臺(tái)的Url,請(qǐng)注意保持Token一致。");
                }
                HttpContext.Current.Response.End();
            }
        }
        PRivate void WriteContent(string str)
        {
            HttpContext.Current.Response.Output.Write(str);
        }
        /// <summary>
        /// 檢查簽名是否正確
        /// </summary>
        /// <param name="signature"></param>
        /// <param name="timestamp"></param>
        /// <param name="nonce"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static bool CheckSignature(string signature, string timestamp, string nonce, string token)
        {
            return signature == GetSignature(timestamp, nonce, token);
        }
        /// <summary>
        /// 返回正確的簽名
        /// </summary>
        /// <param name="timestamp"></param>
        /// <param name="nonce"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        public static string GetSignature(string timestamp, string nonce, string token)
        {
            string[] arr = new[] { token, timestamp, nonce }.OrderBy(z => z).ToArray();
            string arrString = string.Join("", arr);
            System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1.Create();
            byte[] sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));
            StringBuilder enText = new StringBuilder();
            foreach (var b in sha1Arr)
            {
                enText.AppendFormat("{0:x2}", b);
            }
            return enText.ToString();
        }

官方接入文檔: http://mp.weixin.QQ.com/wiki/17/2d4265491f12608cd170a95559800f2d.html

企業(yè)號(hào):

image

完整源碼:

public void ProcessRequest(HttpContext context)
       {
           string postString = string.Empty;
           if (HttpContext.Current.Request.HttpMethod.ToUpper() == "GET")
           {
               Auth();
           }
       }
/// <summary>
       /// 成為開(kāi)發(fā)者的第一步,驗(yàn)證并相應(yīng)服務(wù)器的數(shù)據(jù)
       /// </summary>
       private void Auth()
       {
           string token = ConfigurationManager.AppSettings["CorpToken"];//從配置文件獲取Token
           
           string encodingAESKey = ConfigurationManager.AppSettings["EncodingAESKey"];//從配置文件獲取EncodingAESKey
           
           string corpId = ConfigurationManager.AppSettings["CorpId"];//從配置文件獲取corpId
           string echoString = HttpContext.Current.Request.QueryString["echoStr"];
           string signature = HttpContext.Current.Request.QueryString["msg_signature"];//企業(yè)號(hào)的 msg_signature
           string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
           string nonce = HttpContext.Current.Request.QueryString["nonce"];
           string decryptEchoString = "";
           if (CheckSignature(token, signature, timestamp, nonce, corpId, encodingAESKey, echoString, ref decryptEchoString))
           {
               if (!string.IsNullO
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美另类69xxxxx 视频 | 欧美福利视频一区二区三区 | 久久精品欧美一区二区三区不卡 | 国产精品爆操 | 国产亚洲精品美女久久久 | 国产一区二区视频网站 | 国产羞羞视频在线免费观看 | 日本欧美一区二区三区视频麻豆 | 72pao成人国产永久免费视频 | 免费视频a | 日日爱影院| 男人的天堂视频网站 | 欧美黄色一级带 | 欧美成人黄色片 | 一级黄色免费观看 | www.国产一区.com | 91九色精品国产 | 成人在线视频播放 | 污在线观看网站 | 亚洲一区 国产精品 | 国产亚洲综合一区二区 | 中文字幕精品在线播放 | 黄网免费看 | 草草久久久 | 国产成人精品午夜 | 亚洲国产美女视频 | 免费国产一级淫片 | 国产91大片 | 欧美顶级毛片在线播放小说 | 影视免费观看 | 亚洲视频在线一区二区 | 手机av在线电影 | chengrenzaixian | 午夜国产小视频 | 日本a∨精品中文字幕在线 狠狠干精品视频 | 99爱视频 | 国产片91| 成人性视频免费网站下载软件 | 91成人一区二区三区 | 亚洲自拍第一 | 国产精品自拍啪啪 |