這幾年,微信很是流行,也是惟一能夠和QQ抗衡的即時通,固然他們是一家子,微信除了有即時通的功能外,還有一些其餘的功能,公衆號就是其中之一,微信創始人甚至揚言微信能夠實現大部分APP的功能,鑑於這樣,最近兩年不少開發者都轉向了微信開發這一塊,甚至有些公司也專門作微信開發的,微信公衆號能夠提供新聞推送,能夠進行業務處理等等html
本人接觸微信開發也很少,只是公司有個項目用到了,可是在通過一次微信開發之後,感受基本的使用也不難,下面是本人在開發中的一些總結,本人才疏學淺,不排除有講得不對或者漏了的地方,多多包涵,也望能指出,互相學習,互相進步...web
下面是部分筆記json
我的只能註冊訂閱號https://mp.weixin.qq.com
訂閱號 服務號 企業號 三者能使用的功能不相同
註冊的帳號須要跟微信號綁定(微信號須要綁定銀行卡)
註冊地址:
https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN
註冊須要郵箱激活安全
微信公衆平臺登錄後,用戶能夠直接使用微信公衆平臺進行消息羣發,添加微信公衆號菜單等服務器
給公衆號添加測試帳號
做爲開發人員,可使用普通微信號來測試功能
登錄公衆平臺後,在開發》開發者工具》裏面能夠掃描二維碼添加測試帳號
此過程須要掃描你微信幾回
掃描測試號二維碼能夠給測試公衆號添加測試帳號
在功能》羣發功能》添加文字羣發,
看測試帳號是否收到
不過因爲上面直接公衆平臺羣發功能是正式的功能,因此一天只能羣發一條消息 測試號則比這個權限多微信
該功能容許咱們調用微信的接口,進行第三方系統的對接,這樣咱們在微信平臺上面的不少操做,就不須要在微信平臺上面操做了,咱們能夠直接在咱們本身的系統上面進行微信公衆平臺的一些操做,好比添加菜單,羣發消息,獲取用戶,消息回覆等等
微信開發
http://mp.weixin.qq.com/wiki/home/index.html
咱們本課程就是基於微信提供的開發文檔
剛纔註冊的公衆號若是未認證測擁有的權限是不i同樣的
http://mp.weixin.qq.com/wiki/13/8d4957b72037e3308a0ca1b21f25ae8d.html
具體能夠查看上面的
app
在開發》基本配置哪裏,若是首次進入,則須要贊成協議
點擊成爲開發者後,會爲開發者生產appid和appsecret
這兩個是公衆號和微信服務器進行交互的帳號密碼
微信公衆平臺
服務器配置工具
填寫URL token 消息加密密鑰等
URL:開發者用來接收微信消息和事件的接口地址
Token:能夠任意填寫,用做生成簽名k
該Token會和接口URL中包含的Token進行比對,從而驗證安全性
EncodingAESKey由開發者手動填寫或隨機生成,將用做消息體加解密密鑰
還能夠選擇消息加解密方式:明文模式(默認)、兼容模式和安全模式
上面的配置會保存當即生效,須要謹慎操做
添加服務器配置的時候 須要先開啓,開啓須要補全資料,好比上傳頭像等
微信是服務器和服務器之間的交換,因此咱們須要一臺服務器
(虛擬空間,VPS均可以)
搭建一個web測試站,須要註冊一個域名(80端口的)
能夠是子域名 好比
weixin.bamn.cn
我還須要爲填寫的URL進行一些操做
若是你的接口是PHP的能夠參考官網提供的
咱們這裏是ASP.NET:
http://weixin.bamn.cn/WeiXinTokenApi.aspx 若是是https則443端口
微信服務器那邊會往咱們上面的地址 進行get操做,咱們接口中能夠拿到微信服務器傳過來的三個參數signature timestamp nonce
1獲取微信服務器傳過來的四個參數
2 對這三個參數進行「字典序排序」
3 拼接三個字符串
4 對拼接的字符串進行sha1加密
4 成功驗證 原樣返回
具體能夠查看WeiXinTokenApi.aspx.cs頁面的代碼
protected void Page_Load(object sender, EventArgs e) { if (Request.RequestType.ToLower().Equals("post")) { //接收消息 ResponseMsg(); } else { //校驗接口 CheckSignature(); } Response.End(); }
檢驗接口
/// /// 校驗方法 /// private void CheckSignature() { try { //1獲取微信服務器傳過來的四個參數 string signature = Request.QueryString["signature"]; string timestamp = Request.QueryString["timestamp"]; string nonce = Request.QueryString["nonce"]; string echostr = Request.QueryString["echostr"];//該字符串用來成功驗證後原樣返回 string token = TOKEN; string[] tmpArr = new string[] { token, timestamp, nonce };//2 對這三個參數進行「字典序排序」 Array.Sort(tmpArr); string tmpStr = string.Join("", tmpArr);//3 拼接三個字符串 tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//4 sha1加密 tmpStr = tmpStr.ToLower(); if (tmpStr == signature) { SetCacheDateTime("Item", tmpStr + ":" + signature + " " + echostr, 3600); //4 成功驗證原樣返回 HttpContext.Current.Response.Write(echostr); } else { SetCacheDateTime("Item", "驗證不經過", 3600); Response.Write("驗證不經過");//隨便返回 } } catch (Exception ex) { SetCacheDateTime("Item", ex.Message, 3600); Response.Write(ex.Message);//隨便返回 }
如看視頻 能夠訪問 http://www.iqiyi.com/u/2086142358
未完待續 但願對你有幫助