国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS 調用微信掃一掃功能

2019-11-19 18:20:18
字體:
來源:轉載
供稿:網友

1.第一步:

設置調用微信js安全域名,就可以在該域名下調用微信的js接口

這里寫圖片描述

2.第二步:

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

這里寫圖片描述

3.第三步:

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

通過后臺獲取js權限簽名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 = "";     //注意這里參數名必須全部小寫,且必須有序     string1 = "jsapi_ticket=" + ticket +         "&noncestr=" + nonce_str +          "×tamp=" + 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;  }  /**    * 產生隨機串--由程序自己隨機產生    * @return    */   private static String create_nonce_str() {     return UUID.randomUUID().toString();   }   /**    * 由程序自己獲取當前時間    * @return    */   private static String create_timestamp() {     return Long.toString(System.currentTimeMillis() / 1000);   } } 

官方文檔示例:

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

用第一步拿到的access_token 采用http GET方式請求獲得jsapi_ticket(有效期7200秒,開發者必須在自己的服務全局緩存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 調用微信掃一掃功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪雅县| 沙雅县| 福建省| 晋宁县| 图木舒克市| 离岛区| 乌审旗| 保德县| 商城县| 互助| 乐山市| 出国| 崇明县| 朔州市| 共和县| 鄂尔多斯市| 福泉市| 衡山县| 遵义县| 舞钢市| 留坝县| 新绛县| 铜陵市| 巴南区| 高陵县| 榆林市| 犍为县| 林西县| 张北县| 新源县| 瑞金市| 南昌市| 吉木乃县| 鄂尔多斯市| 巴青县| 奉贤区| 五原县| 若羌县| 大兴区| 张家川| 肇源县|