這篇文章主要介紹了微信公眾平臺開發(fā)之token驗證和消息處理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司主營鐵東網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),鐵東h5小程序制作搭建,鐵東網(wǎng)站營銷推廣歡迎鐵東等地區(qū)企業(yè)咨詢
/** * * @Description: 微信消息處理以及用戶分組 */ public class WeiXinMessageAction extends BaseAction{ /** * */ private static final long serialVersionUID = 1L; private IFeWeiXinMessageService weiXinExternalService; private String wxNo; public String responseMessgaeInfo(){ Boolean isGet = request.getMethod().equalsIgnoreCase("GET"); if(isGet){ validateSignature(); }else{ saveWxMessage(); } return null; } /** * * @Description: 接收post保存接受的消息 只保存MsgType類型為text信息 * @param * @return void * @throws */ private void saveWxMessage(){ InputStream inputStream; try { request.setCharacterEncoding("UTF-8"); Document doc = null; SAXReader reader = new SAXReader(); inputStream = request.getInputStream(); doc = reader.read(inputStream); Element root = doc.getRootElement(); String toUserName = root.element("ToUserName").getTextTrim(); String fromUserName = root.element("FromUserName").getTextTrim(); String content = root.element("Content").getTextTrim(); String msgType=root.element("MsgType").getTextTrim(); String msgId=root.element("MsgId").getTextTrim(); String createTime=root.element("CreateTime").getTextTrim(); //只保存文本消息 //時間 System.out.println("接收消息內(nèi)容:"+content+"-----------------msgType:"+msgType); if(WeiXinMsgType.TEXT.type.equals(msgType)){ weiXinExternalService.addWxMessage(toUserName, fromUserName, content, msgType, msgId, formatTime(createTime)); } } catch (Exception e) { e.printStackTrace(); } } /** * * @Description: 傳入的CreateTime轉(zhuǎn)換成long類型 * @param @param createTime * @param @return * @return Date * @throws */ private Date formatTime(String createTime) { long msgCreateTime = Long.parseLong(createTime) * 1000L; return new Date(msgCreateTime); } /** * * @Description: 校驗微信簽名 * @param * @return void * @throws */ private void validateSignature(){ PrintWriter out = null; try { String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); out = response.getWriter(); if (checkSignature(signature, timestamp, nonce)) { out.print(request.getParameter("echostr")); } } catch (Exception e) { e.printStackTrace(); } finally { out.close(); out = null; } } /** * * @Description: 判斷token是否合法 * @param @param signature * @param @param timestamp * @param @param nonce * @param @return * @return boolean * @throws */ private boolean checkSignature(String signature, String timestamp, String nonce) { //根據(jù)微信賬號獲取token并校驗 Map<String,Object> map=new HashMap<String,Object>(); map.put("wxNo", wxNo); WeiXinMasterConfig masterConfig= weiXinExternalService.selectWeiXinMasterConfig(map); if(masterConfig==null){ return false; } String[] arr = new String[] {masterConfig.getWxToken(), 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"); byte[] digest = md.digest(content.toString().getBytes()); tmpStr = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } content = null; return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; } // 將字節(jié)轉(zhuǎn)換為十六進制字符串 private static String byteToHexStr(byte ib) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] ob = new char[2]; ob[0] = Digit[(ib >>> 4) & 0X0F]; ob[1] = Digit[ib & 0X0F]; String s = new String(ob); return s; } // 將字節(jié)數(shù)組轉(zhuǎn)換為十六進制字符串 private static String byteToStr(byte[] bytearray) { String strDigest = ""; for (int i = 0; i < bytearray.length; i++) { strDigest += byteToHexStr(bytearray[i]); } return strDigest; }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“微信公眾平臺開發(fā)之token驗證和消息處理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
當(dāng)前標(biāo)題:微信公眾平臺開發(fā)之token驗證和消息處理的示例分析
本文網(wǎng)址:http://www.rwnh.cn/article40/jscdeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站維護、營銷型網(wǎng)站建設(shè)、商城網(wǎng)站、定制開發(fā)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)