java获取微信姓名,java获取微信signature

此篇博客介绍了如何使用Hutool库在Java中生成微信JS-SDK的签名,包括获取access_token和jsapi_ticket,以及SHA1加密算法的应用。重点在于通过示例展示了获取微信授权凭证并组合URL、noncestr和timestamp来创建完整的签名过程。
摘要由CSDN通过智能技术生成

import cn.hutool.http.HttpUtil;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.UUID;

/**

* @Author: yangyang

* @Date: 2020-02-29 23:43

* @Description:

*/

public class WeChatUtils {

public static JSONObject getWeChatSignature(String url) {

String appid = Constant.WX_ACCOUNT_APPID;

String secret = Constant.WX_ACCOUNT_SECRET;

String accessToken = getAccessToken(appid,secret);

String jsapiTicket = getTicket(accessToken);

String noncestr = UUID.randomUUID().toString().replace("-", "").substring(0, 16);

String timestamp = String.valueOf(System.currentTimeMillis() / 1000);

String str = "jsapi_ticket="+jsapiTicket+"&noncestr="+noncestr+"&timestamp="+timestamp+"&url=" + url;

//6、将字符串进行sha1加密

String signature =SHA1(str);

JSONObject jsonObject = new JSONObject();

jsonObject.put("access_token", accessToken);

jsonObject.put("jsapi_ticket", jsapiTicket);

jsonObject.put("noncestr", noncestr);

jsonObject.put("timestamp", timestamp);

jsonObject.put("signature", signature);

return jsonObject;

}

/**

* 获取access_token

* @param appid

* @param secret

* @return

*/

public static String getAccessToken(String appid,String secret) {

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

String result = HttpUtil.createGet(url).execute().body();

JSONObject jsonObject = JSON.parseObject(result);

System.out.println(result);

return jsonObject.getString("access_token");

}

/**

* 获取ticket

* @param access_token

* @return

*/

public static String getTicket(String access_token) {

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

String result = HttpUtil.createGet(url).execute().body();

System.out.println(result);

JSONObject jsonObject = JSON.parseObject(result);

return jsonObject.getString("ticket");

}

public static String SHA1(String decript) {

try {

MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");

digest.update(decript.getBytes());

byte messageDigest[] = digest.digest();

// Create Hex String

StringBuffer hexString = new StringBuffer();

// 字节数组转换为 十六进制 数

for (int i = 0; i < messageDigest.length; i++) {

String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);

if (shaHex.length() < 2) {

hexString.append(0);

}

hexString.append(shaHex);

}

return hexString.toString();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

return "";

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值