準備工作
首先得註冊個企業微信
其次下載一個加解密的包,免得自己封裝
https://work.weixin.qq.com/api/doc#10128/java%E5%BA%93
具體使用方法:下載解壓後,將com文件夾拷貝到src下,然後將lib下的jar包拷貝到咱們web工程的WEB-INF/lib下就行了。
創建應用
登錄企業微信,點擊【企業應用】-【創建應用】,輸入應用logo、應用名稱,選擇部門/成員後點擊【創建應用】。
設置接收微信消息的開發者服務器
點擊剛剛創建的應用,點擊【接收消息】-【設置API接收】,在URL處填寫我方的地址,例如:
http://xx.xx.xx.xx:8080/XXproject/XXServlet
,表示IP地址xx.xx.xx.xx的8080端口上的XXproject項目的XXSerlvet負責接收微信發送的消息。
然後點擊Token和EncodingAESKey後的隨機獲取,將這兩個參數記錄下來。
然後消息類型都選上,點擊【保存】,此時提示”回調URL校驗失敗”,所以需要在剛剛自己的Servlet上處理微信發過來的消息並按規則進行回覆,這樣微信才認可。
驗證URL
首先封裝一個常量類,保存相關參數,因爲是企業微信Enterprise Wechat,此處簡寫爲Wxep,此處爲了安全就不具體寫參數了
package com.easy.wxep.util;
/**
* 企業微信常量
* @author easypanda
* @since 2018-04-21
*/
public class WxepConstants {
//API接收消息中的Token
public final static String Token="";
//API接收消息中的EncodingAESKey
public final static String EncodingAESKey="";
//企業ID
public final static String CorpId="";
//應用憑證密鑰
public final static String CorpSecret="";
}
第二,在Servlet中對微信發過來的消息處理,注意加解密使用之前導入的jar包封裝的接口即可。此處我用的是SpringMVC接收消息,在Servlet中代碼一樣即可。
/**
* 接收企業微信api消息
* @throws IOException
*/
@RequestMapping("/public_wxapi_message")
public void public_wxapi_message(HttpServletRequest request, HttpServletResponse response) throws IOException {
//獲取微信服務器發送過來的四個參數
//微信加密簽名
String msg_signature = request.getParameter("msg_signature");
//時間戳
String timestamp = request.getParameter("timestamp");
//隨機數
String nonce = request.getParameter("nonce");
//隨機字符串
String echostr = request.getParameter("echostr");
//驗證輸入後返回消息給微信服務器
PrintWriter out = response.getWriter();
// 通過檢驗msg_signature對請求進行校驗,若校驗成功則原樣返回echostr,表示接入成功,否則接入失敗
String result = null;
try {
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WxepConstants.Token, WxepConstants.EncodingAESKey, WxepConstants.CorpId);
result = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);
} catch (Exception e) {
e.printStackTrace();
}
if (result == null) {
result = WxepConstants.Token;
}
out.print(result);
out.close();
out = null;
}
此時再點擊【保存】則Eclipse異常信息:Illegal key size
此時可參考企業微信API提出的方案:
異常java.security.InvalidKeyException:illegal Key Size的解決方案:在官方網站下載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目錄下覆蓋原來文件。
此處我使用的JDK8對應下載地址http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
驗證
重啓Tomcat後再次點擊【保存】,提示”保存成功”,表示微信服務器已認可我們配置的服務器。