In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-17 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >
Share
Shulou(Shulou.com)06/03 Report--
This article mainly introduces the Wechat public platform development of token authentication and message processing example analysis, has a certain reference value, interested friends can refer to, I hope you can learn a lot after reading this article, the following let the editor take you to know about it.
/ * * @ Description: Wechat message processing and user grouping * / 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: receive post save accepted messages save only MsgType information of type 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 () / / Save text messages only / / time System.out.println ("receive message content:" + content+ "- msgType:" + msgType); if (WeiXinMsgType.TEXT.type.equals (msgType)) {weiXinExternalService.addWxMessage (toUserName, fromUserName, content, msgType, msgId, formatTime (createTime) }} catch (Exception e) {e.printStackTrace () }} / * * @ Description: the incoming CreateTime is converted to long type * @ param @ param createTime * @ param @ return * @ return Date * @ throws * / private Date formatTime (String createTime) {long msgCreateTime = Long.parseLong (createTime) * 1000L; return new Date (msgCreateTime) } / * * @ Description: verify Wechat signature * @ 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: judge whether token is legal * @ param @ param signature * @ param @ param timestamp * @ param * @ param @ return * @ return boolean * @ throws * / private boolean checkSignature (String signature, String timestamp String nonce) {/ / obtain token based on Wechat account and verify Map map=new HashMap () 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; } // 将字节转换为十六进制字符串 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;} / / convert a byte array to a hexadecimal string private static String byteToStr (byte [] bytearray) {String strDigest = "; for (int I = 0; I < bytearray.length; iTunes +) {strDigest + = byteToHexStr (bytearay [I]) } return strDigest;} Thank you for reading this article carefully. I hope the article "sample Analysis of token Authentication and message processing in the Development of Wechat Public platform" shared by the editor will be helpful to you. At the same time, I hope you will support us and pay attention to the industry information channel. More related knowledge is waiting for you to learn!
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.