亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS 調(diào)用微信掃一掃功能

 更新時間:2016年12月22日 09:46:56   作者:菜鳥-攻城-獅  
這篇文章主要介紹了JS 調(diào)用微信掃一掃功能,本文給大家介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友參考下吧

1.第一步:

設(shè)置調(diào)用微信js安全域名,就可以在該域名下調(diào)用微信的js接口

這里寫圖片描述

2.第二步:

將下面的js附在需要調(diào)用微信掃一掃的頁面上,前提是需要引入微信的js[]

這里寫圖片描述

3.第三步:

參考官方文檔 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=876521668&lang=zh_CN

通過后臺獲取js權(quán)限簽名jsapi_ticket【參考文檔:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95

后臺獲取簽名代碼:

package com.epoch.wap.common;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.epoch.common.utils.JsonUtil;
/** 
 * 官方給的使用js的驗證工具 
 * @author Administrator 
 * 
 */ 
public class JsSignUtil { 
  public static String accessToken = null; 
  public static Map<String, Object> sign(String url) {  
    String sendUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=**appid**&secret= **secret**";
    String result = getHttpResult(sendUrl);
    Object accessResult = JsonUtil.getValueFromJson(result, "access_token");
    String signUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+accessResult.toString()+"&type=jsapi";
    String resultSign = getHttpResult(signUrl);
    Object ticket = JsonUtil.getValueFromJson(resultSign, "ticket");
    Map<String, Object> ret = new HashMap<String, Object>(); 
    String nonce_str = create_nonce_str(); 
    String timestamp = create_timestamp(); 
    String string1; 
    String signature = ""; 
    //注意這里參數(shù)名必須全部小寫,且必須有序 
    string1 = "jsapi_ticket=" + ticket +
         "&noncestr=" + nonce_str + 
         "&timestamp=" + timestamp + 
         "&url=" + url; 
    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("nonceStr", nonce_str); 
    ret.put("timestamp", timestamp); 
    ret.put("signature", signature); 
    ret.put("jsapi_ticket", ticket); 
    ret.put("appId", "wx154f74654ae04891");
    return ret; 
  } 
  /** 
   * 隨機加密 
   * @param hash 
   * @return 
   */ 
  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 getHttpResult(String url) {
    String result = "";
    HttpGet httpRequest = new HttpGet(url);
    try {
      HttpResponse httpResponse = HttpClients.createDefault().execute(httpRequest);
      if (httpResponse.getStatusLine().getStatusCode() == 200) {
        result = EntityUtils.toString(httpResponse.getEntity());
      }
    } catch (ClientProtocolException e) {
      e.printStackTrace();
      result = e.getMessage().toString();
    } catch (IOException e) {
      e.printStackTrace();
      result = e.getMessage().toString();
    }
    return result;
  }
  /** 
   * 產(chǎn)生隨機串--由程序自己隨機產(chǎn)生 
   * @return 
   */ 
  private static String create_nonce_str() { 
    return UUID.randomUUID().toString(); 
  } 
  /** 
   * 由程序自己獲取當(dāng)前時間 
   * @return 
   */ 
  private static String create_timestamp() { 
    return Long.toString(System.currentTimeMillis() / 1000); 
  } 
} 

官方文檔示例:

參考以下文檔獲取access_token(有效期7200秒,開發(fā)者必須在自己的服務(wù)全局緩存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html

用第一步拿到的access_token 采用http GET方式請求獲得jsapi_ticket(有效期7200秒,開發(fā)者必須在自己的服務(wù)全局緩存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

4 第四步:

前臺進入頁面:`

@RequestMapping(value = "/tiaoma")
public String tiaoma( HttpServletRequest request,GoodsVO goods) throws Exception {
  String Url=request.getRequestURL()+"?"+request.getQueryString().toString();;
  Map<String, Object> resMap = new HashMap<String, Object>();
  resMap = JsSignUtil.sign(Url);
  request.setAttribute("nonceStr", resMap.get("nonceStr"));
  request.setAttribute("timestamp", resMap.get("timestamp"));
  request.setAttribute("signature", resMap.get("signature"));
  request.setAttribute("appId", resMap.get("appId"));
  request.setAttribute("url", resMap.get("url"));
  request.setAttribute("jsapi_ticket",                 resMap.get("jsapi_ticket"));
  return "index/tiaoma";
}`

以上所述是小編給大家介紹的JS 調(diào)用微信掃一掃功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 利用js編寫網(wǎng)頁進度條效果

    利用js編寫網(wǎng)頁進度條效果

    這篇文章主要為大家詳細(xì)介紹了利用js編寫網(wǎng)頁進度條效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • typescript 類型any不能分配給類型never

    typescript 類型any不能分配給類型never

    本文主要介紹了typescript 類型any不能分配給類型never,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • es6函數(shù)之嚴(yán)格模式用法實例分析

    es6函數(shù)之嚴(yán)格模式用法實例分析

    這篇文章主要介紹了es6函數(shù)之嚴(yán)格模式用法,結(jié)合實例形式分析了es6函數(shù)嚴(yán)格模式的定義、用法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • zTree實現(xiàn)節(jié)點修改的實時刷新功能

    zTree實現(xiàn)節(jié)點修改的實時刷新功能

    在實際應(yīng)用中會遇到動態(tài)操作樹各節(jié)點的需求,在增加樹節(jié)點后如何實時動態(tài)刷新樹就十分有必要了。這篇文章主要介紹了zTree實現(xiàn)節(jié)點修改的實時刷新功能,需要的朋友可以參考下
    2017-03-03
  • js判斷一個字符串是以某個字符串開頭的簡單實例

    js判斷一個字符串是以某個字符串開頭的簡單實例

    下面小編就為大家?guī)硪黄猨s判斷一個字符串是以某個字符串開頭的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • JavaScript計時器示例分析

    JavaScript計時器示例分析

    這篇文章主要介紹了JavaScript計時器示例分析,需要的朋友可以參考下
    2015-02-02
  • JavaScript的一些小技巧分享

    JavaScript的一些小技巧分享

    這篇文章主要介紹了JavaScript的一些小技巧分享,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2021-01-01
  • 瀏覽器解析js生成的html出現(xiàn)樣式問題的解決方法

    瀏覽器解析js生成的html出現(xiàn)樣式問題的解決方法

    接觸css, javascript有三年多了,今天遇到的問題最令我不可思議,很容易給人一種錯覺,那就是js拼成的html結(jié)構(gòu)肯定有問題
    2012-04-04
  • 第二次聊一聊JS require.js模塊化工具的基礎(chǔ)知識

    第二次聊一聊JS require.js模塊化工具的基礎(chǔ)知識

    第二次聊一聊JS require.js模塊化工具的基礎(chǔ)知識,本文為大家JS require.js模塊化工具的最基本知識點,感興趣的小伙伴們可以參考一下
    2016-04-04
  • js動態(tài)添加帶圓圈序號列表的實例代碼

    js動態(tài)添加帶圓圈序號列表的實例代碼

    這篇文章主要介紹了js動態(tài)添加帶圓圈序號列表的實例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02

最新評論