1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java弹出微信扫一扫_JAVA实现调用微信js-sdk扫一扫

java弹出微信扫一扫_JAVA实现调用微信js-sdk扫一扫

时间:2021-06-02 09:58:17

相关推荐

java弹出微信扫一扫_JAVA实现调用微信js-sdk扫一扫

喜欢的朋友可以关注下。

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

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

准备appid(公众号的id)

AppSecret (公众号的密钥)

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

获取Token→根据token获取Ticket→根据ticket签名→反会参数给前端→前端调起扫一扫接口

下面直接上代码

1.获取token

/**

* Description: 获取微信公众号token

*

* @author dsn

* @date 9月21日 上午9:53:26

* @param appid

* @param secret

* @return

* @version 1.0

*/

public static String getAccessToken(String appid, String secret) {

String token = "";

String token_url = "https://api./cgi-bin/token?grant_type=client_credential&appid=" + appid

+ "&secret=" + secret;

JSONObject result = PayCommonUtil.httpsRequest(token_url, "POST");

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

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

}

return token;

}

2.获取ticket

/**

* Description: 获取微信ticket

*

* @author dsn

* @date 9月21日 上午9:54:03

* @param token

* @return

* @version 1.0

*/

public static String getTicket(String token) {

if ("".equalsIgnoreCase(token) || null == token) {

return "";

}

String ticket_url = "https://api./cgi-bin/ticket/getticket?access_token=" + token + "&type=jsapi";

JSONObject result = PayCommonUtil.httpsRequest(ticket_url, "POST");

return result.get("ticket").toString();

}

3.签名

public static String getSign(String jsapi_ticket, String noncestr, Long timestamp, String url)

throws NoSuchAlgorithmException {

String shaStr = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + noncestr + "×tamp=" + timestamp + "&url="

+ url;

MessageDigest mDigest = MessageDigest.getInstance("SHA1");

byte[] result = mDigest.digest(shaStr.getBytes());

StringBuffer signature = new StringBuffer();

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

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

}

return signature.toString();

}

4.action中调用

/**

* Description:微信扫一扫接口

*

* @author ran.chunlin

* @date 4月11日 上午10:07:35

* @param request

* @return

* @throws Exception

* @version 1.0

*/

@RequestMapping(params = "method=getWechatSign", method = RequestMethod.GET)

public @ResponseBody Map getWechatSign(HttpServletRequest request) throws Exception {

/* 返回的json数据 */

Map jsonMap = new HashMap<>();

// 构成子数据map

Map subJsonMap = new HashMap<>();

// 1.获取参数

String url = showNull(request.getParameter("url"));

String t = showNull(request.getParameter("t"));

String appId = showNull(request.getParameter("appId"));

String appSecret = showNull(request.getParameter("appSecret"));

if (url == null || t == null || appId == null || appSecret == null) {

return json4Map(jsonMap, subJsonMap, "参数为空", STATUSCODE_FAILED_BADINPUT_PARAM);

} else {

String accessToken = WeiXinUtils.getAccessToken(appId, appSecret);

String ticket = WeiXinUtils.getTicket(accessToken);

Long timestamp = System.currentTimeMillis() / 1000;

String nonceStr = RandomStringUtils.randomAlphanumeric(16);

String sign = getSign(ticket, nonceStr, timestamp, url);

subJsonMap.put("result", "1");

subJsonMap.put("timestamp", timestamp);

subJsonMap.put("nonceStr", nonceStr);

subJsonMap.put("appId", appId);

subJsonMap.put("sign", sign);

}

return json4Map(jsonMap, subJsonMap, "获取sign成功", STATUSCODE_SUCCESS);

}

5.前端代码

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

$.ajax({

type : 'GET',

url : "你action的url",

data : {

appId : "",

appSecret : "",

url : location.href,

t : Math.random()

},

success : function(json) {

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

wxConfig(json.data.timestamp, json.data.nonceStr,

json.data.sign, json.data.appId);

}

}

});

function wxConfig(_timestamp, _nonceStr, _signature, _appId) {

wx.config({

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

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

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

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

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

jsApiList : [ 'onMenuShareTimeline', 'onMenuShareAppMessage',

'onMenuShareQQ', 'onMenuShareWeibo', 'scanQRCode' ]

// 必填,需要使用的JS接口列表,所有JS接口列表见附录2

});

}

//扫码调用

function scanCode() {

wx.scanQRCode({

needResult : 1,

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

success : function(res) {

console.log(res)

//扫描返回的数据

var result = res.resultStr;

},

fail : function(res) {

layer.open({

content : '请稍后再试',

skin : 'msg',

time : 2

//2秒后自动关闭

});

}

});

}

其实就是这么的简单

这里需要提醒大家 页面一定要引入

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

标签: java

顶一下

(0)

0%

踩一下

(0)

0%

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。