微信&java 开发7 js sdk 获取签名 signature
2016-05-12 13:45
711 查看
在前面的章节 如果全局缓存了 access_token和 jsapi_ticket的话 这里直接获取
springmvc 中
看SignatureUtil.get(request);方法 签名算法请看官方文档
springmvc 中
@RequestMapping(value = "/gotoWtjb") public ModelAndView gotoWtjb(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) { Map<String, String> map=SignatureUtil.get(request); modelMap.addAllAttributes(map); return new ModelAndView("index",modelMap); }
看SignatureUtil.get(request);方法 签名算法请看官方文档
public static Map<String, String> get(HttpServletRequest request) { JsApiTicket jsApiTicket = (JsApiTicket)ServletContextUtil.get().getAttribute(Contants.JSAPI_TICKET); if(null != jsApiTicket) { String ticket = jsApiTicket.getTicket(); String url = request.getRequestURL().toString(); System.out.println(url); Map<String, String> ret = sign(ticket, url); ret.put("appId", WeiXinPropUtil.APPID); ret.put("doMain", WeiXinPropUtil.WebDomain); return ret; } return null; };
public static Map<String, String> sign(String jsapi_ticket, String url) { Map<String, String> ret = new HashMap<String, String>(); String nonce_str = create_nonce_str(); String timestamp = create_timestamp(); String string1; String signature = ""; string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str+ "×tamp=" + timestamp + "&url=" + url; try { MessageDigest crypt = MessageDigest.getInstance("SHA-1"); crypt.reset(); crypt.update(string1.getBytes("UTF-8")); signature = byteToHex(crypt.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } ret.put("url", url); ret.put("jsapi_ticket", jsapi_ticket); ret.put("nonceStr", nonce_str); ret.put("timestamp", timestamp); ret.put("signature", signature); return ret; }
private static String byteToHex(final byte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x", b); } String result = formatter.toString(); formatter.close(); return result; } private static String create_nonce_str() { return UUID.randomUUID().toString(); } private static String create_timestamp() { return Long.toString(System.currentTimeMillis() / 1000); }
相关文章推荐
- 微信&java 开发6 全局缓存access_token与jsapi_ticket
- 微信&java 开发5 jsapi_ticket的获取
- 微信&java 开发4 access_token获取
- 微信&java 开发3 菜单接口
- 微信&java 开发2 发送文本消息并回复
- 微信&java 开发1 平台接入
- 仿微信开发(二)--系统语言设置
- 微信js-sdk config JavaScript签名
- Java小程序:模拟双色球开奖
- 如何在微信公众号下载保存图片??
- 微信支付
- 公众号判断用户是否已关注php代码
- Android 开发判断用户是否安装微信和QQ并跳转过去
- (高效开发)仿微信图片选择器PhotoPicker
- php微信开发中各种小技巧收集
- 微信对话框小三角形实现
- 我也有微信朋友圈了 Android实现
- 微信第三方授权登录返回错误信息: 40029
- WSTMall V1.6.0发布,支持QQ、微信登录,支持购物车信息插入数据库
- 产品知识分享:外链分享到微信的逻辑