Maison > Article > Applet WeChat > Développement Java pour WeChat pour obtenir l'horodatage WeChat, nonceStr, méthode de signature
Selon les documents officiels et le code du cas de WeChat, les trois paramètres ci-dessus sont nécessaires, et les trois paramètres ci-dessus sont obtenus dynamiquement. Ensuite, nous utilisons le code Java pour réaliser l'acquisition selon les documents officiels de WeChat. trois paramètres d'horodatage, nonceStr et de signature ne sont ici qu'une méthode principale pour imprimer et sortir. Cette leçon n'implémente pas la transmission de ces trois paramètres à la page Web et l'appel réussi du jsapi WeChat. La leçon suivante se concentrera sur l'explication. .
Code de signalisation :
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); } } |
16e A L'URL de la variable dans la méthode principale est une adresse d'action ou de contrôleur que vous avez demandée, et la méthode passe directement à l'interface jsp en utilisant jsapi
pour obtenir la classe de l'outil jsapi_ticket code :
|
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!