1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 关于微信公众平台的服务器配置和token验证接口

关于微信公众平台的服务器配置和token验证接口

时间:2020-12-18 02:21:50

相关推荐

关于微信公众平台的服务器配置和token验证接口

其实关于微信公众号服务器配置的问题 官方描述的已经很清楚了

首先这个URL必须是80端口或者443端口 对应http和https

其次url是验证是否能正确响应token

所以这里填写的就是响应token的接口

@GetMapping("/weChatSign")public void doGet(HttpServletRequest request, HttpServletResponse response) {log.info("微信正在配置服务器......");// 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。String signature = request.getParameter("signature");// 时间戳String timestamp = request.getParameter("timestamp");// 随机数String nonce = request.getParameter("nonce");// 随机字符串String echostr = request.getParameter("echostr");log.info("signature------:"+signature);log.info("timestamp------:"+timestamp);log.info("nonce------:"+nonce);log.info("echostr------:"+echostr);// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败PrintWriter out = null;try {out = response.getWriter();if (weChatOpt.checkSignature(signature, timestamp, nonce)) {log.info("微信配置成功 success....");out.print(echostr);}} catch (IOException e) {e.printStackTrace();} finally {if (out != null)out.close();}}

下面就是验证微信配置(token)的内容

// 与接口配置信息中的Token要一致// 具体存放token的方式 根据要求自己定义// 这里是你在微信配置页面(上面截图)里填写的token private static String token = "token";/*** 验证签名* @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;}

然后微信会让下载一个 txt的文件,里面是一个字符串 需要能正常访问到这个文件里面的字符串

其实解决方法也比较简单

一个接口 直接返回文件里的内容即可

@GetMapping("你下载的文件的文件名.txt")public String wxPrivateKey() {//直接返回你下载的授权文件里的内容就好return "你下载的文件里面的字符串";}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。