JS 调用微信扫一扫功能
发布时间 - 2026-01-10 22:00:55 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Angular 表单中正确绑定输入值以确保提交与验证正常工作
linux top下的 minerd 木马清除方法
JS中对数组元素进行增删改移的方法总结
bing浏览器学术搜索入口_bing学术文献检索地址
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Python3.6正式版新特性预览
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Swift中循环语句中的转移语句 break 和 continue
iOS中将个别页面强制横屏其他页面竖屏
如何快速搭建高效服务器建站系统?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Python文件流缓冲机制_IO性能解析【教程】
JavaScript常见的五种数组去重的方式
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel如何实现文件上传和存储?(本地与S3配置)
如何确认建站备案号应放置的具体位置?
Python文件异常处理策略_健壮性说明【指导】
在线制作视频网站免费,都有哪些好的动漫网站?
如何确保FTP站点访问权限与数据传输安全?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
linux写shell需要注意的问题(必看)
javascript中对象的定义、使用以及对象和原型链操作小结
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Laravel如何创建自定义Artisan命令?(代码示例)
如何在IIS中新建站点并配置端口与物理路径?
如何在IIS7中新建站点?详细步骤解析
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Laravel怎么判断请求类型_Laravel Request isMethod用法
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
如何生成腾讯云建站专用兑换码?
昵图网官方站入口 昵图网素材图库官网入口
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Laravel如何使用Livewire构建动态组件?(入门代码)
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
Laravel如何实现用户注册和登录?(Auth脚手架指南)
node.js报错:Cannot find module 'ejs'的解决办法
如何挑选高效建站主机与优质域名?
深圳网站制作培训,深圳哪些招聘网站比较好?
如何在云主机快速搭建网站站点?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Laravel如何实现API资源集合?(Resource Collection教程)
Laravel如何使用Telescope进行调试?(安装和使用教程)
制作旅游网站html,怎样注册旅游网站?

