步骤:

1,获取Accesstoken(参考我之前的文章)

2,获取jsapiticket(参考我之前的文章)

3,获取签名

4JSSDK使用步骤

步骤一:绑定域名(JS接口安全域名),。否则会报invalid url domain

步骤二:引入JS文件http://res.wx.qq.com/open/js/jweixin-1.2.0.js

步骤三:通过config接口注入权限验证配置

步骤四:通过ready接口处理成功验证

步骤五:通过error接口处理失败验证

5.调用扫一扫接口

controller

packagecontroller;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;importjava.util.UUID;importjavax.servlet.http.HttpServletRequest;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importutil.AccessTokenUtil;/***@authorzhangyanan

* @todo 微信扫一扫

* @date 2018年7月23日*/@Controller

@RequestMapping("/scan")public classScanController {

Logger logger=LoggerFactory.getLogger(ScanController.class);/*** @todo 扫一扫准备操作

*@authorzhangyanan

* @date 2018年7月31日*/@RequestMapping("/preScan")publicString preScan(HttpServletRequest req){

Long timestamp= System.currentTimeMillis() / 1000;

String nonceStr=UUID.randomUUID().toString();//AccessTokenUtil.getJsApiTicket()是获取jsapi_ticket

String sign =getSign(AccessTokenUtil.getJsApiTicket(),nonceStr,timestamp,req.getRequestURL().toString());

req.setAttribute("timestamp", timestamp);

req.setAttribute("nonceStr", nonceStr);

req.setAttribute("sign", sign);return "scan";

}/*** @todo 获取签名 注意这里参数名必须全部小写,且必须有序

*@authorzhangyanan

* @date 2018年7月31日*/

privateString getSign(String jsapi_ticket, String noncestr, Long timestamp, String url){try{

String shaStr= "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url="+url;

logger.info(shaStr);

MessageDigest mDigest= MessageDigest.getInstance("SHA1");byte[] result =mDigest.digest(shaStr.getBytes());

StringBuffer signature= newStringBuffer();for (int i = 0; i < result.length; i++) {

signature.append(Integer.toString((result[i]& 0xff) + 0x100, 16).substring(1));

}returnsignature.toString();

}catch(NoSuchAlgorithmException e) {

logger.error("获取微信签名异常",e);return null;

}

}

}

View Code

scan.jsp

微信扫一扫

扫码

$(function(){

wxConfig($("#timestamp").val(),$("#noncestr").val(),$("#signature").val());

});functionwxConfig(_timestamp, _nonceStr, _signature) {//alert('获取数据:'+_timestamp+'\n'+_nonceStr+'\n'+_signature);

console.log('获取数据:' +_timestamp+ '\n' +_nonceStr+ '\n' +_signature);

wx.config({

debug :true,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

appId :"wx867cb83bc6a97559",//必填,公众号的唯一标识

timestamp : _timestamp,//必填,生成签名的时间戳

nonceStr : _nonceStr,//必填,生成签名的随机串

signature : _signature,//必填,签名,见附录1

jsApiList : ['scanQRCode']//必填,需要使用的JS接口列表,所有JS接口列表见附录2

});

wx.ready(function(){//config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

alert("config完成");

});

wx.error(function(res){//config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。

alert("config失败");

});

}functionscanCode() {

wx.scanQRCode({

needResult :1,

scanType : ["qrCode","barCode"],

success :function(res) {

console.log(res)

alert(JSON.stringify(res));varresult=res.resultStr;

},

fail :function(res) {

console.log(res)

alert(JSON.stringify(res));

}

});

}

View Code

参考文章:

官网api:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

文章1:https://blog.csdn.net/ricky73999/article/details/78588722

文章2:https://blog.csdn.net/hfhwfw/article/details/76038923

java微信扫一扫_java调用微信扫一扫相关推荐

  1. vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口

    一直都想搞一下微信公众号网页开发,公司忙没有时间自己也没开发过所以也没有头绪,前两天通过自己的摸索以及自行查找的资料,终于通过nodejs在本地成功的获取到了微信的access_token及签名,以及 ...

  2. java支付接口开发原理_java对接微信支付接口开发的过程是什么?

    java对接微信支付接口开发的过程是什么?以下是小编整理的java对接微信支付接口实现的方法和过程,有需要的朋友可以学习以下的java对接微信支付接口内容. java对接微信支付接口开发的过程是什么? ...

  3. 微信小程序快递java_java调用微信小程序统一下单接口

    java调用微信小程序统一下单接口 今天项目中对接微信支付这一块,记录一下 这是对接微信支付的开发文档地址 微信支付流程 流程分析: 我们可以看到,前端人员只用给我们一个code,我们通过code去获 ...

  4. php 调用微信支付的时间戳,前端调用微信支付接口

    支付按钮的点击事件$(´.Save_Patient_Msg´).click(function(){ $(´.Save_Patient_Msg´).off(´click´); var hrdfId = ...

  5. python连接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  6. python链接微信接口开发教程_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

  7. 微信小程序安卓机型调用微信支付后取消付款会重新调用一次页面的onShow方法

    onShow里面写了携带优惠券ID查询的接口,此时该优惠券已经下过单了,故会报错 安卓机型会有这个问题,苹果机型暂未发现 我这边的解决办法是在调用微信支付前定义一个全局Flag,在页面onShow里判 ...

  8. python微信接口发送消息_调用微信API发送微信消息python脚本

    前阵子部署zabbix监控系统,做了个微信报警,下面分享下微信调API发消息的脚本.要用微信发消息,自己首先要有微信企业号,如果没有申请也容易 准备工作: 1.申请微信企业号 2.在企业号后台创建应用 ...

  9. java调用微信红包接口_java调用微信现金红包接口的心得与体会

    这几天看了下以前写的有关微信支付的博客,看的人仍是挺多的,看了下留言不知道是由于博客写的不够细仍是什么状况,大多都找我要源码,我以为吧程序员仍是须要有这么一个思考的过程,所以没直接给源码,俗话说&qu ...

  10. java 红包接口开发_java调用微信现金红包接口的心得与体会总结

    这几天看了下之前写的有关微信支付的博客,看的人还是挺多的,看了下留言不知道是因为博客写的不够细还是什么情况,大多都找我要源码,我觉得吧程序员还是需要有这么一个思考的过程,因此没直接给源码,俗话说&qu ...

最新文章

  1. UILabel设置行间距之后的自适应高度
  2. 网站被降权后该进行检查哪些问题?
  3. 【数据处理】python数据清洗通用手法:缺失值处理
  4. C语言 条件编译(if )
  5. java中ArrayList用法详解,基本用法(含增删改查)
  6. JavaScript中的 apply 与 call 方法
  7. html中间大两边小轮播代码,vue使用swiper实现中间大两边小的轮播图效果
  8. python爬虫--自学笔记
  9. wh计算公式_“笔记本”电池里的mAh和Wh有啥区别
  10. 【EXLIBRIS】纸版书目整理 -- 小书架 下/床头柜/书箱 【100 种】【108 册】
  11. 奇安信代码安全实验室帮助微软修复两个 “重要” 漏洞,获官方致谢
  12. php解密 hr+c_PHP每15分钟自动更新网站地图(减少服务器消耗)
  13. 面试官:亿级流量架构分布式事务如何实现?我懵了。。
  14. iptables -F 后断开连接
  15. httd及其ab测试工具
  16. 使用bootstrap图片上传插件(fileInput)springmvc实现图片上传全流程
  17. 会计计算机功能,会计软件具有什么功能
  18. java获得程序运行时间_java中获得程序运行时间的方法(转)
  19. 【排队助手】投屏模式-使用指南
  20. 使用jquery控制只能输入数字,并且关闭输入法

热门文章

  1. button触发ajax只进入error,不进入sucess
  2. shiny教程一 -- shiny入门
  3. 施密特正交化过程编程c语言,利用C程序编写格拉姆-施密特正交化的过程.docx
  4. supermap javascript 点聚合
  5. VC 蓝牙设备 编程
  6. 深入理解Java虚拟机——Parallel Scavenge收集器
  7. Off the coast 将图片放入Markdown!
  8. 考题篇(5.2) 06. IPsec ❀ FortiGate ❀ Fortinet 网络安全专家 NSE 4
  9. Mock.js数据模拟,rap2、postman可视化接口平台,Vue框架的接口链接应用
  10. python+gdal+numpy计算ndvi