1. 程式人生 > >微信公眾平臺接入java示例程式碼

微信公眾平臺接入java示例程式碼

第一步:申請訊息介面

需要申請訊息介面,很簡單隻需要在微信公眾平臺後臺填寫Servlet地址即可,這裡不多說。

第二步:驗證URL有效性

需要編寫URL有效性驗證程式碼,這裡以Java程式碼做示例,官網已給出PHP示例

開發者提交資訊後,微信伺服器將傳送GET請求到填寫的URL上,GET請求攜帶四個引數:

引數 描述
signature 微信加密簽名,signature結合了開發者填寫的token引數和請求中的timestamp引數、nonce引數。
timestamp 時間戳
nonce 隨機數
echostr 隨機字串

開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信伺服器,請原樣返回echostr引數內容,則接入生效,成為開發者成功,否則接入失敗。
加密/校驗流程如下:

1. 將token、timestamp、nonce三個引數進行字典序排序
2. 將三個引數字串拼接成一個字串進行sha1加密
3. 開發者獲得加密後的字串可與signature對比,標識該請求來源於微信

[java] 預覽複製
  1. /** 
  2.   * 微信公眾平臺 成為開發者驗證入口 
  3.   *  
  4.   * @param request 
  5.   *            the request send by the client to the server 
  6.   * @param response 
  7.   *            the response send by the server to the client
     
  8.   * @throws ServletException 
  9.   *             if an error occurred 
  10.   * @throws IOException 
  11.   *             if an error occurred 
  12.   */
  13.  publicvoid doGet(HttpServletRequest request, HttpServletResponse response)  
  14.          throws ServletException, IOException {  
  15.      // 微信加密簽名
  16.      String signature = request.getParameter("signature"
    );  
  17.      // 隨機字串
  18.      String echostr = request.getParameter("echostr");  
  19.      // 時間戳
  20.      String timestamp = request.getParameter("timestamp");  
  21.      // 隨機數
  22.      String nonce = request.getParameter("nonce");  
  23.      String[] str = { TOKEN, timestamp, nonce };  
  24.      Arrays.sort(str); // 字典序排序
  25.      String bigStr = str[0] + str[1] + str[2];  
  26.      // SHA1加密
  27.      String digest = new SHA1().getDigestOfString(bigStr.getBytes())  
  28.              .toLowerCase();  
  29.      // 確認請求來至微信
  30.      if (digest.equals(signature)) {  
  31.          response.getWriter().print(echostr);  
  32.      }  
  33.  }