问题描述
- 微信公众平台Java调试JS-SDK接口, 一直提示这个invalid signature
-
1.利用接口签名校验工具,签名是一致的。
2.后台java签名代码
public static Map<String, String> sign(String jsapi_ticket, String url) { Map<String, String> ret = new HashMap<String, String>(); String nonce_str = create_nonce_str(); String timestamp = create_timestamp(); String str; String signature = ""; //注意这里参数名必须全部小写,且必须有序 str = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "×tamp=" + timestamp + "&url=" + url; 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", jsapi_ticket); ret.put("nonceStr", nonce_str); ret.put("timestamp", timestamp); ret.put("signature", signature); return ret; }
解决方案
问题已解决!错误的原因就是获取url的时候,自己加了**端口,端口**是不需要的。这样获取url就好了。
String strBackUrl = "http://" + request.getServerName() //服务器地址
+ request.getContextPath() //项目名称
+ request.getServletPath(); //参数
时间: 2025-01-02 06:01:01