search
HomeWeChat AppletWeChat DevelopmentDetailed explanation of how to obtain jsapi_ticket in WeChat jsapi development

We looked at the WeChat jsapi development documentation and found that if you want to use WeChat jsapi, you not only need to bind a registered domain name, but also need a lot of interface injection permission verification. I find it a bit troublesome, but there is nothing I can do about it. Who made WeChat so popular?

Inject permission verification configuration through the config interface

All pages that need to use JS-SDK must first inject configuration information, otherwise it will not be called (the same url only needs to be called once, for changes in the url The SPA web app can be called every time the URL changes. Currently, the Android WeChat client does not support the new H5 feature of pushState, so using pushState to implement the web app page will cause the signature to fail. This problem will be fixed in Android 6.2 ).

The above is the description of the WeChat official document. I was originally going to happily access WeChat development, but now I am dumbfounded, especially the beginners who are completely confused. Next, let’s take a look at the code given by the WeChat official document. Example:

##timestamp, nonceStr, signature, Nima this What the hell are the three parameters? The appid can still be known. These three parameters are okay. Let’s look at Appendix 1. Let’s look at Appendix 1. Please see the Appendix 1 description of the WeChat official document below
#wx.config({

debug : true, // Turn on the debugging mode. The return values ​​of all api calls will be alerted on the client side. If you want to view the incoming parameters, you can open it on the PC side. The parameter information will be printed out through the log, only on the PC side. Will print.

appId: '', // Required, the unique identifier of the official account

timestamp: , // Required, the timestamp of the generated signature

nonceStr : '', // Required, generate a random string of signature

signature: '', // Required, signature, see Appendix 1

jsApiList: [] // Required, List of JS interfaces that need to be used, see Appendix 2 for the list of all JS interfaces

});

jsapi_ticket

Before generating a signature, you must first understand jsapi_ticket. jsapi_ticket is a temporary ticket used by public accounts to call the WeChat JS interface. Under normal circumstances, the validity period of jsapi_ticket is 7200 seconds and is obtained through access_token. Since the number of api calls to obtain jsapi_ticket is very limited, frequent refreshes of jsapi_ticket will result in restricted api calls and affect their own business. Developers must cache jsapi_ticket globally in their own services. .

1. Refer to the following document to obtain access_token (valid for 7200 seconds, developers must cache access_token globally in their own services): ../15/54ce45d8d30b6bf6758f68d2e95bc627.html

2. Use the first step The obtained access_token uses the http GET method to request jsapi_ticket (valid for 7200 seconds, developers must cache jsapi_ticket globally in their own services): https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token= ACCESS_TOKEN&type=jsapi

Are you confused when you see this? What the hell, you need to know timestamp, nonceStr, signature in advance, and you must also get jsapi_ticket. Forget it, since the official document says to get jsapi_ticket, then get it here. I only show how java gets jsapi_ticket. code show as below:

package com.test.util;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import net.sf.json.JSONObject;

import com.test.weixin.TestAcessToken;

public class JsapiTicketUtil {

    /***

* Simulate get request

* @param url

* @param charset

* @param timeout

* @return

*/

     public static String sendGet(String url, String charset, int timeout)

      {

        String result = "";

        try

        {

          URL u = new URL(url);

          try

          {

            URLConnection conn = u.openConnection();

            conn.connect();

            conn.setConnectTimeout(timeout);

            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));

            String line="";

            while ((line = in.readLine()) != null)

            {

              result = result + line;

            }

            in.close();

          } catch (IOException e) {

            return result;

          }

        }

        catch (MalformedURLException e)

        {

          return result;

        }

        return result;

      }

     /***

*Get acess_token

*/

     public static String getAccessToken(){

            String appid="你公众号基本设置里的应用id";//应用ID

            String appSecret="你公众号基本设置里的应用密钥";//(应用密钥)

            String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";

            String backData=TestAcessToken.sendGet(url, "utf-8", 10000);

            String accessToken = (String) JSONObject.fromObject(backData).get("access_token");  

            return accessToken;

     }

    /***

      * 获取jsapiTicket

      * 来源 www.vxzsk.com

* @return

*/

public static String getJSApiTicket(){

//Get token

String acess_token= JsapiTicketUtil.getAccessToken( );

String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+acess_token+"&type=jsapi";

String backData=TestAcessToken.sendGet(urlStr, "utf-8", 10000);

String ticket = (String) JSONObject.fromObject(backData).get("ticket");

return ticket;

}

public static void main(String[] args) {

String jsapiTicket = JsapiTicketUtil.getJSApiTicket();

System.out .println("The ticket for calling WeChat jsapi is: "+jsapiTicket);

}

}

The above code can be directly copied to Eclipse or myeclipse and only the main method is required, but there is a trick here?

This code from lines 58 to 65 is the method to obtain access_token, because this parameter is required to obtain the ticket, but there are two parameters that need to be filled in by the reader, one is appid, the other is appSecret, the code The comments have already made it very clear, so I won’t repeat them here.

The above is the detailed content of Detailed explanation of how to obtain jsapi_ticket in WeChat jsapi development. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),