// 微信JSSDK的AccessToken請求URL地址 ublic final static String weixin_jssdk_acceToken_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=公眾號appid&secret=眾號appsecret;
// 微信JSSDK的ticket請求URL地址
public final static String weixin_jssdk_ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
/** * 獲取微信JSSDK的access_token * @author Benson */ public static String getJSSDKAccessToken() { String returnString=""; String requestUrl = weixin_jssdk_acceToken_url; JSONObject jsonObject = httpRequest(requestUrl, "GET", null); //Http GET請求 // 如果請求成功 if (null != jsonObject) { try { returnString=jsonObject.getString("access_token"); } catch (JSONException e) { returnString = null; } } return returnString; } /** * 獲取微信JSSDK的ticket * @author Benson */ public static String getJSSDKTicket(String access_token) { String returnString=""; String requestUrl = weixin_jssdk_ticket_url.replace("ACCESS_TOKEN", access_token); JSONObject jsonObject = httpRequest(requestUrl, "GET", null); // 如果請求成功 if (null != jsonObject) { try { returnString=jsonObject.getString("ticket"); } catch (JSONException e) { returnString = null; } } return returnString; }
//獲取微信JSSDK簽名,用於調用微信掃一掃,返回對應數據
@Override public Map<String, String> getSignture(HttpServletRequest request,ModelAndView mav) { String js_accessToken = WeixinUtil.getJSSDKAccessToken(); //獲取微信jssdk---access_token String jsapi_ticket = WeixinUtil.getJSSDKTicket(js_accessToken); //獲取微信jssdk---ticket System.out.println("jsapi_ticket==="+jsapi_ticket); //獲取完整的URL地址 String fullPath=BasePath.getFullPath(request); Map<String, String> data = WxJSsign.sign(jsapi_ticket, fullPath); mav.addObject("timestamp", data.get("timestamp")); mav.addObject("nonceStr", data.get("nonceStr")); mav.addObject("signature", data.get("signature")); return data; }
//JSP頁面 放置3個隱藏的input 獲取時間戳,簽名等信息
<input type="hidden" id="timestamp" value="${timestamp}"/> <input type="hidden" id="nonceStr" value="${nonceStr}"/> <input type="hidden" id="signature" value="${signature}"/>
var timestamp = $("#timestamp").val();//時間戳 var nonceStr = $("#nonceStr").val();//隨機串 var signature = $("#signature").val();//簽名 wx.config({ debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。 appId: '公眾號ID', // 必填,公眾號的唯一標識 timestamp: timestamp, // 必填,生成簽名的時間戳 nonceStr: nonceStr, // 必填,生成簽名的隨機串 signature: signature,// 必填,簽名,見附錄1 jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2 }); //點擊掃描按鈕,掃描二維碼並返回結果 document.querySelector('#scanQRCode').onclick = function () { wx.scanQRCode({ needResult: 1, desc: 'scanQRCode desc', success: function (res) { //掃碼后獲取結果參數:htpp://xxx.com/c/?6123,截取到url中的防偽碼后,賦值給Input var url = res.resultStr; var tempArray = url.split('?'); var tempNum = tempArray[1]; $("#id_securityCode_input").val(tempNum); } }); };
//演示結果“