WeChat의 공식 문서와 사례 코드에 따르면 위의 세 가지 매개 변수가 필요하며 위의 세 가지 매개 변수는 동적으로 획득됩니다. 그런 다음 WeChat의 공식 문서에 따라 획득을 달성하기 위해 Java 코드를 사용합니다. 타임스탬프, nonceStr 및 서명의 세 가지 매개변수는 인쇄 및 출력을 위한 주요 방법일 뿐입니다. 이 강의에서는 이 세 가지 매개변수를 웹 페이지에 전달하고 WeChat jsapi를 성공적으로 호출하는 것을 구현하지 않습니다. .
사인 코드:
package com.test.util; import java.util.UUID; import java.util.Map; import java.util.HashMap; import java.util.Formatter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.io.UnsupportedEncodingException; public class Sign { public static void main(String[] args) { String jsapi_ticket =JsapiTicketUtil.getJSApiTicket();; // 注意 URL 一定要动态获取,不能 hardcode String url = "http://www.vxzsk.com/xx/x.do";//url是你请求的一个action或者controller地址,并且方法直接跳转到使用jsapi的jsp界面 Map<String, String> ret = sign(jsapi_ticket, url); for (Map.Entry entry : ret.entrySet()) { System.out.println(entry.getKey() + ", " + entry.getValue()); } }; 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 string1; String signature = ""; //注意这里参数名必须全部小写,且必须有序 string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "×tamp=" + timestamp + "&url=" + url; System.out.println(string1); try { MessageDigest crypt = MessageDigest.getInstance("SHA-1"); crypt.reset(); crypt.update(string1.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; } 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; } private static String create_nonce_str() { return UUID.randomUUID().toString(); } private static String create_timestamp() { return Long.toString(System.currentTimeMillis() / 1000); } } |
16th A 기본 메소드의 변수 url은 요청한 액션 또는 컨트롤러 주소이며 메소드는 jsapi
를 사용하여 jsp 인터페이스로 직접 점프하여 jsapi_ticket 도구 클래스를 얻습니다. 코드:
|
위 내용은 WeChat 타임스탬프, nonceStr, 서명 방법을 얻기 위한 WeChat 개발용 Java의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!