js调用微信扫一扫demo_JS 调用微信扫一扫功能

 2023-09-07 阅读 22 评论 0

摘要:1.第一步:设置调用微信js安全域名,就可以在该域名下调用微信的js接口2.第二步:将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[]3.第三步:后台获取签名代码:package com.epoch.wap.common;import java.io.IOExc

1.第一步:

设置调用微信js安全域名,就可以在该域名下调用微信的js接口

2.第二步:

将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[]

3.第三步:

后台获取签名代码:

package com.epoch.wap.common;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Formatter;

import java.util.HashMap;

import java.util.Map;

import java.util.UUID;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

import com.epoch.common.utils.JsonUtil;

/**

* 官方给的使用js的验证工具

* @author Administrator

*

*/

public class JsSignUtil {

public static String accessToken = null;

public static Map sign(String url) {

String sendUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=**appid**&secret= **secret**";

String result = getHttpResult(sendUrl);

Object accessResult = JsonUtil.getValueFromJson(result, "access_token");

String signUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+accessResult.toString()+"&type=jsapi";

String resultSign = getHttpResult(signUrl);

Object ticket = JsonUtil.getValueFromJson(resultSign, "ticket");

Map ret = new HashMap();

String nonce_str = create_nonce_str();

String timestamp = create_timestamp();

String string1;

String signature = "";

//注意这里参数名必须全部小写,且必须有序

string1 = "jsapi_ticket=" + ticket +

"&noncestr=" + nonce_str +

"&timestamp=" + timestamp +

"&url=" + url;

try

{

MessageDigest crypt = MessageDigest.getInstance("SHA-1");

crypt.reset();

crypt.update(string1.getBytes("UTF-8"));

signature = byteToHex(crypt.digest());

}

catch (NoSuchAlgorithmException e)

{

e.printStackTrace();

}

catch (UnsupportedEncodingException e)

{

e.printStackTrace();

}

ret.put("url", url);

ret.put("nonceStr", nonce_str);

ret.put("timestamp", timestamp);

ret.put("signature", signature);

ret.put("jsapi_ticket", ticket);

ret.put("appId", "wx154f74654ae04891");

return ret;

}

/**

* 随机加密

* @param hash

* @return

*/

private static String byteToHex(final byte[] hash) {

Formatter formatter = new Formatter();

for (byte b : hash)

{

formatter.format("%02x", b);

}

String result = formatter.toString();

formatter.close();

return result;

}

/*

* 获取访问地址链接返回值

*/

private static String getHttpResult(String url) {

String result = "";

HttpGet httpRequest = new HttpGet(url);

try {

HttpResponse httpResponse = HttpClients.createDefault().execute(httpRequest);

if (httpResponse.getStatusLine().getStatusCode() == 200) {

result = EntityUtils.toString(httpResponse.getEntity());

}

} catch (ClientProtocolException e) {

e.printStackTrace();

result = e.getMessage().toString();

} catch (IOException e) {

e.printStackTrace();

result = e.getMessage().toString();

}

return result;

}

/**

* 产生随机串--由程序自己随机产生

* @return

*/

private static String create_nonce_str() {

return UUID.randomUUID().toString();

}

/**

* 由程序自己获取当前时间

* @return

*/

private static String create_timestamp() {

return Long.toString(System.currentTimeMillis() / 1000);

}

}

官方文档示例:

参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html

用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

4 第四步:

前台进入页面:`

@RequestMapping(value = "/tiaoma")

public String tiaoma( HttpServletRequest request,GoodsVO goods) throws Exception {

String Url=request.getRequestURL()+"?"+request.getQueryString().toString();;

Map resMap = new HashMap();

resMap = JsSignUtil.sign(Url);

request.setAttribute("nonceStr", resMap.get("nonceStr"));

request.setAttribute("timestamp", resMap.get("timestamp"));

request.setAttribute("signature", resMap.get("signature"));

request.setAttribute("appId", resMap.get("appId"));

request.setAttribute("url", resMap.get("url"));

request.setAttribute("jsapi_ticket", resMap.get("jsapi_ticket"));

return "index/tiaoma";

}`

以上所述是小编给大家介绍的JS 调用微信扫一扫功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/15616.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息