国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用c#開發微信(1)服務號的服務器配置和企業號的回調模式

2019-11-17 02:23:40
字體:
來源:轉載
供稿:網友

用c#開發微信(1)服務號的服務器配置和企業號的回調模式 - url接入 (源碼下載)

最近研究了下服務號的服務器配置和企業號的回調模式。真正實現完后,覺得很簡單,但一開始還是走了點彎路,所以寫了個web程序,只用改下配置文件里的參數就可以直接用了。下面介紹下詳細的用法以及實現步驟。

本文原文地址:用c#開發微信(1)服務號的服務器配置和企業號的回調模式 - url接入 (源碼下載)

一、用法

1. 下載web程序

http://yunpan.cn/cjeTSAKwUVmv9 訪問密碼 7ab3

2. 修改配置文件web.config

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

3. 發布到你的服務器上

4. 服務號和企業號里分別填上url及參數:

企業號:

image

服務號:

image

二、實現方法

1. 新建一個web程序

2. 添加二個ashx文件(這里不用aspx頁面,是為了更簡便),參考官方文檔,實現校驗流程

服務號:

image

完整源碼:

/// <summary>
        /// 處理微信服務器驗證消息
        /// </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 - 僅在微信后臺填寫URL驗證時觸發
                if (CheckSignature(signature, timestamp, nonce, token))
                {
                    WriteContent(echostr); //返回隨機字符串則表示驗證通過
                }
                else
                {
                    WriteContent("failed:" + signature + "," + GetSignature(timestamp, nonce, token) + "。" +
                                "如果你在瀏覽器中看到這句話,說明此地址可以被作為微信公眾賬號后臺的Url,請注意保持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

企業號:

image

完整源碼:

public void ProcessRequest(HttpContext context)
       {
           string postString = string.Empty;
           if (HttpContext.Current.Request.HttpMethod.ToUpper() == "GET")
           {
               Auth();
           }
       }
/// <summary>
       /// 成為開發者的第一步,驗證并相應服務器的數據
       /// </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"];//企業號的 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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 田林县| 扎赉特旗| 宁武县| 东至县| 临邑县| 杨浦区| 成安县| 汾阳市| 凉山| 永安市| 通许县| 乐昌市| 大渡口区| 林甸县| 普兰店市| 淮北市| 玉田县| 邹平县| 盐津县| 时尚| 新龙县| 金坛市| 庆云县| 元阳县| 甘孜| 贺州市| 漯河市| 景东| 长宁县| 新安县| 德阳市| 德安县| 武城县| 民权县| 蒲江县| 安多县| 姜堰市| 镇沅| 渭源县| 延川县| 郴州市|