您好,登錄后才能下訂單哦!
小編給大家分享一下使用JAVA開發微信公眾平臺之環境搭建與開發接入的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
微信公眾平臺,即我們平時所說的“公眾號”,曾用名“官方平臺”、“媒體平臺”,但最終命名為“公眾平臺”。從微信的命名我可以發現,公眾平臺不只是官方、媒體使用的平臺,而是對所有公眾都開放的統一平臺。
微信公眾平臺地址:https://mp.weixin.qq.com/
微信公眾平臺公分4大板塊:訂閱號、服務號、小程序、企業號。按照微信2016年公開課規劃,企業號后續將與企業微信合并,因此我們主要針對前三部分開始講解:
簡單的對比一下前三者的區別以及本次課程即后續課程的講解重點:
1、訂閱號和服務號均為傳統意義的“公眾號”,具有消息群發能力,詳細區別可在官方平臺查看:http://kf.qq.com/faq/140806zARbmm140826M36RJF.html我們將注重于服務能力開發,而在服務方面,兩者開發模式完全相同,只不過服務號可以使用更多的服務接口,而訂閱號則是“閹割版”的服務號。因此,后續課程我們將使用服務號為案例進行操作。
2、微信小程序,原本為“微信應用號”,即一個根植在微信生態系統內的APP。因蘋果和谷歌的限制,“應用號”未上線便已夭折,取而代之的是適度閹割功能的“微信小程序”,而其堪比原生APP的操作體驗,也使得小程序成為時下大火的開發方向。而杰瑞教育全新的H5開發課程,也將加入時下火爆的微信小程序開發。
進入微信公眾平臺https://mp.weixin.qq.com,點擊右上角立即注冊,選擇“服務號”或“訂閱號”注冊(服務號僅限機構用戶注冊,個人用戶只能選擇訂閱號)
注冊時需填寫一系列信息,根據提示填寫即可,此處不做贅述。
如果暫時不想注冊賬號,或者無法注冊服務號,可選擇官方提供的測試賬號申請。申請地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login點擊后掃描二維碼,即可獲得一個測試賬號,擁有服務號全部權限。
微信公眾平臺在訪問后臺時,必須提供能夠正確訪問的外網地址,微信平臺對后臺URL的要求有兩點:
①必須能夠用公網訪問②必須使用80端口
要實現以上兩點,我們可以選擇購買外網服務器,例如:阿里云、百度云、騰訊云…都是不錯的選擇。如果沒有服務器,可以選擇用外網映射工具,將我們的內網鏈接映射為公網,比較不錯的映射軟件有:花生殼、ngrok、nat123等…
這幾款軟件都可以百度很容易搜索到并下載,下面簡單講解一下用法:
① Ngrock:
進入dos環境,切換到ngrock所在盤符,輸入ngrock8080回車:
回車后等待一會,即可得到公網鏈接,下圖所示陰影區域給出的鏈接,即可直接訪問本機127.0.0.1:8080下的鏈接內容,分別是http協議和https協議對應的地址:
②花生殼、nat123,均可安裝軟件后,在軟件中操作,詳情可查看百度經驗:http://jingyan.baidu.com/article/363872ec361d3f6e4ba16ff9.html此處不做贅述
搭建好公網訪問地址后,我們自己開發的后臺代碼就可以放到公網地址了,那么用戶是怎么樣訪問到我們的代碼呢?
下面我們來看一下微信公眾平臺的數據交互原理:
從上圖可以看到,微信公眾平臺實際只是起到一個橋梁作用,實際處理業務、提供服務的代碼,依然是放在我們自己的服務器或者公網映射上面。
那么,我們就可以在我們自己的電腦(服務器)上面編寫后臺代碼,并通過映射工具提供公網能夠訪問的URL,然后將此URL綁定到微信后臺即可。
下面將進入實際開發過程,我們可以參考官方提供的開發文檔:https://mp.weixin.qq.com/wiki
進入微信公眾平臺,點擊左側【開發——基本配置】,選擇【服務器配置】。即可進入配置頁面:
其中:
URL:即我們上述所說的后臺服務器公網訪問地址
Token:開發者自定的驗證口令
EncodingAESKey:隨機字符串,如果消息加解密方式采用安全模式才需驗證
當我們點擊提交時,微信服務器將會發送一個Get請求,到我們上述地址,同時傳遞四個參數:
我們通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。加密/校驗流程如下:
下面,我們實現代碼操作。
1、使用MyEclipse創建Web項目,并新建一個servlet:
2、在servlet的doGet方法中,獲取上述四個校驗參數:
3、編寫工具類,進行校驗方法的操作:
校驗步驟,參考上述【五-2】三大步操作流程
使用sha1加密方法↓
4、 Servlet中調用校驗方法,并驗證結果,如果檢驗成功,將得到的隨機字符串eahostr原路返回結果給微信平臺:
至此,Servlet及Check工具類,編寫完成。
5、啟動Tomcat,將Servlet的本地地址(例如本機為:localhost:8080/WeiXin/servlet/WeiXinServlet)進行公網映射,參照上述第三大部分內容,進行公網映射,確定公網地址能夠正確訪問。
我將直接將將代碼放到公網服務器進行訪問。獲得如下地址
進入微信后臺配置相關信息:
點擊提交,微信將發送Get指令到Servlet,并調用doGet方法,進行我們編寫的驗證操作,最后如果順利返回隨機字符串,則綁定成功。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); if(CheckUtil.checkSignature(signature, timestamp, nonce)){ //如果校驗成功,將得到的隨機字符串原路返回 out.print(echostr); } }
package com.jredu.util; import java.security.MessageDigest; import java.util.Arrays; public class CheckUtil { public static final String tooken = "jredu100"; //開發者自行定義Tooken public static boolean checkSignature(String signature,String timestamp,String nonce){ //1.定義數組存放tooken,timestamp,nonce String[] arr = {tooken,timestamp,nonce}; //2.對數組進行排序 Arrays.sort(arr); //3.生成字符串 StringBuffer sb = new StringBuffer(); for(String s : arr){ sb.append(s); }
//4.sha1加密,網上均有現成代碼 String temp = getSha1(sb.toString()); //5.將加密后的字符串,與微信傳來的加密簽名比較,返回結果 return temp.equals(signature); } public static String getSha1(String str){ if(str==null||str.length()==0){ return null; } char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(str.getBytes("UTF-8")); byte[] md = mdTemp.digest(); int j = md.length; char buf[] = new char[j*2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf];}
char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(str.getBytes("UTF-8")); byte[] md = mdTemp.digest(); int j = md.length; char buf[] = new char[j*2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } return new String(buf); } catch (Exception e) { // TODO: handle exception return null; } } }
以上是“使用JAVA開發微信公眾平臺之環境搭建與開發接入的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。