首先是取得jssdk的签名
后台可以这样写
@RequestMapping(value = "getSignature",method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> getSignature(String url) throws NoSuchAlgorithmException{
Map<String, Object> map = Maps.newHashMap();
String noncestr = Constants.NONCESTR;
Long time = System.currentTimeMillis()/1000;
String ticket = Constants.getAPI_TICKET();
String[] paramArr = new String[] { "jsapi_ticket=" + ticket,
"timestamp=" + time.toString(), "noncestr=" + noncestr, "url=" + url };
Arrays.sort(paramArr);
// 将排序后的结果拼接成一个字符串
String content = paramArr[0].concat("&"+paramArr[1]).concat("&"+paramArr[2])
.concat("&"+paramArr[3]);
map.put("time", time);
map.put("ticket", ticket);
map.put("noncestr", noncestr);
map.put("appid", PropertiesLoader.get("APP_ID"));
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(content.getBytes());
byte[] digest = md.digest();
StringBuffer hexstr = new StringBuffer();
String shaHex = "";
for (int i = 0; i < digest.length; i++) {
shaHex = Integer.toHexString(digest[i] & 0xFF);
if (shaHex.length() < 2) {
hexstr.append(0);
}
hexstr.append(shaHex);
}
map.put("signature", hexstr.toString());
return map;
}
前台ajax请求之后
初始化
$.ajax({
url : "<%=basePath%>wx/getSignature.json",
async : false,
data : {url : url},
dataType : "json",
type : "get",
success : function(resp){
map = resp;
wx.config({
debug : false,
appId : resp.appid,
timestamp : resp.time,
nonceStr : resp.noncestr,
signature : resp.signature,
jsApiList : ['chooseImage','uploadImage']
});
},
error : function(resp){
alert("初始化失败!");
location.href = "<%=basePath%>wx/error";
}
});
function chooseImage(){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
local = res.localIds[0];
$("#yulan").html("");
var i = document.createElement('img');
i.src = res.localIds[0];
$("#yulan").append(i); //用来预览图片
}
});
};
function uploadImage(){
wx.uploadImage({
localId: local, // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
成功调用
}
});
}