1.第一步:

设置调用微信js安全域名,就可以在该域名下调用微信的js接口
2.第二步:
将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[]
3.第三步:
参考官方文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=876521668&lang=zh_CN
通过后台获取js权限签名jsapi_ticket【参考文档:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95】
后台获取签名代码:
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<String, Object> 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<String, Object> ret = new HashMap<String, Object>();
String nonce_str = create_nonce_str();
String timestamp = create_timestamp();
String string1;
String signature = "";
//注意这里参数名必须全部小写,且必须有序
string1 = "jsapi_ticket=" + ticket +
"&noncestr=" + nonce_str +
"×tamp=" + 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<String, Object> resMap = new HashMap<String, Object>();
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 调用微信扫一扫功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# js调用微信扫一扫
# 微信JSSDK调用微信扫一扫功能的方法
# 基于JavaScript代码实现微信扫一扫下载APP
# JS 实现微信扫一扫功能
# 自己的
# 文档
# 一扫
# 小编
# 在此
# 给大家
# 第二步
# 所述
# 给我留言
# 第三步
# 感谢大家
# 就可以
# 返回值
# 第四步
# 疑问请
# 有任何
# security
# java
# UnsupportedEncodingException
# IOException
相关文章:
Swift中switch语句区间和元组模式匹配
建站org新手必看:2024最新搭建流程与模板选择技巧
如何在万网开始建站?分步指南解析
网站制作网站,深圳做网站哪家比较好?
如何在IIS中新建站点并解决端口绑定冲突?
如何在宝塔面板中修改默认建站目录?
如何用y主机助手快速搭建网站?
如何通过虚拟主机快速完成网站搭建?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何通过IIS搭建网站并配置访问权限?
建站之星北京办公室:智能建站系统与小程序生成方案解析
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Python多线程使用规范_线程安全解析【教程】
C++如何使用std::optional?(处理可选值)
如何选购建站域名与空间?自助平台全解析
如何挑选最适合建站的高性能VPS主机?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
网站制作公司排行榜,抖音怎样做个人官方网站
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
如何通过宝塔面板实现本地网站访问?
建站主机如何选?性能与价格怎样平衡?
专业网站建设制作报价,网页设计制作要考什么证?
大连 网站制作,大连天途有线官网?
家庭建站与云服务器建站,如何选择更优?
建站之星安装后界面空白如何解决?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
建站之星如何助力网站排名飙升?揭秘高效技巧
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
南平网站制作公司,2025年南平市事业单位报名时间?
建站之星后台密码遗忘或太弱?如何重置与强化?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何通过VPS建站实现广告与增值服务盈利?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
如何在IIS服务器上快速部署高效网站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
自助网站制作软件,个人如何自助建网站?
制作营销网站公司,淘特是干什么用的?
如何在西部数码注册域名并快速搭建网站?
如何选择建站程序?包含哪些必备功能与类型?
h5网站制作工具有哪些,h5页面制作工具有哪些?
如何配置支付宝与微信支付功能?
*请认真填写需求信息,我们会在24小时内与您取得联系。