企业jsapi_ticket,java举例

在企业微信开发中,使用 Java 获取 jsapi_ticket 并生成签名的步骤如下。以下是完整的 Java 示例代码。


1. 获取 jsapi_ticket 的流程

  1. 获取 access_token

  2. 使用 access_token 获取 jsapi_ticket

  3. 使用 jsapi_ticket 生成签名(signature)。


2. Java 示例代码

以下是一个完整的 Java 示例,展示如何获取 jsapi_ticket 并生成签名。

依赖

确保项目中引入了以下依赖(如使用 Maven):

xml

复制

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version>
</dependency>

运行 HTML

代码实现

java

复制

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;public class WeChatJsApiTicket {// 获取 access_token 的接口地址private static final String ACCESS_TOKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s";// 获取 jsapi_ticket 的接口地址private static final String JSAPI_TICKET_URL = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=%s";// 企业 ID 和应用 Secretprivate static final String CORP_ID = "YOUR_CORP_ID";private static final String CORP_SECRET = "YOUR_CORP_SECRET";/*** 发送 HTTP GET 请求*/private static String httpGet(String url) throws IOException {try (CloseableHttpClient httpClient = HttpClients.createDefault()) {HttpGet httpGet = new HttpGet(url);try (CloseableHttpResponse response = httpClient.execute(httpGet)) {HttpEntity entity = response.getEntity();return EntityUtils.toString(entity);}}}/*** 获取 access_token*/public static String getAccessToken() throws IOException {String url = String.format(ACCESS_TOKEN_URL, CORP_ID, CORP_SECRET);String response = httpGet(url);JSONObject json = JSONObject.parseObject(response);return json.getString("access_token");}/*** 获取 jsapi_ticket*/public static String getJsApiTicket(String accessToken) throws IOException {String url = String.format(JSAPI_TICKET_URL, accessToken);String response = httpGet(url);JSONObject json = JSONObject.parseObject(response);return json.getString("ticket");}/*** 生成签名*/public static String generateSignature(String jsapiTicket, String noncestr, String timestamp, String url) {String string = "jsapi_ticket=" + jsapiTicket +"&noncestr=" + noncestr +"&timestamp=" + timestamp +"&url=" + url;try {MessageDigest digest = MessageDigest.getInstance("SHA-1");digest.update(string.getBytes());byte[] messageDigest = digest.digest();StringBuilder hexString = new StringBuilder();for (byte b : messageDigest) {String shaHex = Integer.toHexString(b & 0xFF);if (shaHex.length() < 2) {hexString.append(0);}hexString.append(shaHex);}return hexString.toString();} catch (NoSuchAlgorithmException e) {throw new RuntimeException("SHA-1 algorithm not found");}}public static void main(String[] args) throws IOException {// 1. 获取 access_tokenString accessToken = getAccessToken();System.out.println("access_token: " + accessToken);// 2. 获取 jsapi_ticketString jsapiTicket = getJsApiTicket(accessToken);System.out.println("jsapi_ticket: " + jsapiTicket);// 3. 生成签名String noncestr = UUID.randomUUID().toString();String timestamp = Long.toString(System.currentTimeMillis() / 1000);String url = "https://example.com"; // 当前页面的 URLString signature = generateSignature(jsapiTicket, noncestr, timestamp, url);System.out.println("noncestr: " + noncestr);System.out.println("timestamp: " + timestamp);System.out.println("signature: " + signature);}
}

3. 代码说明

  1. 获取 access_token:

    • 使用企业 ID (CORP_ID) 和应用 Secret (CORP_SECRET) 调用企业微信 API 获取 access_token

  2. 获取 jsapi_ticket:

    • 使用 access_token 调用企业微信 API 获取 jsapi_ticket

  3. 生成签名:

    • 使用 jsapi_ticket、随机字符串 (noncestr)、时间戳 (timestamp) 和当前页面的 URL 生成签名 (signature)。

  4. SHA-1 加密:

    • 使用 Java 的 MessageDigest 类对字符串进行 SHA-1 加密。


4. 输出示例

运行代码后,输出如下:

复制

access_token: YOUR_ACCESS_TOKEN
jsapi_ticket: YOUR_JSAPI_TICKET
noncestr: 6a8e5f4e-3b1a-4c2d-9f8e-1a2b3c4d5e6f
timestamp: 1698765432
signature: 1f3a5e7b9c2d4f6a8b0c1d2e3f4a5b6c7d8e9f0

5. 注意事项

  1. 缓存 access_token 和 jsapi_ticket:

    • 由于 access_token 和 jsapi_ticket 的有效期均为 7200 秒(2 小时),建议在服务器端缓存它们,避免频繁调用接口。

  2. URL 参数:

    • 生成签名时,URL 必须是当前页面的完整 URL(不包括 # 及其后面部分)。

  3. 安全性:

    • access_token 和 jsapi_ticket 是敏感信息,不要泄露给客户端或第三方。


通过以上代码,你可以在 Java 中实现企业微信 jsapi_ticket 的获取和签名生成。

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

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

相关文章

【Godot4.3】自定义简易菜单栏节点ETDMenuBar

概述 Godot中的菜单创建是一个复杂的灾难性工作&#xff0c;往往无从下手&#xff0c;我也是不止一次尝试简化菜单的创建。 从自己去年的发明“简易树形数据”用于简化Tree控件获得灵感&#xff0c;于是尝试编写了用于表示菜单数据的EasyMenuData类&#xff0c;以及对应的纯文…

大数据与金融科技:革新金融行业的动力引擎

大数据与金融科技&#xff1a;革新金融行业的动力引擎 在今天的金融行业&#xff0c;大数据与金融科技的结合正在以惊人的速度推动着金融服务的创新与变革。通过精准的数据分析与智能化决策&#xff0c;金融机构能够更高效地进行风险管理、客户服务、资产管理等一系列关键操作…

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好&#xff0c;如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码&#xff0c;点击S…

Rohm发布TOLL封装650V GaN HEMT,引领汽车用GaN器件大规模生产新浪潮

Rohm震撼发布TOLL封装650V GaN HEMT&#xff0c;引领汽车用GaN器件大规模生产新浪潮。在创新的TOLL&#xff08;TO LeadLess&#xff09;封装技术的怀抱中&#xff0c;Rohm精心孕育出650V GaN HEMT这一瑰宝&#xff0c;此技术正如一股强劲东风&#xff0c;日益吹拂于高功率处理…

Spring Boot 3.x 基于 Redis 实现邮箱验证码认证

文章目录 依赖配置开启 QQ 邮箱 SMTP 服务配置文件代码实现验证码服务邮件服务接口实现执行流程 依赖配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…

PHP的学习

PHP的基础前提【HTML、CSS】 第一步先进行VS cood的下载&#xff1a;Visual Studio Code - Code Editing. Redefined 【选择适合自己的电脑的版本eg:我就是64位的win】

XML 编辑器:全面指南与最佳实践

XML 编辑器:全面指南与最佳实践 引言 XML(可扩展标记语言)编辑器是处理XML文件的关键工具,对于开发人员、系统管理员以及任何需要处理XML数据的人来说至关重要。本文将全面介绍XML编辑器的概念、功能、选择标准以及最佳实践,旨在帮助读者了解如何选择和使用合适的XML编辑…

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …

ORM Bee V2.5.2.x 发布,支持 CQRS; sql 性能分析;更新 MongoDB ORM分片

Bee, 一个具有分片功能的 ORM 框架. Bee Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) 小巧玲珑&#xff01;仅 940K, 还不到 1M, 但却是功能强大&#xff01; V2.5.2 (2025・LTS 版) 开发中... **2.5.2.1 新年 ** 支持 Mong…

springboot之HTML与图片生成

背景 后台需要根据字段动态生成HTML&#xff0c;并生成图片&#xff0c;发送邮件到给定邮箱 依赖 <!-- freemarker模板引擎--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifa…

《从0到1:用Python在鸿蒙系统开发安防图像分类AI功能》

在人工智能与移动应用深度融合的当下,类目标签AI功能成为众多行业提升效率和用户体验的关键技术。本文聚焦于HarmonyOS NEXT API 12及以上版本,以图像分类在智能家居安防领域的应用为例,为开发者详细阐述如何利用Python开发类目标签AI功能,助力鸿蒙技术在该领域的创新应用。…

【AD】3-10 原理图PDF导出

文件—智能PDF 多页原理图导出 导出设置时选择工程&#xff0c;可自行选择导出一页或多页原理图&#xff0c;一般PCB不用导出

【deepseek第一课】从0到1介绍 采用ollama安装deepseek私有化部署,并实现页面可视化

【deepseek第一课】从0到1介绍 采用ollama安装deepseek私有化部署,并实现页面可视化 1. ollama安装1.1 linux安装1.2 windows安装2. deepSeek支持的7种蒸馏模型2.1 蒸馏模型介绍2.2 7种模型特点2.3 安装deepseek-r1:14b模型3. openwebui图形化页面安装4. java连接大模型的三…

【在线用户监控】在线用户查询、强退用户

文章目录 在线用户监控在线用户监控API(RestController)当前在线会话在线用户查询强退用户知识扩展: JwtJwtTokenUtil生成jwt解析token登录授权的实现:json web token + redis + springboot在线用户监控 在线用户监控API(RestController) @RestController @Tag(name = &qu…

超详细,多图文介绍redis集群方式并搭建redis伪集群

超详细&#xff0c;多图文介绍redis集群方式并搭建redis伪集群 超多图文&#xff0c;对新手友好度极好。敲命令的过程中&#xff0c;难免会敲错&#xff0c;但为了截好一张合适的图&#xff0c;一旦出现一点问题&#xff0c;为了好的演示效果&#xff0c;就要从头开始敲。且看且…

Hue Load Balance配置

个人博客地址&#xff1a;Hue Load Balance配置 | 一张假钞的真实世界 直接上配置&#xff1a; server {server_name 192.168.72.31;listen 8001;charset utf-8;proxy_connect_timeout 600s;proxy_read_timeout 600s;proxy_send_timeout 600s;location / {proxy_set_header H…

992. K 个不同整数的子数组

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 2.2 代码尝试 class Solution { public:int subarraysWithKDistinct(vector<int>& nums, int k) {//需要有数据结构来存储数组…

领域驱动设计:事件溯源架构简介

概述 事件溯源架构通常由3种应用设计模式组成,分别是:事件驱动(Event Driven),事件溯源(Event Source)、CQRS(读写分离)。这三种应用设计模式常见于领域驱动设计(DDD)中,但它们本身是一种应用设计的思想,不仅仅局限于DDD,每一种模式都可以单独拿出来使用。 E…

PT2035 TWS 蓝牙耳机双触控双输出 IC

1. 产品概述 PT2035 是一款支持入耳检测的蓝牙耳机专用触摸芯片&#xff0c;该芯片具有宽工作电压、低功耗、高抗 干扰能力的特性。 2. 主要特性 工作电压范围&#xff1a; 2.4~5.5V 待机电流约 2.5uAV DD3V/CMOD5nF 入耳有效&#xff0c;无触摸时工作电流约 8uAV DD3…

AI编程界的集大成者——通义灵码AI程序员

一、引言 随着软件行业的快速发展和技术的进步&#xff0c;人工智能&#xff08;AI&#xff09;正在成为软件开发领域的一个重要组成部分。近年来&#xff0c;越来越多的AI辅助工具被引入到开发流程中&#xff0c;旨在提高效率、减少错误并加速创新。在这样的背景下&#xff0…