偶然接触到了公众号开发。说需要调起微信扫一扫。便查看了公众号开发文档

看完文档后,发现js是相对简单的。唯一的难点是在java后台编写的秘钥生成代码。

也就是说。首先需要获取access_token,然后在根据access_token生成签名并返回。

以下是代码

    private static String GAPPID = "XXXXXXXXX";private static String GSECRET = "XXXXXXXXXXXXXX";private static String GRANTTYPE2 = "client_credential";// 获取 access-token 的@RequestMapping("/api/wx/getWxJsKey")@ResponseBodypublic String getWxJsKey(HttpServletRequest request) {HttpSession session = request.getSession();Map<String, Object> map = new HashMap<>();map.put("code", "1");map.put("errorMsg", "请求成功");String access_token = null;String jsapi_ticket = null;String timestamp = Long.toString(System.currentTimeMillis() / 1000);String noncestr = UUID.randomUUID().toString();System.out.println("timestamp:" + timestamp);System.out.println("noncestr:" + noncestr);// 获取 access_token{Object val = session.getAttribute("wx_access_token");if (val == null) {String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type="+ GRANTTYPE2 + "&appid=" + GAPPID + "&secret="+ GSECRET;JSONObject json = CommonUtil.httpsRequest(requestUrl, "GET",null);logger.info(json);access_token = json.getString("access_token");session.setAttribute("wx_access_token", access_token);session.setMaxInactiveInterval(7200);} else {access_token = val.toString();}}// 获取 ticket{Object val = session.getAttribute("jsapi_ticket");if (val == null) {String requestUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+ access_token + "&type=jsapi";JSONObject json = CommonUtil.httpsRequest(requestUrl, "GET",null);jsapi_ticket = json.getString("ticket");session.setAttribute("jsapi_ticket", jsapi_ticket);session.setMaxInactiveInterval(7200);} else {jsapi_ticket = val.toString();}System.out.println("jsapi_ticket:" + jsapi_ticket);}// 签名String jsKey = new StringBuffer()//.append("jsapi_ticket=").append(jsapi_ticket)//.append("&noncestr=").append(noncestr)//.append("&timestamp=").append(timestamp).append("&url=")//.append("https://hktest.ricepon.com/member-web/preOrderMeal/html/pre_order_meal.html")//.toString();// 加密 生成签名jsKey = DigestUtils.shaHex(jsKey);// 返回值Map<String, Object> param = new HashMap<>();param.put("jsKey", jsKey);param.put("timestamp", timestamp);param.put("noncestr", noncestr);param.put("appId", GAPPID);map.put("data", param);return JSONObject.fromObject(map).toString();}

然后在js中用ajax请求接口,处理即可。

var jsKey, noncestr, timestamp, appId, ajaxHeader = {};$(document).ready(function () {//组装头部信息ajaxHeader = {Accept: "application/json; charset=utf-8",}// 获取 秘钥$.ajax({url: "../api/wx/getWxJsKey",type: "POST",headers: ajaxHeader,success: function (res) {if (res.code == 1) {var data = res.data;jsKey = data.jsKey; // 签名noncestr = data.noncestr; // 随机字符串timestamp = data.timestamp; // 时间戳appId = data.appId; // 小程序apIdwx.config({debug: false,appId: appId,timestamp: timestamp,nonceStr: noncestr,signature: jsKey,jsApiList: ['scanQRCode']})} else {layer.msg(res.errorMsg);}},error: function (res) {layer.msg('error');layer.msg(res);}})
});wx.error(function (res) {layer.msg(res.errorMsg);
});wx.ready(function () {wx.checkJsApi({jsApiList: ['scanQRCode'],success: function (res) {}});
});//调起扫码
function openScanDialog() {wx.scanQRCode({needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有success: function (res) {//自行处理}});
}

就是这样!

微信公众号调起扫码功能相关推荐

  1. 微信公众号拉取扫码功能

    点击扫码按钮拉取微信扫码 // 扫码添加设备goAddEquipment() {const wx = window.wxlet _this = this// wx.ready(function() { ...

  2. JS_微信公众号开发调用扫码支付功能

    需要在公众号里面切入扫码功能 前端代码: <!DOCTYPE html> <html> <head lang="en"><meta cha ...

  3. 微信小程序调起扫码功能

    场景:在微信小程序中使用扫码功能,对扫描的物品进行识别处理 1.先随便定义一个点击调起扫码的元素 <view bindtap="tapScan">扫码</view ...

  4. 使用vue+weixin-js-sdk实现公众号页面的扫码功能

    vue+barcode 实现app端的扫码功能 同样的,详细的api文档描述可以看微信官方文档,这里就简单列一下用到的点. 1.引入weixin-js-sdk 依赖 vue全局使用 npm insta ...

  5. 微信公众号调起扫一扫扫码

    开发文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 引入js文件 方法1:引入 <scri ...

  6. 关于微信公众号开发中扫码关注和关注之后继续扫码的不同点

    2019独角兽企业重金招聘Python工程师标准>>> 开发微信商城,当遇到需要绑定上下级关系的时候,会通过扫码的方式关注公众号,但是如果不想做这个人的下级,后台添加解绑功能,继续扫 ...

  7. 微信公众号开发之扫码支付

    此项目已开源欢迎Start.PR.发起Issues一起讨论交流共同进步 https://github.com/Javen205/IJPay http://git.oschina.net/javen20 ...

  8. 以后的blog将转移到微信公众号,请扫码关注谢谢!

  9. 微信扫码登录,微信公众号生成二维码,关注登录nodejs+vue

    微信公众号生成二维码,关注后扫码登录 技术栈为nodejs+vue 有不懂的可以加我微信yizheng369 1.效果 初始: 关注后: 2.源码 此项目为前后端分离项目,前后端代码都在这个仓库里, ...

最新文章

  1. c语言交错级数前10项和,怎么求一个交错级数的和,谢谢
  2. 7、kubernetes 核心技术-Controller 控制器
  3. Node应用的Systemd启动(转)
  4. MATLAB 图像函数(第三章) 图像基本处理
  5. LeetCode之存在重复元素
  6. xulrunner下载连接
  7. 八款Android开源游戏引擎
  8. 李氏第二法分析稳定性matlab,9-4李雅普诺夫稳定性分析2010.ppt
  9. python正版软件多少钱_多款正版软件 + 付费教程迎来史低价,少数派「双十一」活动全面开始...
  10. Makefile:94: recipe for target 'install-***-recurse' failed 解决方法
  11. ALFA | 临床基因组课程 人群频率数据库 新成员
  12. 如何正确重新启动计算机,电脑突然重启,详细教您电脑忽然重启如何解决
  13. python自回归_向量自回归模型(VAR)到底厉害在哪里?
  14. 英雄连1V1战胜专家电脑!
  15. VR系列——Oculus最佳实践:七、虚拟幻境头晕(下)
  16. Unsupervised Domain Adaptation with Variational Approximation for Cardiac Segmentation
  17. 国外lead教程---EMU之SSN用不用
  18. docker 安装mysql、canal、redis实现redis和mysql缓存一致性
  19. SRE(运维)最重要的是什么,看这一篇就够了
  20. Grafana中文汉化

热门文章

  1. 人机猜拳游戏(修改)
  2. PEP 8 – Style Guide for Python Code
  3. 夜遇歹人来不及报警怎么办?让求救app帮助你
  4. CDS — 数据管理分析平台
  5. linux 字符串数组初始化,Linux命令行 – 数组
  6. 微软人工智能-深度学习框架和工具.md
  7. 2021微信大数据挑战赛-初赛-NN思路分享
  8. 【Linux】复制文件到当前目录 复制文件并重命名到当前目录
  9. 拓臻生物任命Senthil Sundaram为首席执行官、Mark Vignola, Ph.D.为首席财务官、Erin Quirk, M.D.为总裁
  10. Windows游戏开发学习一 —— WinMain函数