热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java微信开发(三)之JS-SDK配置

<spanstyle"font-size:18px;"><%@pagelanguage"jav
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String url=request.getRequestURL()+"?"+request.getQueryString();
%>















主内容调用JS-SDK接口




出去安全考虑,要求所需要的参数都尽量从后台处理返回,处于方便有些就直接输入进去了,这里要注意url的参数也要带上,要不然无法获取到正确的签名

getSignature.do主要是返回微信所需要的一些参数

noncestr可通过随机数函数生成
timestamp是一个时间戳,我这里是用String.valueOf(Calendar.getInstance().getTimeInMillis())这种方式获取时间戳
signature就特别重要了,微信文档中有详细的签名算法步骤来说明如何生成signature.这里贴贴我的简单的实现方式:
首先是按字典序拼接成键值对的字符串:
public String format(){
StringBuffer bf=new StringBuffer();
bf.append("jsapi_ticket=");
bf.append(jsapi_ticket);
bf.append("&nOncestr=");
bf.append(noncestr);
bf.append("&timetamp=");
bf.append(timestamp);
bf.append("&url=");
bf.append(url);
return bf.toString();
}
由于这四个参数名字是固定死的,人工排序就好了,就不用什么函数了,
然后是根据上面得到的串进行SHA1加密:
先附上SHA1加密算法




附上SHA1加密算法:

public static String getSha1(String str) {
if (str == null || str.length() == 0) {
return null;
}
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' };

try {
MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
mdTemp.update(str.getBytes("UTF-8"));

byte[] md = mdTemp.digest();
int j = md.length;
char buf[] = new char[j * 2];
int k = 0;
for (int i = 0; i byte byte0 = md[i];
buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
buf[k++] = hexDigits[byte0 & 0xf];
}
return new String(buf);
} catch (Exception e) {
return null;
}
}
生成签名基本要用到AccessToken,ApiTicket等一系列参数,获取方式请参照微信开发文档或者我前面的章节。


推荐阅读
author-avatar
黑糖老姜茶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有