JS 调用微信扫一扫功能

前端之家收集整理的这篇文章主要介绍了JS 调用微信扫一扫功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.第一步:

设置调用微信js安全域名,就可以在该域名下调用微信的js接口

这里写图片描述

2.第二步:

将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[]

这里写图片描述

3.第三步:

参考官方文档

通过后台获取js权限签名jsapi_ticket【参考文档:

后台获取签名代码

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 ret = new HashMap(); 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):

4 第四步:

前台进入页面:`

resMap = new HashMap(); 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 调用微信扫一扫功能。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

猜你在找的JavaScript相关文章