微信公眾平臺接入java示例程式碼
阿新 • • 發佈:2019-02-01
第一步:申請訊息介面
需要申請訊息介面,很簡單隻需要在微信公眾平臺後臺填寫Servlet地址即可,這裡不多說。
第二步:驗證URL有效性
需要編寫URL有效性驗證程式碼,這裡以Java程式碼做示例,官網已給出PHP示例
開發者提交資訊後,微信伺服器將傳送GET請求到填寫的URL上,GET請求攜帶四個引數:
引數 | 描述 |
---|---|
signature | 微信加密簽名,signature結合了開發者填寫的token引數和請求中的timestamp引數、nonce引數。 |
timestamp | 時間戳 |
nonce | 隨機數 |
echostr | 隨機字串 |
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信伺服器,請原樣返回echostr引數內容,則接入生效,成為開發者成功,否則接入失敗。
加密/校驗流程如下:
[java] 預覽複製1. 將token、timestamp、nonce三個引數進行字典序排序
2. 將三個引數字串拼接成一個字串進行sha1加密
3. 開發者獲得加密後的字串可與signature對比,標識該請求來源於微信
- /**
- * 微信公眾平臺 成為開發者驗證入口
- *
- * @param request
- * the request send by the client to the server
- * @param response
-
* the response send by the server to the client
- * @throws ServletException
- * if an error occurred
- * @throws IOException
- * if an error occurred
- */
- publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // 微信加密簽名
-
String signature = request.getParameter("signature"
- // 隨機字串
- String echostr = request.getParameter("echostr");
- // 時間戳
- String timestamp = request.getParameter("timestamp");
- // 隨機數
- String nonce = request.getParameter("nonce");
- String[] str = { TOKEN, timestamp, nonce };
- Arrays.sort(str); // 字典序排序
- String bigStr = str[0] + str[1] + str[2];
- // SHA1加密
- String digest = new SHA1().getDigestOfString(bigStr.getBytes())
- .toLowerCase();
- // 確認請求來至微信
- if (digest.equals(signature)) {
- response.getWriter().print(echostr);
- }
- }