Java微信签名,前端微信扫一扫集成示例
温馨提示:
本文最后更新于 2022年08月29日,已超过 600 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
Java后端微信签名
package com.feiprc.utils.wechat;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import com.feiprc.utils.UUIDUtil;
/**
* @author 作者 92cxy.cn
* @describe 类说明
*/
public class JsSignUtil {
/**
* 签名工具
*
* @param url
* @return
*/
public static Map sign(String url) {
Map ret = new HashMap();
if (TokenManager.getAccessToken().equals("")
|| TokenManager.isTokenExpired()) {
try {
TokenManager.init();
TicketManager.init();
} catch (Exception e) {
e.printStackTrace();
}
}
String jsApiTicket = TicketManager.getApiTicket();
String nonceStr = create_nonce_str();
String timeStamp = create_timestamp();
String signature = "";
// 注意这里参数名必须全部小写,且必须有序
String str = "jsapi_ticket=" + jsApiTicket + "&noncestr=" + nonceStr
+ "×tamp=" + timeStamp + "&url=" + url;
Logger.getLogger(TokenManager.class.getName()).info(str);
try {
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(str.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", jsApiTicket);
ret.put("nonceStr", nonceStr);
ret.put("timestamp", timeStamp);
ret.put("signature", signature);
ret.put("appId", AppString.APPID);
Logger.getLogger(TokenManager.class.getName()).info(ret.toString());
return ret;
}
/**
* 随机加密
*
* @param hash
* @return
*/
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;
}
/**
* 产生随机串--由程序自己随机产生
*
* @return
*/
private static String create_nonce_str() {
return UUIDUtil.getUUID();
}
/**
* 由程序自己获取当前时间
*
* @return
*/
private static String create_timestamp() {
return Long.toString(System.currentTimeMillis() / 1000);
}
}
前端集成示例
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/wechathtml/taglib.jsp"%>
扫描二维码
正文到此结束
- 本文标签: 微信开发签名 后端 微信扫一扫
- 本文链接: http://www.92cxy.cn/article/28
- 版权声明: 本文由王小东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
热门推荐
相关文章
该篇文章的评论功能已被站长关闭