您的位置:首页 > 移动开发 > 微信开发

微信公众平台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();
}
%>


然后再接口配置界面点击提交,会显示是否验证成功。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息