JSSDK实现微信自定义分享---java 后端获取签名信息

摘要:
grant_type=client_credential&appid="+appId+"&secret="+appsecret;我们下面用token获取分享签名jsapi_ticket就是使用基础token,如果用错了token会错以为token过期。grant_type=client_credential&appid={0}&secret={1}";1011StringappId="1232we3234ew";//公众号的appId12Stringsecret="324323dfs3243qew";//公众号号的密钥1314StringUrl=MessageFormat.format;15URLurl=newURL;1617/**获取微信access_token**/18JSONObjectjsonObjectAccessToken;19try{20jsonObjectAccessToken=JSONObject.parseObject;21}22if{23thrownewFrankyException;24}25Stringaccess_token=jsonObjectAccessToken.getString;2627/**获取jsapi_ticket**/28StringgetUrl="https://api.weixin.qq.com/cgi-bin/ticket/getticket?jsonObject.get.equals){31thrownewFrankyException;32}33Stringjsapi_ticket=jsonObject.getString;3435Stringnoncestr=WXPayUtil.generateNonceStr();36Stringtimestamp=String.valueOf;3738/**拼装字符转注意:对所有待签名参数按照字段名的ASCII码从小到大排序(字典序)后,39*使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。

一、首先说下关于微信Access_token的问题,微信Access_token分为2中:

1.授权token获取方式:

这种token需要code值(如何获取code值查看官方文档)

1 "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" +appsecret 2 + "&code=" + code + "&grant_type=authorization_code";

2.基础token获取方式:

1 "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appsecret;

我们下面用token获取分享签名jsapi_ticket 就是使用基础token,如果用错了token会错以为token过期。

二、下面是获取jssdk 签名的代码

1 private JsSdkDto find() throwsException{
2 
3         JsSdkDto jsSdkDto = newJsSdkDto();
4 
5         /**前端传的 需要授权分享的url **/
6         String authorizationUrl = "www.baidu.com";
7 
8         /**获取微信access_token的url **/
9         String weChatUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
10 
11         String appId = "1232we3234ew";  //公众号的appId
12         String secret = "324323dfs3243qew";  //公众号号的密钥
13 
14         String Url =MessageFormat.format(weChatUrl, appId,secret);
15         URL url = newURL(Url);
16 
17         /**获取微信access_token **/
18 JSONObject jsonObjectAccessToken;
19         try (InputStream inputStream =url.openStream()) {
20             jsonObjectAccessToken =JSONObject.parseObject(IOUtils.toString(inputStream));
21 }
22         if (jsonObjectAccessToken.containsKey("errmsg")) {
23             throw new FrankyException("获取token,原因:" + jsonObjectAccessToken.getString("errmsg"));
24 }
25         String access_token = jsonObjectAccessToken.getString("access_token");
26 
27         /**获取 jsapi_ticket **/
28         String getUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token+"&type=jsapi";
29         JSONObject jsonObject =wechatService.urlConnector(getUrl);
30         if (!jsonObject.get("errmsg").equals("ok")){
31             throw new FrankyException(ErrorCode.PARAMETER_INVALID,jsonObject.get("errmsg").toString());
32 }
33         String jsapi_ticket = jsonObject.getString("ticket");
34 
35         String noncestr =WXPayUtil.generateNonceStr();
36         String timestamp = String.valueOf(System.currentTimeMillis()/1000);
37 
38         /**拼装字符转 注意:对所有待签名参数按照字段名的 ASCII 码从小到大排序(字典序)后,
39 * 使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串 string1。
40 * 这里需要注意的是所有参数名均为小写字符。**/
41         String str = "jsapi_ticket="+jsapi_ticket+
42                 "&noncestr="+noncestr+"&timestamp="+timestamp+"&url="+url;
43 
44         /**对字符串进行 Sha1签名 **/
45         String s =sha1Hex(str);
46 
47 jsSdkDto.setAppId(appId);
48 jsSdkDto.setNonceStr(noncestr);
49 jsSdkDto.setTimeStamp(timestamp);
50 jsSdkDto.setSignature(s);
51         returnjsSdkDto;
52     }

免责声明:文章转载自《JSSDK实现微信自定义分享---java 后端获取签名信息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇自己用树莓派做了一个电视盒子,还可以看优酷和cctv搭建websocket消息推送服务,必须要考虑的几个问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

动态加载与插件系统的初步实现(3):WinForm示例

动态加载与插件系统的初步实现(三):WinForm示例 代码文件在此Download,本文章围绕前文所述默认AppDomain、插件容器AppDomain两个域及IPlugin、PluginProvider、PluginProxy3个类的使用与变化进行。 添加WinForm项目Host、类库Plugin、引用System.Windows.Forms;的类...

【spring data jpa】使用jpa的@Query,自己写的语句,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'status' cannot be found on null

报错: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'status' cannot be found on null 如果检查 自己写的SQL语句完全没有问题的情况下,并且已经使用了@Param(value ="") 那么你需...

基于Map多种方式实现简单的缓存处理

通过HashMap进行缓存 private static Map<String, Object>cacheMap; public staticObject getCache(String key, Object defaultValue) { Object obj =getCacheMap().get(key)...

Unity3D ZFBrowser (EmbeddedBrowser) 插件嵌入网页无法输入中文问题

  网页嵌入插件最好的应该就是ZFBrowser了, 可是使用起来也是问题多多, 现在最要命的是网页输入不能打中文, 作者也没打算接入IME, 只能自己想办法了...   搞了半天只想到一个办法, 就是通过Unity的IME去触发中文输入, 然后传入网页, 也就是说做一个透明的 InputField 盖住网页的输入文本框, 然后在 Update 或是 on...

如何获取变量token的值

一.什么是token 1.客户端使用用户名跟密码请求登录 2.服务端收到请求,去验证用户名与密码 3.验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 4.客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 LocalStorage 里,客户端每次向服务端请求资源的时候需要带着服务端签发的 Token...

【腾讯Bugly干货分享】打造“微信小程序”组件化开发框架

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2nQzsuqq7Avgs8wsRizUhw 作者:Gcaufy 导语 Bugly 之前发了一篇关于微信小程序的开发经验分享(点击阅读),小伙伴们在公众账号后台问了很多关于小程序开发方面的问题,精神哥在查阅相关内容...