java实现微信公众号判断用户是否关注

 

/**
	 * 判断用户是否关注
	 * @param openid
	 * @return
	 */
	private boolean isSubscribe(String openId, String appId, String secret) {
		log.info("isSubscribe --->");
		String ret = HttpUtils.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appId+"&secret="+secret, null, null);
		log.info("获取订阅的access_token:" + ret);
		JSONObject jsonObject = JSONObject.parseObject(ret);
		String access_token = jsonObject.getString("access_token");
		String userJsonStr = HttpUtils.get("https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + access_token + "&openid=" + openId + "&lang=zh_CN", null, null);
		log.info("获取是否订阅的wxUser:" + userJsonStr);
		JSONObject userJson = JSONObject.parseObject(userJsonStr);
		Integer subscribe = userJson.getInteger("subscribe");
		if(SUBSCRIBE.equals(subscribe.toString())){
			return true;
		}
		return false;
	}

 

好的,以下是一个使用 Java 实现微信公众号加签的示例代码: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; public class WxSignUtil { // 与开发者中心页面上的配置信息一致 private static final String token = "your_token"; /** * 验证签名 * * @param signature 微信加密签名 * @param timestamp 时间戳 * @param nonce 随机数 * @return */ public static boolean checkSignature(String signature, String timestamp, String nonce) { // 1. 将 token、timestamp、nonce 三个参数进行字典序排序 String[] arr = new String[]{token, timestamp, nonce}; Arrays.sort(arr); // 2. 将三个参数字符串拼接成一个字符串 String str = arr[0] + arr[1] + arr[2]; // 3. 对拼接后的字符串进行 SHA1 加密 String sha1Str = sha1(str); // 4. 将加密后的字符串与 signature 进行比较,判断消息是否来自于微信服务器 return sha1Str.equals(signature); } /** * 对字符串进行 SHA1 加密 * * @param str * @return */ private static String sha1(String str) { try { MessageDigest digest = MessageDigest.getInstance("SHA-1"); digest.update(str.getBytes()); byte[] messageDigest = digest.digest(); StringBuilder sb = new StringBuilder(); for (byte b : messageDigest) { sb.append(String.format("%02x", b)); } return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; } } ``` 在这个示例中,我们定义了一个 `WxSignUtil` 工具类,其中包含了一个 `checkSignature()` 方法,用于验证微信服务器发送的消息的签名是否正确。在该方法中,我们首先将 `token`、`timestamp`、`nonce` 三个参数按照字典序排序,然后拼接成一个字符串,再对该字符串进行 SHA1 加密,并将加密后的结果与 `signature` 进行比较,以判断消息是否来自于微信服务器。如果验证通过,则返回 `true`,否则返回 `false`。 需要注意的是,我们在 `WxSignUtil` 类中定义的 `token` 常量需要设置成自己在微信公众平台上设置的 Token 值。同时,我们需要将 `signature`、`timestamp`、`nonce` 等参数传递给 `checkSignature()` 方法进行验证。具体的调用方法可以参考微信公众平台的开发文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁漂打工仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值