微信公众平台java开发教程之验证服务器有效性
2016-04-28 15:40
561 查看
前言
进行开发之前需要具备javaWeb基础:验证服务器有效性
首先进入到测试号管理界面可以看到接口配置信息,第一次进入url和token是没有的。填写你服务器的访问地址及token,Token按照自己的需求随意设置。验证方法如下:
参考官方文档:点击打开链接
根据填写的服务器访问地址接收相应参数进行验证,代码示例:
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; /** * 微信工具类 * */ public class WxUtils { /** * 验证消息合法性 * @param signature * @param paraStr * @return * @throws NoSuchAlgorithmException */ public static boolean checkSingature(String signature,String...paraStr) throws NoSuchAlgorithmException { // 按字典顺序排序 Arrays.sort(paraStr); // 字符串拼接 StringBuilder content = new StringBuilder(); for (String string : paraStr) { content.append(string); } // sha1加密 MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(content.toString().getBytes()); String testingStr = byteArrayToHexString(digest); // 比较返回 if (testingStr.equalsIgnoreCase(signature.toUpperCase())) { return true; } return false; } // 将字节数组转换为十六进制字符串 private static String byteArrayToHexString(byte[] bytearray) { String strDigest = ""; for (int i = 0; i < bytearray.length; i++) { strDigest += byteToHexString(bytearray[i]); } return strDigest; } // 将字节转换为十六进制字符串 private static String byteToHexString(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; } }
对验证消息进行封装,以便下次直接调用,在访问路径中进行服务器验证,jsp中代码示例:
<%@page import="com.weixin.utils.WxUtils"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% //在接口配置信息设置的Token String token = "jsharelife"; //接收微信服务器三个参数 String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); //进行验证 try{ if(WxUtils.checkSingature(signature,token,timestamp,nonce)){ //返回echostr response.getOutputStream().print(request.getParameter("echostr")); out.clear(); out = pageContext.pushBody(); } } catch(Exception e) { e.printStackTrace(); } %>
然后再接口配置界面点击提交,会显示是否验证成功。
相关文章推荐
- 社交巨头三国杀:微信、WhatsApp、Line到底有啥区别?
- 微信悄悄升级群聊功能:个人微信营销号的福音
- 突击部队拼多多
- 我是运营,我没有假期
- 如何做到日消息量100万的微信公众号?
- 论微信取消推送功能的可能性(原创)
- 微信的成功,靠的是QQ导流吗?
- 「Linux 中国」2018 微信文章排行榜
- 马化腾亲自“站台” 企业微信和个人微信互通能带来什么?
- 一个微信群的兴亡
- 微信服务号推送模板消息接口
- PHP限制页面只能在微信自带浏览器访问的代码
- C#微信公众平台开发之access_token的获取存储与更新
- HTML5实现微信拍摄上传照片功能
- 微信小程序去哪里找 小程序到底如何使用(附小程序名单)
- 使用jQuery.wechat构建微信WEB应用