微信验证服务器地址有效性

概述:我们知道申请公众号测试账号后首先会进行“微信验证服务器地址有效性”的操作,否则会无法正常使用的,那么该如何处理呢,这里就简单把代码贴出来,供大家参考指正,同时我也写了关于微信支付的相关博客,大家也可以参考参考,微信支付-签名篇。

微信开发者文档中心-验证服务器

说明



(注:图片来源于微信公众号开放平台)

代码部分

签名工具类

public class SignUtil {/*** 加密/校验流程如下: 1. 将token、timestamp、nonce三个参数进行字典序排序* 2.将三个参数字符串拼接成一个字符串进行sha1加密 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信* * @param token* @param signature* @param timestamp* @param nonce* @return*/public static boolean checkSignature(String token, 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];tempArr[1] = Digit[mByte & 0X0F];String s = new String(tempArr);return s;}
}

Servletl类

/*** 微信验证服务器地址有效性* * @author Tangren_* */
public class FetchToken extends HttpServlet {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");String token = "WECAHTWUXINXI520";// 配置里面的tokenboolean flag = SignUtil.checkSignature(token, signature, timestamp,nonce);if (flag) {try {// 验证成功,则原样返回echostr参数内容response.getWriter().print(echostr);Util.printLog(Util.getCurrentTime() + "时:Token验证成功");} catch (Exception e) {e.printStackTrace();Util.printLog(Util.getCurrentTime() + "时:验证异常--"+ e.getMessage());}}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}}

微信验证服务器地址有效性相关推荐

  1. 卸载华为系统wifi服务器,华为wifi验证服务器地址

    华为wifi验证服务器地址 内容精选 换一换 在移动设备上正确安装APP后,就可以通过APP登录NetEco服务器. 对接企业自定义的邮箱系统,需要提供企业邮箱的微软EAS协议或者标准的IMAP/SM ...

  2. 微信 服务器地址的有效性,C# 微 信 公众平台 验证服务器地址的有效性

    /// /// 固定接入验证TOKEN /// const string Token = "H1Y2D3E4E5P6R7O8"; protected void Page_Load( ...

  3. 微信公众号简单开发(2)验证服务器地址

    两个步骤: 微信原文: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 第一步:填写服务器配置 登录微信公众 ...

  4. 微信公众号开发之验证服务器的有效性

    微信的get请求 我们先进行开发者测试号的申请 点击 开发者提交信息后,微信服务器将发送 GET 请求到填写的服务器地址 URL 上,这个GET请求携带的参数如下,微信官网 我们需要对这个请求返回一定 ...

  5. 如何找到微信的服务器地址

    最近有个TDMA项目,需求是TDMA客户通过我们的卫星进行各个分支站点的内部网络通讯,考虑到上互联网会占用卫星的带宽,寻求只开通必要的 QQ,微信聊天工具,外网邮箱,外网OA服务器等,其余网址屏蔽. ...

  6. 微信t服务器地址,微信地址怎么改?教你如何修改微信地址

    qq有id登陆的时候就显示了登陆地区,微信也是一样的也可以显示登陆地区,但是微信的地区地址可以根据一些办法进行修改,如何修改方法如下: 首先呢,用91或者是其他可以查看及修改安装程序文件的软件. 我以 ...

  7. 微信后台服务器地址验证的逻辑

    不说废话了,直接上py3 django代码: token = "-----------------------------"#自己填到微信设置里面的tokennonce = req ...

  8. 微信验证服务器是怎么回事,微信服务器认证为什么需要这么多参数?

    在进行微信认证开发的时候,官网文档有这样一段话 当时就想为什么这么多参数,都是什么意思?网上有现成的代码,抄下来就可以运行了 可这个疑问一直在心里,百度查询了很多篇文章去解释我这个疑惑,现在就转换成个 ...

  9. 微信墙服务器地址,一面微信墙的诞生(3) 用户端界面的创建

    在用户发表留言之前,需要进入登录状态.在微信平台中,登录应该是一个自动的过程:用户只需要进行一次授权,往后的登录都由后台自己来处理. 在 client 文件夹下新建 index.php : 登录流程 ...

  10. 微信开发服务器地址url怎么写,微信开发(一)URL配置

    启用开发模式须要先成为开发者,并且编辑模式和开发模式只能选择一个,进入微信公众平台-开发模式,以下:服务器 须要填写url和token,当时本人填写这个的时候花了很久,我本觉得填写个服务器的url就能 ...

最新文章

  1. 自动驾驶国家标准将出台,2021年是L3级自动驾驶汽车元年?
  2. 管理员端API——任仲行
  3. 【Java学习】多线程2
  4. 【Boost】boost库中thread多线程详解10——condition条件变量
  5. 垃圾回收算法与实现系列-锁在应用层的优化思路
  6. sql 排除 sum为0的_一文为你详解Unique SQL原理和应用
  7. linux调度器(五)——进程管理与CFS
  8. android脚本录制脚本,Android 屏幕录制GIF脚本
  9. [乐意黎]某音上超酷炫的 Word Clock 文字云时钟屏保配置
  10. redis集群(服务端sharding)
  11. STM32MP157系统移植(TF-A,U-Boot,Linux)
  12. 第十五节 使用NETCONN 接口编程
  13. Linux常用命令及面试题
  14. 深度学习公开语音识别数据集下载 | 论文下载|音频数据集|corpus ——简记
  15. 爱情的诗·6~10节
  16. Pandas+Seaborn+Plotly:联手探索苹果AppStore
  17. Docker实战笔记
  18. java負數能取余_Java别说取余(%)运算简单,你真的会吗?-Go语言中文社区
  19. Java实现 LeetCode 374 猜数字大小 II
  20. STM32CubeMX-HAL库开发笔记(常用语句)-基于Proteus仿真

热门文章

  1. The server cannot or will not process the request due to something that is perceived to be a client.
  2. 思维导图告诉你怎样正确的做笔记?
  3. Faster RCNN原理篇(二)——RoIPooling和RoIAlign的学习和理解
  4. AXURE RP8实战手册 网站和APP原型制作案例精粹
  5. 彻底解决Chrome自动更新方案
  6. 视频教程-Windows Server 2016 IPAM 服务管理-Windows
  7. PageOffice常用功能之-OA系统中的文档在线编辑及流转
  8. 6-2 折半查找 (15分)_数据结构实验7_羊卓的杨
  9. 《经济学通识》一、前言
  10. 数据缺失机制以及缺失值处理方式