這幾天申請了一個企業公衆號玩一玩。當咱們想在基於微信平臺再次開發時,首先須要解決的是開啓開發者模式。php
1.怎樣申請企業公衆號,請見相關參考文獻,網上有不少。html
2.進入開啓企業公衆號開發者模式時,首先要開啓回調模式。java
3.在開啓回調模式時,咱們先要在應用中心建立一個應用中心。python
8.當你開啓應用的回調模式時,企業號會要求你填寫應用的URL、Token、EncodingAESKey三個參數。 URL是企業應用接收企業號推送請求的訪問協議和地址,支持http或https協議。 Token可由企業任意填寫,用於生成簽名。EncodingAESKey用於消息體的加密,是AES密鑰的Base64編碼。驗證URL、Token以及加密的詳細處理請參考後續'接收消息時的加解密處理'的章節。企業能夠直接使用微信提供的庫進行加解密的處理,目前提供的有c++/python/php/java/c#等語言版本。代碼提供瞭解密、加密、驗證URL三個接口,可根據自身須要下載 (參見附錄的加解密庫下載)。項目中的com.qq.weixin.mp.aes中的.java文件就是從官方下載。c++
而後本身再編寫一個servlet來接受微信服務器回調時調用的GET方法。項目中是CoreServlet.java。它的GET方法以下:web
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 4 // 設置編碼 5 response.setContentType("text/html;charset=utf-8"); 6 // response.setCharacterEncoding("utf-8"); 7 request.setCharacterEncoding("utf-8"); 8 9 // 企業號的基本信息,配置時填寫 10 String sToken = "weixin"; 11 String sCorpID = "sCorpID"; 12 String sEncodingAESKey = "sEnCodingAESKey"; 13 14 try 15 { 16 WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, 17 sCorpID); 18 19 // 解析出url上的參數值以下: 20 21 String sVerifyMsgSig = URLDecoder.decode( 22 request.getParameter("msg_signature"), "utf-8"); 23 String sVerifyTimeStamp = URLDecoder.decode( 24 request.getParameter("timestamp"), "utf-8"); 25 String sVerifyNonce = URLDecoder.decode( 26 request.getParameter("nonce"), "utf-8"); 27 String sVerifyEchoStr = URLDecoder.decode( 28 request.getParameter("echostr"), "utf-8"); 29 30 // String sVerifyMsgSig = 31 // "5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3"; 32 // String sVerifyTimeStamp = "1409659589"; 33 // String sVerifyNonce = "263014780"; 34 // String sVerifyEchoStr = 35 // "P9nAzCzyDtyTWESHep1vC5X9xho/qYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp+4RPcs8TgAE7OaBO+FZXvnaqQ=="; 36 37 PrintWriter out = response.getWriter(); 38 String sEchoStr; // 須要返回的明文 39 try 40 { 41 sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, 42 sVerifyNonce, sVerifyEchoStr); 43 System.out.println("verifyurl echostr: " + sEchoStr); 44 // 驗證URL成功,將sEchoStr返回 45 out.print(sEchoStr); 46 out.close(); 47 out = null; 48 } 49 catch (Exception e) 50 { 51 e.printStackTrace(); 52 } 53 54 } 55 catch (AesException e1) 56 { 57 e1.printStackTrace(); 58 } 59 }
注意:代碼中的sCorpID是你本身企業的sCorpID,sEncodingAESKey和你在輸入驗證URL時的sEncodingAESKey保持一致。c#
完成以上步驟,而後打成war部署到雲服務器上,這樣基本就能夠了。windows
總結下本身在驗證時出現的問題:tomcat
一、myeclipse編譯器的jdk和tomcat服務器的jdk不一樣,致使項目不能在本地服務器跑Windows=>preference=>Java=>Compiler / windows=>preference=>myeclipse=>servers服務器
二、特別注意的是:jdk版本必須是1.6及以上;須要替換JCE無限制權限策略文件,JDK7的下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html下載後解壓,能夠看到local_policy.jar和US_export_policy.jar以及readme.txt。若是安裝了JRE,將兩個jar文件放到%JRE_HOME%\lib\security目錄下覆蓋原來的文件,若是安裝了JDK,將兩個jar文件放到%JDK_HOME%\jre\lib\security目錄下覆蓋原來文件。這裏我耽擱了比較久。