阿里雲部署Java網站和微信開發調試心得技巧(下)
5、微信測試號的申請與鏈接以獲取微信用戶信息
在我們本身的程序裏面編寫servlet以響應微信號
在接下來的步驟中,咱們將在測試號裏面設置接口配置信息的URL,一經設置,微信公衆號便會發請求到咱們設置好的URL去,咱們必須編寫程序應答才能順利連通微信公衆號,所以我們須要編寫相應的響應程序
須要編寫兩個類
【SignUtil】java
package com.imooc.o2o.util.weixin; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; /** * 微信請求校驗工具類 */ public class SignUtil { // 與接口配置信息中的Token要一致 private static String token = "myo2o"; /** * 驗證簽名 * * @param signature * @param timestamp * @param nonce * @return */ public static boolean checkSignature(String signature, String timestamp, String nonce) { String[] arr = new String[] { token, timestamp, nonce }; // 將token、timestamp、nonce三個參數進行字典序排序 Arrays.sort(arr); StringBuilder content = new StringBuilder(); for (int i = 0; i < arr.length; i++) { content.append(arr[i]); } MessageDigest md = null; String tmpStr = null; try { md = MessageDigest.getInstance("SHA-1"); // 將三個參數字符串拼接成一個字符串進行sha1加密 byte[] digest = md.digest(content.toString().getBytes()); tmpStr = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } content = null; // 將sha1加密後的字符串可與signature對比,標識該請求來源於微信 return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; } /** * 將字節數組轉換爲十六進制字符串 * * @param byteArray * @return */ private