国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Applet WeChat Développement WeChat Méthode de développement WeChat pour déterminer si le client actuel prend en charge l'interface js spécifiée

Méthode de développement WeChat pour déterminer si le client actuel prend en charge l'interface js spécifiée

Mar 26, 2017 pm 02:55 PM
Développement de WeChat

En raison de l'utilisation de WeChatjsapiL'interface a l'autorisation d'utilisation, nous devons donc déterminer si le client prend en charge l'interface js

Interface de base, déterminer si la version actuelle du client. prend en charge l'interface JS spécifiée

Tout d'abord, jsapi.jspCode

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>微信jsapi測(cè)試-V型知識(shí)庫(kù)</title>
    <meta name="viewport" content="width=320.1,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
   <script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js"> </script> 
</head>
  <body>
  <center><h3>歡迎來(lái)到微信jsapi測(cè)試界面-V型知識(shí)庫(kù)</h3></center>
  <br>
     <p>timestamp:${ timestamp}</p>  
     <p>nonceStr:${ nonceStr}</p>  
     <p>signature:${ signature}</p>  
     <p>appId:${ appId}</p>  
     <!--   
    <input type="button" value="upload" onclick="uploadImg();"/>  
    <input type="button" value="獲取當(dāng)前位置" onclick="getLocation();"/>  
     -->
     <p>基礎(chǔ)接口之判斷當(dāng)前客戶端是否支持指定的js接口</p>   
     <input type="button" value="checkJSAPI" id="checkJsApi">
  <br>
  <script type="text/javascript">
  wx.config({  
    debug: true, // 開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開(kāi),參數(shù)信息會(huì)通過(guò)log打出,僅在pc端時(shí)才會(huì)打印。  
    appId: &#39;${appId}&#39;, // 必填,公眾號(hào)的唯一標(biāo)識(shí)  
    timestamp: &#39;${ timestamp}&#39; , // 必填,生成簽名的時(shí)間戳  
    nonceStr: &#39;${ nonceStr}&#39;, // 必填,生成簽名的隨機(jī)串  
    signature: &#39;${ signature}&#39;,// 必填,簽名,  
    jsApiList: [&#39;chooseImage&#39;,&#39;getLocation&#39;,&#39;openLocation&#39;] // 必填,需要使用的JS接口列表,所有JS接口列表見(jiàn)附錄2  
});  
wx.ready(function(){  
    // 1 判斷當(dāng)前版本是否支持指定 JS 接口,支持批量判斷
  document.querySelector(&#39;#checkJsApi&#39;).onclick = function () {
    wx.checkJsApi({
      jsApiList: [
        &#39;getNetworkType&#39;,
        &#39;previewImage&#39;
      ],
      success: function (res) {
        alert(JSON.stringify(res));
      }
    });
  };
});  
 //初始化jsapi接口 狀態(tài)
wx.error(function (res) {
  alert("調(diào)用微信jsapi返回的狀態(tài):"+res.errMsg);
});
 </script>
  </body>
</html>
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 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 = "";
        //注意這里參數(shù)名必須全部小寫(xiě),且必須有序
        string1 = "jsapi_ticket=" + jsapi_ticket +
                  "&noncestr=" + nonce_str +
                  "&timestamp=" + 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);
    }
    public static void main(String[] args) {
        String jsapi_ticket =JsapiTicketUtil.getJSApiTicket();
        // 注意 URL 一定要?jiǎng)討B(tài)獲取,不能 hardcode
        String url = "http://www.vxzsk.com/xx/x.do";//url是你請(qǐng)求的一個(gè)action或者controller地址,并且方法直接跳轉(zhuǎn)到使用jsapi的jsp界面
        Map<String, String> ret = sign(jsapi_ticket, url);
        for (Map.Entry entry : ret.entrySet()) {
            System.out.println(entry.getKey() + ", " + entry.getValue());
        }
    };
}



>

< /tbody>Cliquer sur le bouton checkJSAPI déclenchera la méthode dans wx.ready(function(){} ) le corps de la méthode, et un état indiquant s'il est pris en charge appara?tra dans l'interface

Quatre paramètres nécessaires dans. la page Web, comme indiqué dans le tableau ci-dessous

參數(shù)名說(shuō)明
appId必填,公眾號(hào)的唯一標(biāo)識(shí)
timestamp必填,生成簽名的時(shí)間戳
nonceStr必填,生成簽名的隨機(jī)串
signature必填,簽名

Alors, d'où viennent ces quatre paramètres, veuillez consulter la deuxième étape ci-dessous

Deuxièmement, obtenez appId, timestamp, nonceStr, signature

Avant de passer à l'interface jsapi.jsp, nous devons obtenir les quatre paramètres ci-dessus pour réussir. L'appel de l'interface WeChat jsapi, c'est-à-dire que les quatre paramètres ci-dessus sont les informations d'identification pour appeler l'interface WeChat jsapi Appid est l'identifiant de l'application. en vous connectant à la plateforme publique WeChat. Obtenez l'algorithme de signature

Cliquez sur le lien dans le compte officiel pour accéder à l'interface jsapi.jsp. clique sur l'adresse du lien dans le compte officiel pour accéder à l'interface jsapi. .jsp, nous devons obtenir les trois paramètres ci-dessus dans wxJsAPIServlet, et stocker les paramètres dans l'objet request , puis l'interface jsp sort le code de la servlet comme suit?:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

System.out.println("wxJSAPI====================");

String jsapi_ticket =JsapiTicketUtil.getJSApiTicket();;

<a href="http://m.miracleart.cn/code/9794.html" target="_blank">Map</a><String,String> map = Sign.sign(jsapi_ticket, "http://www.vxzsk.com/weChat/wxJsAPIServlet");

String timestamp = map.get("timestamp");

String nonceStr = map.get("nonceStr");

String signature = map.get("signature");

String appId = "你自己的應(yīng)用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);

}

注意用戶點(diǎn)擊的地址必須和簽名算法中的地址保持一致,如果要帶參數(shù)那么參數(shù)也要帶上而且參數(shù)的順序不能改變,否則簽名算法得到的簽名 字符串和用戶請(qǐng)求的地址的簽名字符串不一致導(dǎo)致調(diào)用jsapi失敗。

當(dāng)然我在這里用的servlet跳轉(zhuǎn),讀者也可以把doGET方法中的代碼復(fù)制到spring的一個(gè)普通controller中或者struts中的一個(gè)普通的action方法中。

Sign.java代碼

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 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 = "";
        //注意這里參數(shù)名必須全部小寫(xiě),且必須有序
        string1 = "jsapi_ticket=" + jsapi_ticket +
                  "&noncestr=" + nonce_str +
                  "&timestamp=" + 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);
    }
    public static void main(String[] args) {
        String jsapi_ticket =JsapiTicketUtil.getJSApiTicket();
        // 注意 URL 一定要?jiǎng)討B(tài)獲取,不能 hardcode
        String url = "http://www.vxzsk.com/xx/x.do";//url是你請(qǐng)求的一個(gè)action或者controller地址,并且方法直接跳轉(zhuǎn)到使用jsapi的jsp界面
        Map<String, String> ret = sign(jsapi_ticket, url);
        for (Map.Entry entry : ret.entrySet()) {
            System.out.println(entry.getKey() + ", " + entry.getValue());
        }
    };
}


JsapiTicketUtil.java代碼

Troisièmement, les rendus sont les suivants

Méthode de développement WeChat pour déterminer si le client actuel prend en charge linterface js spécifiée

L'"interface de test WeChat jsapi" sur l'image est connectée à l'adresse du lien dans l'algorithme de signature

Méthode de développement WeChat pour déterminer si le client actuel prend en charge linterface js spécifiée

Méthode de développement WeChat pour déterminer si le client actuel prend en charge linterface js spécifiée

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Développement PHP WeChat?: Comment implémenter le cryptage et le décryptage des messages Développement PHP WeChat?: Comment implémenter le cryptage et le décryptage des messages May 13, 2023 am 11:40 AM

PHP est un langage de script open source largement utilisé dans le développement Web et la programmation c?té serveur, notamment dans le développement de WeChat. Aujourd'hui, de plus en plus d'entreprises et de développeurs commencent à utiliser PHP pour le développement de WeChat, car il est devenu un langage de développement vraiment facile à apprendre et à utiliser. Dans le développement de WeChat, le cryptage et le décryptage des messages sont une question très importante car ils impliquent la sécurité des données. Pour les messages sans méthodes de cryptage et de décryptage, les pirates peuvent facilement obtenir les données, ce qui constitue une menace pour les utilisateurs.

Développement PHP WeChat?: Comment implémenter la fonction de vote Développement PHP WeChat?: Comment implémenter la fonction de vote May 14, 2023 am 11:21 AM

Dans le développement des comptes publics WeChat, la fonction de vote est souvent utilisée. La fonction de vote est un excellent moyen pour les utilisateurs de participer rapidement aux interactions, et c'est également un outil important pour organiser des événements et recueillir des opinions. Cet article vous présentera comment utiliser PHP pour implémenter la fonction de vote WeChat. Obtenez l'autorisation du compte officiel WeChat. Tout d'abord, vous devez obtenir l'autorisation du compte officiel WeChat. Sur la plateforme publique WeChat, vous devez configurer l'adresse API du compte public WeChat, le compte officiel et le token correspondant au compte public. Dans le processus de développement en langage PHP, nous devons utiliser le PH officiellement fourni par WeChat

Utiliser PHP pour développer des outils de messagerie de masse WeChat Utiliser PHP pour développer des outils de messagerie de masse WeChat May 13, 2023 pm 05:00 PM

Avec la popularité de WeChat, de plus en plus d’entreprises commencent à l’utiliser comme outil marketing. La fonction de messagerie de groupe WeChat est l'un des moyens importants permettant aux entreprises de mener du marketing WeChat. Cependant, si vous comptez uniquement sur l’envoi manuel, il s’agit d’une tache extrêmement longue et laborieuse pour les spécialistes du marketing. Il est donc particulièrement important de développer un outil de messagerie de masse WeChat. Cet article présentera comment utiliser PHP pour développer des outils d'envoi de masse WeChat. 1. Travail de préparation Pour développer les outils d'envoi de masse WeChat, nous devons ma?triser les points techniques suivants : Connaissance de base du développement de la plateforme publique PHP WeChat Outils de développement : Sub

Développement PHP WeChat?: Comment implémenter la gestion des fenêtres de discussion du service client Développement PHP WeChat?: Comment implémenter la gestion des fenêtres de discussion du service client May 13, 2023 pm 05:51 PM

WeChat est actuellement l'une des plateformes sociales comptant la plus grande base d'utilisateurs au monde. Avec la popularité de l'Internet mobile, de plus en plus d'entreprises commencent à prendre conscience de l'importance du marketing WeChat. Lors du marketing WeChat, le service client est un élément crucial. Afin de mieux gérer la fenêtre de discussion du service client, nous pouvons utiliser le langage PHP pour le développement de WeChat. 1. Introduction au développement PHP WeChat PHP est un langage de script open source c?té serveur largement utilisé dans le domaine du développement Web. En combinaison avec l'interface de développement fournie par la plateforme publique WeChat, nous pouvons utiliser le langage PHP pour mener WeChat

Développement PHP WeChat?: Comment implémenter la gestion des balises utilisateur Développement PHP WeChat?: Comment implémenter la gestion des balises utilisateur May 13, 2023 pm 04:31 PM

Dans le développement des comptes publics WeChat, la gestion des balises utilisateur est une fonction très importante, qui permet aux développeurs de mieux comprendre et gérer leurs utilisateurs. Cet article explique comment utiliser PHP pour implémenter la fonction de gestion des balises utilisateur WeChat. 1. Obtenez l'openid de l'utilisateur WeChat Avant d'utiliser la fonction de gestion des balises utilisateur WeChat, nous devons d'abord obtenir l'openid de l'utilisateur. Dans le développement des comptes publics WeChat, il est courant d'obtenir l'openid via l'autorisation de l'utilisateur. Une fois l'autorisation de l'utilisateur terminée, nous pouvons obtenir l'utilisateur via le code suivant

Développement PHP WeChat?: Comment implémenter des enregistrements d'envoi de messages de groupe Développement PHP WeChat?: Comment implémenter des enregistrements d'envoi de messages de groupe May 13, 2023 pm 04:31 PM

Alors que WeChat devient un outil de communication de plus en plus important dans la vie des gens, sa fonction de messagerie agile est rapidement privilégiée par un grand nombre d'entreprises et de particuliers. Pour les entreprises, développer WeChat en une plate-forme marketing est devenu une tendance, et l'importance du développement de WeChat est progressivement devenue plus importante. Parmi eux, la fonction d'envoi de groupe est encore plus largement utilisée. Alors, en tant que programmeur PHP, comment implémenter des enregistrements d'envoi de messages de groupe ? Ce qui suit vous donnera une brève introduction. 1. Comprendre les connaissances en développement liées aux comptes publics WeChat. Avant de comprendre comment mettre en ?uvre des enregistrements d'envoi de messages de groupe, je

étapes pour mettre en ?uvre le développement du compte public WeChat à l'aide de PHP étapes pour mettre en ?uvre le développement du compte public WeChat à l'aide de PHP Jun 27, 2023 pm 12:26 PM

Comment utiliser PHP pour développer des comptes publics WeChat Les comptes publics WeChat sont devenus un canal important de promotion et d'interaction pour de nombreuses entreprises, et PHP, en tant que langage Web couramment utilisé, peut également être utilisé pour développer des comptes publics WeChat. Cet article présentera les étapes spécifiques pour utiliser PHP pour développer des comptes publics WeChat. étape 1 : Obtenez le compte développeur du compte officiel WeChat. Avant de commencer le développement du compte officiel WeChat, vous devez demander un compte développeur du compte officiel WeChat. Pour le processus d'inscription spécifique, veuillez vous référer au site officiel de la plateforme publique WeChat

Comment utiliser PHP pour le développement WeChat ? Comment utiliser PHP pour le développement WeChat ? May 21, 2023 am 08:37 AM

Avec le développement d’Internet et des appareils mobiles intelligents, WeChat est devenu un élément indispensable dans les domaines social et marketing. Dans cette ère de plus en plus numérique, la manière d'utiliser PHP pour le développement de WeChat est devenue la préoccupation de nombreux développeurs. Cet article présente principalement les points de connaissances pertinents sur la fa?on d'utiliser PHP pour le développement WeChat, ainsi que certains conseils et précautions. 1. Préparation de l'environnement de développement Avant de développer WeChat, vous devez d'abord préparer l'environnement de développement correspondant. Plus précisément, vous devez installer l'environnement d'exploitation PHP et la plateforme publique WeChat

See all articles

  • 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 {
        /***
         * 模擬get請(qǐng)求
         * @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;
          }
         public static String getAccessToken(){
                String appid="你公眾號(hào)基本設(shè)置里的應(yīng)用id";//應(yīng)用ID
                String appSecret="你公眾號(hào)基本設(shè)置里的應(yīng)用密鑰";//(應(yīng)用密鑰)
                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;
         }
        public static String getJSApiTicket(){ 
            //獲取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("調(diào)用微信jsapi的憑證票為:"+jsapiTicket);
        }
    }