java中nonce_java如何获取微信timestamp,nonceStr,signature参数

java如何获取微信timestamp,nonceStr,signature参数

发布时间:2021-01-18 11:46:12

来源:亿速云

阅读:57

作者:小新

这篇文章主要介绍java如何获取微信timestamp,nonceStr,signature参数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

用java代码来实现获取timestamp,nonceStr,signature这三个参数

Sign代码:package com.test.util;

import java.util.UUID;

import java.util.Map;

import java.util.HashMap;

import java.util.Formatter;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.io.UnsupportedEncodingException;

public class Sign {

public static void main(String[] args) {

String jsapi_ticket =JsapiTicketUtil.getJSApiTicket();;

// 注意 URL 一定要动态获取,不能 hardcode

String url = "http://www.vxzsk.com/xx/x.do";//url是你请求的一个action或者controller地址,并且方法直接跳转到使用jsapi的jsp界面

Map ret = sign(jsapi_ticket, url);

for (Map.Entry entry : ret.entrySet()) {

System.out.println(entry.getKey() + ", " + entry.getValue());

}

};

public static Map sign(String jsapi_ticket, String url) {

Map ret = new HashMap();

String nonce_str = create_nonce_str();

String timestamp = create_timestamp();

String string1;

String signature = "";

//注意这里参数名必须全部小写,且必须有序

string1 = "jsapi_ticket=" + jsapi_ticket +

"&noncestr=" + nonce_str +

"&timestamp=" + timestamp +

"&url=" + url;

System.out.println(string1);

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);

}

}

第16行main方法中的一个变量url就是你请求的一个action或者controller地址,并且方法直接跳转到使用jsapi的jsp界面

获取jsapi_ticket工具类代码:package com.test.util;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import net.sf.json.JSONObject;

import com.test.weixin.TestAcessToken;

/***

* @author V型知识库  www.vxzsk.com

*

*/

public class JsapiTicketUtil {

/***

* 模拟get请求

* @param url

* @param charset

* @param timeout

* @return

*/

public static String sendGet(String url, String charset, int timeout)

{

String result = "";

try

{

URL u = new URL(url);

try

{

URLConnection conn = u.openConnection();

conn.connect();

conn.setConnectTimeout(timeout);

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));

String line="";

while ((line = in.readLine()) != null)

{

result = result + line;

}

in.close();

} catch (IOException e) {

return result;

}

}

catch (MalformedURLException e)

{

return result;

}

return result;

}

public static String getAccessToken(){

String appid="你公众号基本设置里的应用id";//应用ID

String appSecret="你公众号基本设置里的应用密钥";//(应用密钥)

String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";

String backData=TestAcessToken.sendGet(url, "utf-8", 10000);

String accessToken = (String) JSONObject.fromObject(backData).get("access_token");

return accessToken;

}

public static String getJSApiTicket(){

//获取token

String acess_token= JsapiTicketUtil.getAccessToken();

String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+acess_token+"&type=jsapi";

String backData=TestAcessToken.sendGet(urlStr, "utf-8", 10000);

String ticket = (String) JSONObject.fromObject(backData).get("ticket");

return  ticket;

}

public static void main(String[] args) {

String jsapiTicket = JsapiTicketUtil.getJSApiTicket();

System.out.println("调用微信jsapi的凭证票为:"+jsapiTicket);

}

}

读者可直接把代码复制到myeclipse或者Eclipse中运行main方法即可,但是在这里提示读者JsapiTicketUtil中获取acces_token方法中需要读者自行填写自己的appid和appsecret。

以上是“java如何获取微信timestamp,nonceStr,signature参数”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【杭州云栖】飞天技术汇大视频专场:全民视频时代下的创新技术之路

2018杭州•云栖大会在9月19日如期召开,在四天时间内将举行2场主论坛、170多场前沿峰会。在9月19日上午的飞天技术汇-大视频专场中,多位阿里云技术专家、合作伙伴、客户为现场观众分享了各自领域的多媒体研发成果,进行多款重磅产品的发布&…

Centos7 使用Docker 安装Oracle精简版本

文章目录一、Docker1. 在线安装Docker2. 启动docker3. 使用docker拉取Oracle镜像4. 看拉取的oracle镜像5. 创建守护式oracle容器并启动容器6. 查看正在运行的容器二、oracle容器配置篇2.1. 进入oracle容器的控制台2.2. 切换root用户配置环境变量2.3. 设置系统及用户密码三、登录…

sip协议详解_SIP协议详解-INVITE消息发送过程

SIP协议是VoIP中最重要的信令控制协议。SIP中第一件事情就是主叫发送INVITE给被叫,被叫响铃。本文从多角度详细描述INVITE消息发送的全过程。一、阅读RFC权威描述关于INVITE消息发送,先查看RFC 3261中权威描述:INVITE client transaction: ht…

【杭州云栖】飞天技术汇CDN与边缘计算专场:让内容离消费者更进一步

【杭州云栖】飞天技术汇CDN与边缘计算专场:让内容离消费者更进一步 在5G移动通信、IoT万物智联时代即将到来的大背景下,越来越多的应用和数据来自边缘位置,呈现低延时、高带宽、大连接、本地化的业务特征,那么如何协同阿里云全球…

迈克尔·戴尔再次到访2019戴尔科技峰会,为“戴尔中国4.0+战略”加个码……

10月25日,以“拓界成真”为主题的2019戴尔科技峰会在北京国家会议中心隆重举行。戴尔科技集团董事长兼首席执行官迈克尔戴尔出席峰会,发表主题演讲,见证集团与多个地方政府、高校、企业签署战略合作协议,并与教育部领导一起&#…

【杭州云栖】边缘计算ENS:拓展云的边界

在9月19日下午的杭州云栖大会飞天技术汇-CDN与边缘计算专场中,阿里云边缘计算团队的高级技术专家王广芳,从边缘计算的定义、场景的需求和挑战、ENS产品的价值及能力,以及典型的应用场景和案例等几个方面,详细解读了阿里云对于边缘…

Centos7 解决Docker拉取镜像慢的问题

配置加速Docker镜像源 vi /etc/docker/daemon.json在配置文件中加入 {"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"] }[rootkm docker]# systemctl daemon-reload [rootkm docker]# systemctl restart dockerhttps://cr.console.aliyun.com…

python程序员自我评价_写给程序员的简明 Python(1)

为什么写python作为胶水语言越来越流行, 第三方类库, 轮子也特别多.对于创业型公司或刚开始的产品都可以选用 Python 作为后端支撑, 工具开发, 实现快速迭代.对于学习算法的同学, 是门简洁如 C的语言.对于搞机器学习的同学,是必备的技能.从哪开始写一些探索的方法基本的变量类型…

你的食物变质没?用AI算法来检测一下吧

最近一条幼儿园采用过期食物的新闻引起了社会的强烈关注,对于食品安全而言,国家一直是严格要求的,尤其是对于婴幼儿食品安全的标准,部分已经超越了国际上的标准。但可能是由于无法严格地执行到每一个地方且检测周期较长&#xff0…

java国家电网面试试题_国家电网笔试面试相关

1. 简历筛选国网在通知笔试前,会根据简历内容做第一次筛选,“研究方向和国网不相关”是很频繁出现的一个理由。建议在编写简历时研究一下国网的当前工作,然后把自己的研究点尽量向国网感兴趣的方向靠。本人的研究方向就和国网的现状八杆子打不…

CAS项目部署和基础操作

文章目录一、部署cas1. 复制cas.war到webapps2. 登录页面二、CAS服务端配置2.1. 添加用户2.2. 端口修改2.3. 去除https认证一、部署cas 1. 复制cas.war到webapps 把cas.war放到tomcat的webapps下面启动Tomcat即可 2. 登录页面 二、CAS服务端配置 2.1. 添加用户 找到指定文…

基于POLARDB数据库的压测实践

POLARDB架构简介 PolarDB是阿里云ApsaraDB数据库团队研发的基于云计算架构的下一代关系型数据库(暂时仅支持MySQL,PostgreSQL正在紧锣密鼓的开发中),其最大的特色是计算节点(主要做SQL解析以及存储引擎计算的服务器)与存储节点(主要做数据块存储&#x…

戴尔科技:以技术突破创新边界!

2019戴尔科技峰会今天在北京隆重举行,戴尔科技集团与数千位全国企业级精英、合作伙伴、业内专家、媒体及分析师代表等齐聚一堂,分享了在5G、云计算、存储、数据保护、服务器等领域的最新技术产品、最佳实践经验及最新发展趋势。此次峰会还完整地展示了戴…

phppython混合开发_如何让python嵌入html实现类似php的快速开发,十分有价值

1.在一个文件夹名为www.html3.com的web项目来实现,首先到nginx的配置文件nginx.conf做如下配置python和html混合编写的文件,我以文件后缀为.phtml,通过服务器配置让它重定向到 /rewrite/2.进去项目目录下的static/html/ 编写一个1.phtml 内容…

让你久等了!《码出高效:Java 开发手册》正式发布

可爱的Java开发者们,让你们久等了! 9月22日杭州云栖大会,众所期待的新书《码出高效:Java 开发手册》正式发布,并宣布将所有图书收益捐赠于公益项目。 此书从立意到付梓,历时超过两年,期间推翻数…

python中is和 的区别_Python中is和==的区别

"""is和 的区别"""a abcb abcprint("都是字符串-a is b--", a is b)print("都是字符串-a b--", a b)c 11d 11print("都是数字-c is d--", c is d)print("都是数字-c d--", c d)e [0, 1, 2]f …

(Docker实战) 第1篇:Centos7 环境准备和安装Docker-ce

文章目录一 、安装docker1. 卸载以前安装的docker2. 安装必要的系统工具4. 更新yum缓存5. 安装docker6. 更改docker仓库为国内仓库7. 重启docker8. 安装docker-compose一 、安装docker docker优点 快速上手新技术,把精力放在业务上而非安装和配置服务器快速搭建开发…

初入数据科学领域,你需要有七个这样的思维

假设你刚刚被一家小型软件公司聘为数据科学家。你感到欣喜若狂!你的辛勤工作和坚持不懈终于得到了回报。是时候将你的统计数据和机器学习知识付诸实践了。那么恭喜你终于加入了数据革命。 第1天到来,每个人都很高兴见到这位“数据科学家”。该公司以前从…

输入文字自动生成图片_原来Word还可以自动生成图片和图表目录!

小李接到了一个任务,将技术文档中的示意图目录做出来,让客户能根据需求快速找到操作示意图,可是这份文档有三百多张图片,不过,这可难不倒小李。说到Word目录,大多数人都知道,可以为文档的标题设…

反转!物联网火爆,开发者却很难入门?

在 2019 北京网络安全大会上,工信部负责人表示,我国面向 5G 和车联网将建设网安防护体系,提升监测预警和应急响应能力。其中物联网设备已成为网安防护新重点。为什么工信部会这么重视物联网?物联网开发者的现状又是如何呢&#xf…