Parameter name
http://www.php.cn/wiki/835.html" target="_blank">width="346" valign= "top" style="word-break:break-all"> | Description |
appId | App ID Log in to the WeChat public account management platform CanQuery |
timestamp | Required, generate a signed timestamp |
nonceStr | Required, random string to generate signature |
signature | Required, signature, see Appendix 1 |
The parameters in the above table have been explained very clearly in the previous chapter. The reason why we make a table is because if we want to successfully access WeChatjsapiThese four parameters are credentials, which is equivalent to a door that must have four keys to open. One of them is indispensable. .
The following case uses the jump page made by java's servlet. SpringMVC is not used. You can change the requested path to the controller path. .
WxJsAPIServlet code:
package com.test; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.test.util.JsapiTicketUtil; import com.test.util.Sign; public class WxJsAPIServlet extends HttpServlet { /** * Constructor of the object. */ public WxJsAPIServlet() { super(); } /** * Destruction of the servlet. */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("wxJSAPI===================="); String jsapi_ticket =JsapiTicketUtil.getJSApiTicket();; Map String timestamp = map.get("timestamp"); String nonceStr = map.get("nonceStr"); String signature = map.get("signature"); String appId = "应用Id"; request.setAttribute("appId", appId); request.setAttribute("timestamp", timestamp); request.setAttribute("signature",signature); request.setAttribute("nonceStr", nonceStr); request.getRequestDispatcher("jsapi/jsapi.jsp").forward(request, response); } /** * The doPost method of the servlet. * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred * / public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } /** * Initialization of the servlet. * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } } |
Line 44 is the tool class that generates jsapi_ticket. The code for the tool class is posted below.
Line 45 The sign method of the Sign class encapsulates the last three parameters in the table into the Map collection. The parameter is the requested servlet address and jumps to the jsp interface that calls WeChat jsapi.
Line 49 replace appId with your own application id, if you don’t know the application id You can log in to the WeChat public platform management center to check.
Servlet corresponding web.xmlCode
## |
package com.test.util; /*** * V-shaped knowledge base www.vxzsk.com */ 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 Map Map 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; ##} _nonce_str () () { Return uuid.randomuuid (). Tostring ();##} ##Qate Static Stration Create_timestAmp () { Retostring (System.currentTimeMillis() / 1000); } public static voidmain (String[] args) {String jsapi_ticket =JsapiTicketUtil .getJSApiTicket(); ’’’’’ ’s . /url is anaction or controller address you requested, and the method jumps directly to the jsp interface using jsapi Mapfor (Map.Entry entry : ret.entrySet()) { System.out.println(entry.getKey() + ", " + entry.getValue());
There is a method to obtain access_token in the above code, please change your own parameters jsapi.jsp code
|
The above is the detailed content of Detailed explanation of the preliminary access method of WeChat jsapi and java developed by WeChat. For more information, please follow other related articles on the PHP Chinese website!