上一章讲了redis工具类的封装,今天我们来讲讲微信工具类的封装。这个可没有想象的那么简单,说实话,我就因为没看仔细微信企业号开发者接口文档,在参数上碰到过很多坑。这个在没有人指导的情况下,整个人心情好几天都是不好的。为什么不好呢,下面听我详细说来:
像什么主动调用啊,成员登录什么的目前还用不到,我到后面再讲,现在就先讲讲JSSDK的调用,首先
步骤一:引入JS文件
在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js
备注:我也懒得下载了。反正使用手机端都是有联网的,去服务器下载JS和去微信下载js耗费的流量也基本没差。如果没网也没法测,所以我就考虑直接引入联网的js文件。
步骤二:通过config接口注入权限验证配置
所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,企业号的唯一标识,此处填写企业号corpid
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
上面是我抄微信API的,其他都是没啥问题,就是这个签名害苦了我。这是调用的JSSDK是否能调用的验证的,下面调用JSSDK具体方法的时候,还要另外生成一次不同的签名。我就不废话了,直接开始讲生成签名的方法封装好了。
/**
* @param group_ticket 格式如jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
* @param url 当前页面的url路径
* @return String
* @throws DigestException
*/
public static String getSignature(String ticket,String url) throws DigestException{
JSONObject jres = new JSONObject();
String signature = "";
String sign = "";
String noncestr = getRandomString(16);
String timestamp = Long.toString(System.currentTimeMillis()).substring(0,10);
sign = sign + ticket
+ "&noncestr=" + noncestr
+ "×tamp=" + timestamp
+ "&url=" + url;
try {