18910140161

JAVA实现调用微信js-sdk扫一扫

顺晟科技

2021-06-16 10:28:14

423

喜欢的朋友可以关注下。

已经很久没有给大家分享一片技术文章了,今天抽了点时间来,给大家说一说如何调用微信提供的扫一扫接口。

前提:需要申请一个公众号:申请公众号需要的资料我就不说了,去申请微信会提示需要哪些。

准备appid(公众号的id)

AppSecret(公众号的密钥)

正文:首先,我们先来简单了解一下流程,详细的微信文档有说明。

获取令牌根据代币获取车票根据票签名反会参数给前端前端调起扫一扫接口

下面直接上代码

1.获取代币

/**

*描述:获取微信公众号令牌溴

*

* @作者数据平滑网络(雷达)

* @日期2018年9月21日上午9:53:26

* @param appid

* @param秘密

* @返回

* @ 1.0版

*/

公共静态字符串getAccessToken(字符串appid,字符串机密){

字符串标记=' ';

字符串token _ URL='https://api.weixin.qq.com/cgi-bin/token?grant _ type=client _ credential appid=' appid

秘密='秘密

JSON对象结果=paycommonutil。httprequest(token _ URL,' POST ');

if (result.get('access_token ')!=null) {

token=result.get('access_token ').toString();

}

返回令牌;

}

2.获取票

/**

*描述:获取微信ticketBR

*

* @作者数据平滑网络(雷达)

* @日期2018年9月21日上午9:54:03

* @param标记

* @返回

* @ 1.0版

*/

公共静态字符串getTicket(字符串标记){

if(').equalsIgnoreCase(令牌)|| null==令牌){

返回"";

}

字符串ticket _ URL='https://api.weixin.qq.com/cgi-bin/ticket/getticket?access _ token=' token ' type=jsapi ';

JSON对象结果=paycommonutil。httprequest(ticket _ URL,' POST ');

返回result.get(票证).toString();

}

3.签名

公共静态字符串

引发NoSuchAlgorithmException异常异常{

string ShaSTr=' jsapi _ ticket=' jsapi _ ticket ' non estr=' non estr 'tamp=' timestamp ' URL='

全球资源定位器(Uniform Resource Locator)

MessageDigest mDigest=MessageDigest。getinstance(' SHA1 ');

byte[]result=mdigest。文摘(Shastr。GetBytes());

StringBuffer签名=new StringBuffer();

for(int I=0;长度;i ) {

签名。追加(整数。ToString((结果[I]0x ff)0x 100,16).substring(1));

}

返回签名。tostring();

}

4 .行动中调用

/**

*描述:微信扫一扫接口溴

*

* @作者ran.chunlin

* @日期2017年四月11日上午10:07:35

* @param请求

* @返回

* @引发异常

* @ 1.0版

*/

@ RequestMapping(params=' method=get微信设计,方法=RequestMethod .GET)

public @ResponseBody MapString,Objectget微信设计(HttpServletRequest请求)引发异常{

/* 返回的数据数据*/

MapString,Object jsonMap=new HashMap();

//构成子数据地图

MapString,Object subject map=new HashMap();

//1.获取参数

字符串URL=ShowNull(请求。GetParameter(' URL ');

string t=ShowNull(请求。GetParameter(' t ');

字符串AppID=ShowNull(请求。GetParameter(' AppID ');

字符串AppSecret=ShowNull(请求。GetParameter(' AppSecret ');

if(URL==null | | t==null | | AppID==null | | AppSecret==null){

返回js 4地图(jsonMap,subjects map,'参数为空,状态代码_ FAILED _ BANDINIT _ PARAM);

} else {

string access token=weixinutills。getaccesstoken(appId,AppSecret);

string ticket=weixinutills。getticket(访问令牌);

长时间戳=系统。CurrentiMemillis()/1000;

string non estr=randomstringutils。randomalphanumeric(16);

String sign=getSign(票证、nonceStr、时间戳、URL);

主题地图。put(' result ',' 1 ');

主题地图。put(' timestamp ',timestamp);

主题地图。put('非estr ',非estr);

主题地图。put(' AppID ',AppID);

主题地图。put(' sign ',sign);

}

返回js 4地图(jsonMap,subjects map,'获取符号成功,STATUSCODE _ SUCCESS);

}

5.前端代码

//扫一扫进入页面时去调用

$.ajax({

类型: 'GET ',

url : '你行为的url ',

数据: {

appId : ' ',

appSecret : ' ',

url : location.href,

t : Math.random()

},

成功:函数(json) {

if (json.data.result=='1') {

wxConfig(json.data.timestamp,json。数据。非estr,

json.data.sign,json。数据。AppID);

}

}

});

函数wxConfig(_timestamp,_ nonceStr,_signature,_appId) {

wx.config({

//debug : false,//开启调试模式,调用的所有美国石油学会(美国石油学会)的返回值会在客户端警报出来,若要查看传入的参数,可以在个人计算机端打开,参数信息会通过原木打出,仅在个人计算机端时才会打印。

appId : _appId,//必填,公众号的标识

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

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

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

jsaplist :[' OnMenuShareTimeline ',' onMenuShareAppMessage ',

onMenuShareQQ ',' onMenuShareWeibo ',' scanQRCode' ]

//必填,需要使用的射流研究…接口列表,所有射流研究…接口列表见附录2

});

}

//扫码调用

函数scanCode() {

wx.scanQRCode({

需要结果: 1,

扫描类型: ['二维码','条形码'],

成功:功能(res) {

console.log(res)

//扫描返回的数据

var result=res.resultStr

},

失败:功能(res) {

layer.open({

内容: '请稍后再试,

皮肤: '味精,

时间: 2

//2秒后自动关闭

});

}

});

}

其实就是这么的简单

这里需要提醒大家页面一定要引入脚本类型=' text/JavaScript ' src=' http://RES . wx。QQ。com/open/js/jweixin-1。0 .0 .js '/脚本

不然会调用不了微信的函数

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航