废话不多,代码说话,那个url是你需要分享的url,需要传进来,然后入参加密。

java,获取微信需要的获取 jsapi_ticket和access_token 
@Slf4j
@Service
public class WeChatServiceImpl implements WeChatService {@Value("${weixin.test.appid}")String appid ;@Value("${weixin.test.sercert}")String sercert;// 获取token/*** 获取 微信H5页面 分享需要获得的** @return*/@Overridepublic BaseResponse getWechatJSShare(String url) {String lastResult = null;try {String token = WechatToken.getAccessToken(appid, sercert);log.info("微信H5页面分享 当次获得到的 token={}",token);String jsapiTicket = WechatToken.getJsapiTicket(token);log.info("微信H5页面分享 当次获得到的 jsapiTicket={}",jsapiTicket);UUID uuid = UUID.randomUUID();String nonceStr = String.valueOf(uuid);long timeMillis = System.currentTimeMillis()/1000;ConcurrentHashMap<String, Object> objectObjectConcurrentHashMap = new ConcurrentHashMap<>(4);objectObjectConcurrentHashMap.put("noncestr", nonceStr);objectObjectConcurrentHashMap.put("timestamp", timeMillis);objectObjectConcurrentHashMap.put("jsapi_ticket", jsapiTicket);objectObjectConcurrentHashMap.put("url",url);TreeMap<String, Object> stringObjectTreeMap = new TreeMap<>();stringObjectTreeMap.putAll(objectObjectConcurrentHashMap);Iterator<Map.Entry<String, Object>> iterator = stringObjectTreeMap.entrySet().iterator();StringBuilder stringBuilder = new StringBuilder();while (iterator.hasNext() == true) {Map.Entry<String, Object> mapMiddle = iterator.next();stringBuilder.append(mapMiddle.getKey());stringBuilder.append("=");stringBuilder.append(mapMiddle.getValue());stringBuilder.append("&");}String str = stringBuilder.toString();str = str.substring(0, str.length() - 1);System.out.println("str = " + str);byte[] bytes = Digests.sha1(str.getBytes("UTF-8"));String signature = byteToHex(bytes);ImmutableMap<String, Object> ofMap = ImmutableMap.of("appId", appid, "timestamp", timeMillis, "nonceStr", nonceStr, "signature", signature);lastResult = JSON.toJSONString(ofMap);log.info("微信H5页面分享 当次最终获得到的参数为 lastResult={}",lastResult);} catch (Exception e) {log.info("微信H5页面分享 当次最终获得到的参数为 lastResult={}",lastResult);log.info("微信H5页面分享 获取参数失败 e={}",e);BaseResponse.buildSuccess("获取参数失败");}return  BaseResponse.buildSuccess("获取成功",lastResult);}
}
package com.fh.hr.web.api.util;import org.apache.commons.lang3.Validate;import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.util.Formatter;/*** 摘要算法, 支持md5与sha1算法* @author Luxor* @version 2016/11/2.*/
public class Digests {private static final String SHA1 = "SHA-1";private static final String MD5 = "MD5";private static SecureRandom random = new SecureRandom();/*** 对输入字符串进行sha1散列.*/public static byte[] sha1(byte[] input) {return digest(input, SHA1, null, 1);}public static byte[] sha1(byte[] input, byte[] salt) {return digest(input, SHA1, salt, 1);}public static byte[] sha1(byte[] input, byte[] salt, int iterations) {return digest(input, SHA1, salt, iterations);}/*** 对输入字符串进行MD5*/public static byte[] md5(byte[] input) {return digest(input, MD5, null, 1);}/*** 对字符串进行散列, 支持md5与sha1算法.*/private static byte[] digest(byte[] input, String algorithm, byte[] salt, int iterations) {try {MessageDigest digest = MessageDigest.getInstance(algorithm);if (salt != null) {digest.update(salt);}byte[] result = digest.digest(input);for (int i = 1; i < iterations; i++) {digest.reset();result = digest.digest(result);}return result;} catch (GeneralSecurityException e) {throw new RuntimeException(e);}}/*** 生成随机的Byte[]作为salt.** @param numBytes byte数组的大小*/public static byte[] generateSalt(int numBytes) {Validate.isTrue(numBytes > 0, "numBytes argument must be a positive integer (1 or larger)", numBytes);byte[] bytes = new byte[numBytes];random.nextBytes(bytes);return bytes;}/*** 对文件进行md5散列.*/public static byte[] md5(InputStream input) throws IOException {return digest(input, MD5);}/*** 对文件进行sha1散列.*/public static byte[] sha1(InputStream input) throws IOException {return digest(input, SHA1);}public static byte[] digest(InputStream input, String algorithm) throws IOException {try {MessageDigest messageDigest = MessageDigest.getInstance(algorithm);int bufferLength = 8 * 1024;byte[] buffer = new byte[bufferLength];int read = input.read(buffer, 0, bufferLength);while (read > -1) {messageDigest.update(buffer, 0, read);read = input.read(buffer, 0, bufferLength);}return messageDigest.digest();} catch (GeneralSecurityException e) {throw new RuntimeException(e);}}public 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;}}

@Slf4j
public class WechatToken {private static final String    URL    = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";/*** 获取微信H5分享的js_ticket 过期时间为 7200s == 2小时*/public static final String   TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket";public static Map<String, TokenItem> TOKENS = new ConcurrentHashMap<>();public static Map<String, TicketItem> TICKET_TOKENS = new ConcurrentHashMap<>();public static String getAccessToken(String appId, String secret) {TokenItem tokenItem = TOKENS.get(appId);Long now = System.currentTimeMillis();if (tokenItem != null && tokenItem.expiresIn - now > 0) {return tokenItem.token;}synchronized (WechatToken.class) {now = System.currentTimeMillis();if (tokenItem != null && tokenItem.expiresIn.compareTo(now) > 0) {return tokenItem.token;}String url = String.format(URL, appId, secret);String rawResponse = HttpClientUtil.post(url);JSONObject response = JSON.parseObject(rawResponse);if (response.containsKey("errcode")) {// TODO EXCEPTIONlog.info("get weChat Access_Token has error! rawResponse={}",rawResponse);return null;}if (tokenItem == null) {TOKENS.put(appId, new TokenItem());}// 提前2分钟TOKENS.get(appId).expiresIn = now + (response.getLong("expires_in") - 120) * 1000;TOKENS.get(appId).token = response.getString("access_token");return TOKENS.get(appId).token;}}public static class TokenItem {private String token     = null;private Long   expiresIn = -1L;}public static class TicketItem {private  Integer errcode;private String errmsg;private String ticket = null;private Long expiresIn = -1L;}public static String getJsapiTicket(String access_token) {TicketItem ticketItem = WechatToken.TICKET_TOKENS.get(WechatConstant.TICKET_TOKEN_STR);Long now = System.currentTimeMillis();if (ticketItem != null && ticketItem.expiresIn - now > 0) {return ticketItem.ticket;}synchronized (WechatToken.class) {now = System.currentTimeMillis();if (ticketItem != null && ticketItem.expiresIn.compareTo(now) > 0) {return ticketItem.ticket;}String params = "type=jsapi&access_token=" + access_token;String result = HttpUtil.get(new StringBuilder().append(TICKET_URL).append("?").append(params).toString());JSONObject response = JSON.parseObject(result);if (0 != (int)response.get("errcode") && !("ok").equals(response.get("errmsg"))) {log.info("get weChat Ticket_Token has error! result={}", result);return null;}if (ticketItem == null) {TICKET_TOKENS.put(WechatConstant.TICKET_TOKEN_STR, new TicketItem());}// 提前2分钟TICKET_TOKENS.get(WechatConstant.TICKET_TOKEN_STR).expiresIn = now + (response.getLong("expires_in") - 120) * 1000;TICKET_TOKENS.get(WechatConstant.TICKET_TOKEN_STR).ticket = response.getString("ticket");return TICKET_TOKENS.get(WechatConstant.TICKET_TOKEN_STR).ticket;}}}

java,获取微信分享需要的获取 signature、jsapi_ticket和access_token相关推荐

  1. java对接微信分享_Java编程调用微信分享功能示例

    本文实例讲述了Java编程调用微信分享功能.分享给大家供大家参考,具体如下: 这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发完成,可使用. 如果想要自定义微信的分享功能,首先在自己的 ...

  2. vue获取微信登陆权限_Vue获取微信JSSDK授权,以及微信分享

    场景 Vue获取JSSDK授权以便在微信浏览器,或者嵌在小程序里面做些小事情,如朋友/朋友圈分享,微信支付,图片上传下载等 步骤一 配置安全域名: 在微信公众平台对应的公众号设置里面配上相应的JS接口 ...

  3. java 对接微信公众号(一)获取token

    1.登录微信公众平台,在基本配置里获取AppId和AppSecret 2.获取token(token获取到存本地,后续API都要带token访问) 需要在基本配置里配置ip白名单才能获取到token ...

  4. java版微信分享功能(支持分享给好友/分享到朋友圈)

    点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 先上官方文档:http://mp.weixin.qq.com/wiki/home/index.html 做之前建议先过遍文档,文档都说的清 ...

  5. php 获取微信文章阅读量,获取微信公众号的文章的阅读数的实践(请求参数不支持文章 ID)...

    1.新的需求为:需要实现微信渠道的文章的阅读数的显示.如图1 图1 2.实则最为理想的情况,应该是能够基于文章 ID 获取此文章的阅读数,就像抖音.查看抖音开放平台文档 – 资源中心 – Open A ...

  6. python获取微信好友权限_Python-itchat获取微信好友信息

    参考自:http://www.jianshu.com/p/684cbdf15874 思路就是通过itchat登录获取微信好友信息,然后通过pillow画图 import itchat import m ...

  7. java后台获取微信分享二维码 并返回给前端

    最近公司业务需求 微信小程序需要分享 从后台请求生成二维码图片 并显示 给大家分享一下 经验 第一步 :获得 微信token(这个token两个小时会过期 所以需要token生成相对应的二维码) St ...

  8. Java实现微信小程序登录 获取用户信息

    小程序比公众号授权登录 更加简单 其实没什么是后台需要处理的 前端传过来一个code 我们保存以下通过code获取过来的openid就可以 其他的用户信息 前端小程序那边可以获取. 首先既然是小程序登 ...

  9. java初始化微信分享_微信开发(一)基于Wx-java的微信分享功能

    最近在做微信服务号开发,简单总结一下,便于自己学习积累和分享给大家: 环境介绍: Spring+ Spring MVC +Mybatis 开发语言: JAVA 微信公众平台的开发中,微信只公布了一个基 ...

最新文章

  1. PyTorch Cookbook(常用代码合集)
  2. django重置密码发送html邮件,Django实现发送邮件找回密码功能
  3. python爬虫从入门到精通-Python网络爬虫开发从入门到精通
  4. php excel批量导入,PHP将excel文件中的数据批量导入到数据库中
  5. 推荐系统与协作过滤面临的主要问题
  6. 企业主机安全面临的三大风险如何解?
  7. 终于把英文版操作系统中文乱码问题解决了
  8. 深入比特币原理(三)——交易的输入(input)与输出(output)
  9. psn请验证您不是机器人_创客机器人的课程简单易学吗
  10. centos 怎样显示metric_centos7系列问题
  11. Zero Sum chapter 2.3 dfs
  12. C# 数组比较--取得两个集合的交集,差集,并集的方法
  13. 《沟通的技术——让交流、会议与演讲更有效》一第一部分 建导准备
  14. hibernate 状态间转换及update,saveOrUpdte
  15. IIS6同一IP部署多域名证书(部署指南)
  16. Winrunner实验三 测试脚本编程(一)
  17. java jre 7_jre1.7官方下载|
  18. ElasticSearch
  19. 垃圾邮件分类系统python_【Python】基于Bayes算法的垃圾邮件分类系统
  20. web项目上云_联想Filez—携手浙江中烟,发力“云”端,打造“烟草上云”新势能...

热门文章

  1. CTreeCtrl展开树形所有节点
  2. 理解A*寻路算法具体过程
  3. 监听以太网(三) Packet32数据结构说明
  4. 第33讲:可见即可爬,Appium 的使用
  5. Python 多进程向同一个文件写数据
  6. CentOS报错:“Could not resolve host: mirrorlist.centos.org; Unknown error“
  7. Redis缓存击穿和缓存雪崩、缓存穿透以及对应的解决方案
  8. 深入理解消息队列(场景,对比,原理和设计思想)
  9. 能不能用一句话总结 HTTPS?
  10. 中秋干货 | 架构进阶之路上的实时数仓