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

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

C#微信公眾平臺開發(1)--服務器配置

2019-11-14 13:45:44
字體:
來源:轉載
供稿:網友

題記:最近公司需要開發微信服務號,由本人負責,以前雖然聽過微信開發,但并沒有認真的去了解,項目開發中,也邊看文檔邊開發,記錄自己的項目開發經驗;

1、注冊帳號--填寫服務器配置

在https://mp.weixin.QQ.com/ 微信公眾平臺上注冊帳號;

服務號是公司申請的微信公共賬號,訂閱號是個人申請的;

個人權限比較少;

第一步:填寫服務器配置

  登錄微信公眾平臺官網后,在公眾平臺后臺管理頁面 - 開發者中心頁,點擊“修改配置”按鈕,填寫服務器地址(URL)、Token和EncodingAESKey,其中URL是開發者用來接收微信消息和事件 的接口URL。Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。 EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。

  同時,開發者可選擇消息加解密方式:明文模式、兼容模式和安全模式。模式的選擇與服務器配置在提交后都會立即生效,請開發者謹慎填寫及選擇。加解密方式的默認狀態為明文模式,選擇兼容模式和安全模式需要提前配置好相關加解密代碼,詳情請參考消息體簽名及加解密部分的文檔。 

URL 必須為80端口,并且只能在服務器上的;

驗證URL是否有效

第二步:驗證服務器地址的有效性

開發者提交信息后,微信服務器將發送GET請求到填寫的服務器地址URL上,GET請求攜帶四個參數:

參數描述
signature微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
timestamp時間戳
nonce隨機數
echostr隨機字符串

開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。

 

      PRivate string Token = ConfigurationManager.AppSettings["Token"];        [HttpGet]        [ActionName("Index")]        public ActionResult Get(string signature, string timestamp, string nonce, string echostr)        {            if (CheckSignature.Check(signature, timestamp, nonce, Token))            {                return Content(echostr);//返回隨機字符串則表示驗證通過            }            else            {                return Content("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token) + "。如果你在瀏覽器中看到這句話,說明此地址可以被作為微信公眾賬號后臺的Url,請注意保持Token一致。");            }        }       /// <summary>        /// 檢查簽名是否正確        /// </summary>        /// <param name="signature"></param>        /// <param name="timestamp"></param>        /// <param name="nonce"></param>        /// <param name="token"></param>        /// <returns></returns>        public static bool Check(string signature, string timestamp, string nonce, string token = null)        {            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 = null)        {            token = token ?? Token;            var arr = new[] { token, timestamp, nonce }.OrderBy(z => z).ToArray();            var arrString = string.Join("", arr);            //var enText = FormsAuthentication.HashPassWordForStoringInConfigFile(arrString, "SHA1");//使用System.Web.Security程序集            var sha1 = System.Security.Cryptography.SHA1.Create();            var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));            StringBuilder enText = new StringBuilder();            foreach (var b in sha1Arr)            {                enText.AppendFormat("{0:x2}", b);            }            return enText.ToString();        }
View Code

需求:一個后臺對應多個公眾號

在服務器地址加上token參數;在后臺服務中,通過獲取token的值,與數據庫中的APPID對應起來,生成不同的access_Token;當然不同的公眾號token是唯一的

 

提交配置;

如果提交失敗的話,可以自己寫個日字查看原因;

驗證成功才能夠繼續使用更多的功能;

 -----------------------------------------------------------------------、

如果你覺得有幫助 請關注我的微信公眾號,沒有幫助你也可以添加喲!o(∩_∩)o 哈哈

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临湘市| 峨眉山市| 玉屏| 呼和浩特市| 铁力市| 丰县| 乌苏市| 西平县| 潼南县| 西林县| 墨竹工卡县| 静海县| 濉溪县| 阳春市| 武定县| 林甸县| 江阴市| 周至县| 田东县| 高雄县| 周至县| 清涧县| 拜城县| 临高县| 昭苏县| 洛隆县| 南阳市| 铅山县| 察雅县| 平原县| 芜湖市| 湾仔区| 德惠市| 禄劝| 天镇县| 英山县| 百色市| 巴彦县| 石阡县| 巴东县| 肇庆市|