步骤:

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. 红黑树 键值_查找(一)史上最简单清晰的红黑树讲解
  2. 面临找工作,要记住给自己的这些话。
  3. 编码与乱码(05)---GBK与UTF-8之间的转换--转载
  4. Base64编码算法
  5. JAVA15.JDK15新特性.4 TextBlock
  6. Docker学习文档之三 其他相关-安全性
  7. 仓库货位卡标识牌_仓库货架能解决传统仓储的哪些问题?
  8. Javascript、jQuery 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)(转)...
  9. codevs——1517 求一次函数解析式
  10. 【hdoj1272】小希的迷宫(并查集+坑点)
  11. 手机音频拼接软件_介绍三款无损分割视频软件
  12. java wsimport https,wsimport使用小结二
  13. 第三届同花顺算法大赛 | 2022 | AI算法
  14. 【LeetCode】279.完全平方数(四种方法,不怕不会!开拓思维)
  15. 教你App如何上架应用宝----腾讯开放开发平台
  16. Unity 角色慢动作
  17. 女生做软件测试工作怎么样?
  18. C#实现时间戳与标准时间的互转学习通http://www.bdgxy.com/
  19. 网站流量排名分析:SEO如何诊断排名不佳的页面!
  20. 真正好用的数据恢复软件EasyRecovery15

热门文章

  1. C#WinForm中的太空侵略者
  2. Fast R-CNN文章翻译笔记
  3. 【团队管理】如何做好技术团队年终复盘
  4. 鸿蒙系统没有录屏,这15+项高效又实用的功能更新,一定别错过!
  5. Qt Creator-设置代码的背景色和字体
  6. 概率论中PDF、PMF和CDF的区别与联系
  7. hadoop2.4.1配置时出现域名解析失败的解决方法
  8. MT6589下载工具,MT6589刷机工具
  9. 《火星救援》中的科学与不科学
  10. 普适计算Topic推荐-AMiner