页面引入js
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
js文件
$(document).ready(function() {
$.ajax({
type : "post",
url : "config.do",
dataType : "json",
success : function(data) {
var obj = eval(data[0]);
wx.config({
debug : false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId : obj.appId, // 必填,公众号的唯一标识
timestamp : obj.timestamp, // 必填,生成签名的时间戳
nonceStr : obj.nonceStr, // 必填,生成签名的随机串
signature : obj.signature,// 必填,签名,见附录1
jsApiList : ["chooseImage"]
});
}
});
});
后台
@RequestMapping("/config")
public void getConfig(HttpServletRequest request, HttpServletResponse response) {
response.setCharacterEncoding("UTF-8");
String appId = WechatUtil.appID;
// 获取页面路径(前端获取时采用location.href.split('#')[0]获取url)
String url = request.getRequestURL().toString() + "/";
// 获取ticket
String jsapi_ticket = MyTask.TICKET;
// 获取Unix时间戳(java时间戳为13位,所以要截取最后3位,保留前10位)
String timeStamp = Long.toString(System.currentTimeMillis() / 1000);
String noncestr = UUID.randomUUID().toString();
// 注意这里参数名必须全部小写,且必须有序
String sign = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + noncestr + "&timeStamp=" + timeStamp + "&url=" + url;
String signature = SHA1(sign);
// 组装完毕,回传
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("appId", appId);
ret.put("timestamp", timeStamp);
ret.put("nonceStr", noncestr);
ret.put("signature", signature);
System.out.println(ret);
try {
JSONArray jsonArray = JSONArray.fromObject(ret);
// System.out.println(jsonArray.toString());
PrintWriter out = response.getWriter();
out.print(jsonArray);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
后台中用到的方法
private String SHA1(String sign) {
try {
MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
digest.update(sign.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
// 字节数组转换为 十六进制 数
for (int i = 0; i < messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
if (shaHex.length() < 2) {
hexString.append(0);
}
hexString.append(shaHex);
}
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}