关于微信开发中使用 Java 获取签名 signature 的攻略,具体步骤如下:
关于微信开发中使用 Java 获取签名 signature 的攻略,具体步骤如下:
1. 准备工作
首先,需要在微信公众平台上创建一个开发者账号,并获取到 appID 和 appSecret。同时,需要引入一个 Java 的 SHA1 工具类,用于签名计算。
2. 获取 access_token
然后,需要通过微信提供的 API 获取 access_token。因为 access_token 的有效期只有 2 个小时,所以建议先将获取到的 access_token 保存下来,后续可以定时刷新。
前往 微信公众平台官网,登录开发者账号后,在左侧菜单中点击“开发”-“开发者工具”,进入开发者工具页面,获取 access_token 的 API 如下:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
其中 APPID 和 APPSECRET 需要替换成自己的 appID 和 appSecret。发送 GET 请求即可获取到 access_token,示例代码如下:
public static String getAccessToken(String appID, String appSecret) {
String url = "https://api.weixin.qq.com/cgi-bin/token";
url += "?grant_type=client_credential";
url += "&appid=" + appID;
url += "&secret=" + appSecret;
String response = HttpUtil.get(url);
JSONObject jsonObject = JSON.parseObject(response);
return jsonObject.getString("access_token");
}
3. 计算 signature
获取到 access_token 后,就可以使用 SHA1 工具类计算 signature。signature 是校验微信服务器和开发者服务器之间通信的重要参数,需要遵循微信官网的计算规则。
具体的计算方法如下:
- 将参数列表去除 signature 后按照字典序排序,并用&拼接成字符串。如:
jsapi_ticket=XXX&noncestr=YYY×tamp=ZZZ&url=UUU
- 将拼接好的字符串进行 SHA1 加密
- 将加密后的字符串转换为小写字母,即为 signature
示例代码如下:
public static String getSignature(String jsapiTicket, String nonceStr, String timestamp, String url) {
String[] arr = new String[] { "jsapi_ticket=" + jsapiTicket, "noncestr=" + nonceStr, "timestamp=" + timestamp, "url=" + url };
Arrays.sort(arr);
StringBuilder sb = new StringBuilder();
for (String s : arr) {
sb.append(s).append("&");
}
sb.deleteCharAt(sb.length() - 1);
String str = sb.toString();
try {
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.update(str.getBytes());
byte[] bytes = digest.digest();
StringBuilder result = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xFF);
if (hex.length() == 1) {
result.append("0");
}
result.append(hex);
}
return result.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
示例
下面给出两个示例,分别演示了如何获取 access_token 和如何计算 signature。
示例1:获取 access_token
String appID = "XXX";
String appSecret = "YYY";
String accessToken = getAccessToken(appID, appSecret);
System.out.println("access_token: " + accessToken);
示例2:计算 signature
String jsapiTicket = "XXX";
String nonceStr = "abc";
String timestamp = "123";
String url = "http://www.example.com";
String signature = getSignature(jsapiTicket, nonceStr, timestamp, url);
System.out.println("signature: " + signature);
以上就是使用 Java 获取微信签名 signature 的完整攻略。
本文标题为:微信开发之使用java获取签名signature
基础教程推荐
- 自己动手用Springboot实现仿百度网盘的实践 2023-08-08
- Java C++题解leetcode消失的两个数字实例 2023-06-02
- 使用javaMail实现发送邮件 2023-04-12
- Spring Security登录表单配置示例详解 2023-01-18
- 使用mysql的java web应用程序中的“查询包过大” 2023-11-05
- springboot中使用groovy的示例代码 2023-05-18
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录 2023-07-31
- PHP.vs.JAVA 2024-02-26
- UniApp + SpringBoot 实现微信支付和退款功能 2022-12-03
- jsp页面 列表 展示 ajax异步实现方法 2023-08-02