微信服務號開發的完整人性化版攻略

前言:

本次要講述的是一個本人完整微信服務號開發的經驗分享,微信服務號的做品:請搜索微信號:zjaisino,名稱:愛信諾Aisino一站式服務平臺。(這裏聲明,這不是打廣告,只是爲了方便各位開花攻城獅朋友配合下面的文章理解)。
注:微信服務號的開發能夠用的語言有不少,如Java、PHP、ASP.NET、Ruby、Python、Note.js均可以,我是一名Java攻城獅,因此下面介紹的開發語言是JAVA,言歸正傳,Let's gohtml

正文:

微信號的選擇

訂閱號,天天一次推送消息,可是高級權限很少。
服務號,每個月四次推送消息,可是高級權限多。
因此推廣用途請使用訂閱號,服務用途請使用服務號。前端

關鍵參數理解

AppIDAppSecret這兩個是公衆號後臺的參數。
access_token是公衆號的全局惟一票據,公衆號調用各接口時都需使用access_token,由上面兩個參數處理獲得(注意:處理好7200s的時效性)。
OpenID這是業務處理最核心的參數,(是你的微信跟這個微信號之間的一個惟一的ID,注意不管你是否關注,這個ID都是不變的,並且已經存在)。數據庫

服務號接入工程

咱們要處理本身的業務,有本身的後臺工程是必須的,可是如何將微信服務號跟咱們的工程創建接入關係呢json

clipboard.png
URL填寫咱們的工程的一個action
Token填寫跟咱們工程裏面設置的Token參數內容同樣便可
開始接入(端口要是80!)api

clipboard.png

點擊提交的時候,其實微信服務器是往你填寫的action的傳輸方式是get不是post,因此代碼里根據這個去處理,返回他須要的簽名檢驗結果便可,這樣就接入完成了。服務器

用戶跟工程的交互方式種類

大體分兩種:
一種是:文本(Text),一種是:事件(Event
文本交互,俗稱關鍵字交互
事件交互,裏面的種類就挺多,如LOCATION(定位),SCAN(再次關注),subscribe(關注),還有就是菜單的EventKey的響應了等等。
正如你關注的時候,我給你回覆的東西就是在subscribe的時候處理的,給你返回微信

clipboard.png
你輸入關鍵字的時候,好比輸入100,我是這麼回覆給你的框架

clipboard.png
這裏舉得兩個例子就是你遇到事件或者關鍵字的時候,你能夠如何處理,具體回覆等其餘業務操做,請參照自身要求。jsp

回覆用戶的信息格式

消息格式有不少種,不過最經常使用的以下三種
回覆文本工具

clipboard.png
回覆多圖文

clipboard.png
回覆多客服,便可輕鬆打開多客服功能 so easy!
clipboard.png
記得寫個工具類來存放這些消息格式的工具方法!

菜單分析

服務號的菜單,大菜單能夠有三個,大菜單裏面的子菜單最多五個。
菜單的類型兩種:一種是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哈哈~
第二種:就是咱們本身工程的htmljsp這個作前端的人作個手機自適應就行了。
第三種:就是如今市面上比較火的易企秀第三方炫酷的效果界面,直接作好把url拿過來便可,很簡單。

微信服務號的關注用戶

在咱們關注了這個微信號以後,變成了他粉絲。咱們能夠對這些粉絲進行分組,也能夠經過請求獲取這個微信號的全部的分組狀況,跟具體某個用戶的所在分組狀況。(特別注意:在運營在創建分組的時候,千萬不要隨便創建或者刪除以前的分組,由於分組的ID是相似於數據庫表的遞增索引同樣,用了一次就沒了,也就是你刪掉了一個分組,再建一個跟他名字如出一轍的分組,不要意思他的分組的ID是已經不是原來的ID了,切記)!!!

二維碼

微信公衆號裏面能夠有方法生成帶參數的二維碼,當咱們掃描二維碼的時候,咱們的工程能夠獲取用戶所掃描的二維碼中的參數,從而來根據這個參數去作一些業務操做,如將用戶直接掃描後分組,等其餘操做。

所須要的技能

JAVA Web工程會搭建,Tomcat服務器會部署,數據庫熟悉,前端JsJsp熟悉,Spring MVC框架的使用等

總結:

說了這麼多,我相信你們多多少少已經對微信服務號的開發流程有個系統性的開發輪廓了,寫這邊文章是對本身經驗的分享,也是對過去的一種總結,後續會不間斷的發表關於Android微信iOSJava相關技術的文章,有興趣的朋友們敬請關注!感謝你們閱讀。

相關文章
相關標籤/搜索