本次要講述的是一個本人完整微信服務號開發的經驗分享,微信服務號的做品:請搜索微信號:zjaisino
,名稱:愛信諾Aisino一站式服務平臺。(這裏聲明,這不是打廣告,只是爲了方便各位開花攻城獅朋友配合下面的文章理解)。
注:微信服務號的開發能夠用的語言有不少,如Java、PHP、ASP.NET、Ruby、Python、Note.js
均可以,我是一名Java
攻城獅,因此下面介紹的開發語言是JAVA
,言歸正傳,Let's gohtml
訂閱號,天天一次推送消息,可是高級權限很少。
服務號,每個月四次推送消息,可是高級權限多。
因此推廣用途請使用訂閱號,服務用途請使用服務號。前端
AppID
和AppSecret
這兩個是公衆號後臺的參數。access_token
是公衆號的全局惟一票據,公衆號調用各接口時都需使用access_token
,由上面兩個參數處理獲得(注意:處理好7200s
的時效性)。OpenID
這是業務處理最核心的參數,(是你的微信跟這個微信號之間的一個惟一的ID
,注意不管你是否關注,這個ID
都是不變的,並且已經存在)。數據庫
咱們要處理本身的業務,有本身的後臺工程是必須的,可是如何將微信服務號跟咱們的工程創建接入關係呢json
URL
填寫咱們的工程的一個action
Token
填寫跟咱們工程裏面設置的Token
參數內容同樣便可
開始接入(端口要是80!)api
點擊提交的時候,其實微信服務器是往你填寫的action
的傳輸方式是get
不是post
,因此代碼里根據這個去處理,返回他須要的簽名檢驗結果便可,這樣就接入完成了。服務器
大體分兩種:
一種是:文本(Text
),一種是:事件(Event
)
文本交互,俗稱關鍵字交互
事件交互,裏面的種類就挺多,如LOCATION
(定位),SCAN
(再次關注),subscribe
(關注),還有就是菜單的EventKey
的響應了等等。
正如你關注的時候,我給你回覆的東西就是在subscribe
的時候處理的,給你返回微信
你輸入關鍵字的時候,好比輸入100
,我是這麼回覆給你的框架
這裏舉得兩個例子就是你遇到事件或者關鍵字的時候,你能夠如何處理,具體回覆等其餘業務操做,請參照自身要求。jsp
消息格式有不少種,不過最經常使用的以下三種
回覆文本工具
回覆多圖文
回覆多客服,便可輕鬆打開多客服功能 so easy!
記得寫個工具類來存放這些消息格式的工具方法!
服務號的菜單,大菜單能夠有三個,大菜單裏面的子菜單最多五個。
菜單的類型兩種:一種是Click
菜單,一種是Url
菜單。
顧名思義Click
菜單就是點擊會傳EventKey
給咱們工程,Url
菜單就是直接超連接跳轉性質。
如何生成菜單?
往下Look
/** * 組裝菜單數據 * * @return 返回一個菜單對象 */ public static Menu getMenu(String serverUrl) { //ChildButton是子菜單對象 ChildButton btn11 = new ChildButton(); btn11.setName("個稅計算"); //若是設置type是view,那必須設置url,不要設置key btn11.setType("view"); btn11.setUrl(serverUrl+"gongzishouru.jsp"); ChildButton btn12 = new ChildButton(); btn12.setName("發票查詢"); btn12.setType("view"); btn12.setUrl(serverUrl+"ds_dishuifapiao_search.jsp"); ChildButton btn13 = new ChildButton(); btn13.setName("服務預定"); btn13.setType("click"); btn13.setKey("13"); ChildButton btn14 = new ChildButton(); btn14.setName("個人派單"); btn14.setType("click"); btn14.setKey("14"); ChildButton btn15 = new ChildButton(); btn15.setName("個人帳戶"); btn15.setType("click"); btn15.setKey("15"); ChildButton btn21 = new ChildButton(); btn21.setName("福利專區"); btn21.setType("click"); btn21.setKey("21"); ChildButton btn22 = new ChildButton(); btn22.setName("最新資訊"); btn22.setType("click"); btn22.setKey("22"); ChildButton btn23 = new ChildButton(); btn23.setName("財稅動態"); btn23.setType("click"); btn23.setKey("23"); ChildButton btn24 = new ChildButton(); btn24.setName("會計職場"); btn24.setType("click"); btn24.setKey("24"); ChildButton btn25 = new ChildButton(); btn25.setName("常見問題"); btn25.setType("click"); btn25.setKey("25"); ChildButton btn31 = new ChildButton(); btn31.setName("諾諾介紹"); btn31.setType("view"); btn31.setUrl(serverUrl+"nuonuojieshao.jsp"); ChildButton btn32 = new ChildButton(); btn32.setName("卡換盤專欄"); btn32.setType("view"); btn32.setUrl(serverUrl+"CardChangeDish.jsp"); ChildButton btn33 = new ChildButton(); btn33.setName("產品展現"); btn33.setType("view"); btn33.setUrl(serverUrl+"chanpinzhanshi.jsp"); ChildButton btn34 = new ChildButton(); btn34.setName("網點查詢"); btn34.setType("view"); btn34.setUrl(serverUrl+"wangdianchaxun.jsp"); ChildButton btn35 = new ChildButton(); btn35.setName("個人積分"); btn35.setType("click"); btn35.setKey("35"); //ComplexButton是一級菜單,能夠經過setSub_button的方式添加多個子菜單 ComplexButton mainBtn1 = new ComplexButton(); mainBtn1.setName("諾諾服務"); mainBtn1.setSub_button(new ChildButton[] { btn11, btn12, btn13, btn14, btn15}); ComplexButton mainBtn2 = new ComplexButton(); mainBtn2.setName("諾諾資訊"); mainBtn2.setSub_button(new ChildButton[] { btn21, btn22, btn23, btn24, btn25}); ComplexButton mainBtn3 = new ComplexButton(); mainBtn3.setName("關於諾諾"); mainBtn3.setSub_button(new ChildButton[] { btn31, btn32, btn33, btn34, btn35}); //Menu是菜單對象,將全部一級菜單塞入便可 Menu menu = new Menu(); menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 }); return menu; }
/** * 建立菜單 */ private static void createMenu(String serverUrl) { // 調用接口建立菜單的json並上傳到微信,返回值是結果代碼,0表示成功。 int result = WeixinUtil.createMenu(FastCreateWeixinMenu.getMenu(serverUrl), accessToken); // 判斷菜單建立結果 if (0 == result) System.out.println("菜單建立成功!"); else System.out.println("菜單建立失敗,錯誤碼:" + result); }
菜單生成搞定!
這是咱們最關心的問題,很簡單,就是我一開頭提到的openID
,這個參數能夠在用戶跟工程有任何交互的時候,均可以獲取獲得,咱們能夠把openID
跟咱們的業務用戶ID
,作個登陸綁定的操做,其實就是把兩個參數造成一條數據存到數據庫的關係表中便可。
還有一種就是所謂的網頁獲取用戶信息openID
(若是你的操做比較複雜不推薦這種作法)。
微信裏面打開的界面能夠分爲三種:
第一種:就是相似你平時點開的微信文章,裏面含有點擊文字關注公衆號的那種頁面。(獲取方式,讓運營在公衆號的騰訊平臺裏面寫好,而後把url
發給你,你放到回覆的圖文中便可)
(小細節不少人不知道:文章的內容保存或發佈後,再改動裏面的內容他的url
是不變的)O(∩_∩)O哈哈~
第二種:就是咱們本身工程的html
,jsp
這個作前端的人作個手機自適應就行了。
第三種:就是如今市面上比較火的易企秀第三方炫酷的效果界面,直接作好把url
拿過來便可,很簡單。
在咱們關注了這個微信號以後,變成了他粉絲。咱們能夠對這些粉絲進行分組,也能夠經過請求獲取這個微信號的全部的分組狀況,跟具體某個用戶的所在分組狀況。(特別注意:在運營在創建分組的時候,千萬不要隨便創建或者刪除以前的分組,由於分組的ID
是相似於數據庫表的遞增索引
同樣,用了一次就沒了,也就是你刪掉了一個分組,再建一個跟他名字如出一轍的分組,不要意思他的分組的ID
是已經不是原來的ID
了,切記)!!!
微信公衆號裏面能夠有方法生成帶參數的二維碼,當咱們掃描二維碼的時候,咱們的工程能夠獲取用戶所掃描的二維碼中的參數,從而來根據這個參數去作一些業務操做,如將用戶直接掃描後分組,等其餘操做。
JAVA
Web
工程會搭建,Tomcat
服務器會部署,數據庫熟悉,前端Js
,Jsp
熟悉,Spring MVC
框架的使用等
說了這麼多,我相信你們多多少少已經對微信服務號的開發流程有個系統性的開發輪廓了,寫這邊文章是對本身經驗的分享,也是對過去的一種總結,後續會不間斷的發表關於Android
,微信
,iOS
,Java
相關技術的文章,有興趣的朋友們敬請關注!感謝你們閱讀。