微信開發入門1--成爲開發者

用Java實現成爲微信開發者


1、微信開發的數據交互方式
公衆平臺消息接口爲開發者提供了與用戶進行消息交互的能力。對於成功接入消息接口的公衆賬號,當用戶發消息給公衆賬號時,微信公衆平臺服務器會使用HTTP請求對接入的網址進行消息推送,第三方服務器可通過響應包返回個性的回覆,從而達到回覆消息的目的。簡單地說,就是公衆賬號可以使用自己的程序來和用戶對話。(摘自http://book.2cto.com/201309/33610.html)


2、微信開發者的服務支持
由以上數據交互方式開出看出,必須有  微信公衆平臺、第三方服務器

3、成爲微信開發者
成爲微信開發者要通過修改配置,即填寫URL、token、和生成EncodingAESKey
認證有servlet完成,代碼要有一下代碼文件


//weixinServlet.java第三方服務器的入口
public class weixinServlet extends HttpServlet{
private static final long serialVersionUID = 4440739483644821986L;


/**
* 確認請求來自微信服務器
  */


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();
// 通過檢驗signature對請求進行校驗,若校驗成功則原樣返回echostr,表示接入成功,否則接入失敗
if (SignUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
out.close();
out = null;
}
}




//SignUtil.java簽名校驗文件在servlet文件中調用












public class SignUtil {
// 與接口配置信息中的Token要一致
private static String token ="jdl";


/**
* 驗證簽名
* @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 static String byteToStr(byte[] byteArray) {
String strDigest = "";
for (int i = 0; i < byteArray.length; i++) {
strDigest += byteToHexStr(byteArray[i]);
}
return strDigest;
}


/**
* 將字節轉換爲十六進制字符串
* @param mByte
* @return
*/


private static String byteToHexStr(byte mByte) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];  // 取一個字節的高4位,然後獲得其對應的十六進制字符
tempArr[1] = Digit[mByte & 0X0F];//  取一個字節的低4位,然後獲得其對應的十六進制字符  
String s = new String(tempArr);
return s;
}
}




//配置web.xml文件的servlet




<servlet>
  <servlet-name>weixinServlet</servlet-name>
  <servlet-class>com.yc.servlets.weixinServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>weixinServlet</servlet-name>
  <url-pattern>/weixinServlet</url-pattern>
 </servlet-mapping>










做到這裏,準備工作已經完成以下的步奏我只是提示一下




1、在新浪雲上發佈你的項目
2、將token、URL填寫,生成EncodingAESKey
3、選擇明文模式
4、提交




注意:URL是項目的URL+/weixinServlet
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章