首页 >> 大全

微信公众平台开发JAVA(一)验证来自微信服务器的消息

2023-10-18 大全 30 作者:考证青年

备注:测试基于微信公众平台测试号编写,真实开发环境基本适用

微信公众平台测试账号申请:

需要填写接口配置和安全域名,这里需要有自己的服务器,如果没有的话可以参考一下这篇文章:

填写好配置之后可以参考微信开放平台的文档:

微信公众平台验证__微信公众平台验证码是啥

上面的接入指南里给出来了解释:

下面直接上代码:

微信公众平台验证__微信公众平台验证码是啥

    /*** 验证微信签名*/@GetMapping("/index")@ResponseBodypublic String gettoken(String signature,String timestamp,String nonce,String echostr){boolean checkSignature = checkSignature(signature, timestamp, nonce);if(checkSignature == true){return echostr;}else {return null;}}

    /*** 验证微信签名*/public static boolean checkSignature(String signature, String timestamp,String nonce) {// 1.将token、timestamp、nonce三个参数进行字典序排序String[] arr = new String[] { token, timestamp, nonce };Arrays.sort(arr);// 2. 将三个参数字符串拼接成一个字符串进行sha1加密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;// 3.将sha1加密后的字符串可与signature对比,标识该请求来源于微信return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;}private static String byteToStr(byte[] byteArray) {StringBuilder strDigest = new StringBuilder();for (int i = 0; i < byteArray.length; i++) {strDigest.append(byteToHexStr(byteArray[i]));}return strDigest.toString();}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;}

后台接口写好之后启动项目,去微信配置那里写好点击提交,显示验证成功,就是可以了。如果没有成功,就要自己检查看是哪里出了问题。

参考:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了