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 调用微信扫一扫功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

js调用微信扫一扫demo_JS 调用微信扫一扫功能相关推荐

  1. 微信调用jssdk在网页端实现调用扫一扫,java+jsp

    这篇文章以讲解的方式,帮助大家来理解微信官方的文档,同时给出调用扫一扫的例子. 微信官方技术文档jssdk:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e04 ...

  2. 分享!如何实现微信扫二维码调用外部浏览器打开指定页面的功能

    需求概述 分享链接已经成为手机应用一个非常重要的推广传播形式.为了提高转化率,就需要让用户不管是在微信中直接打开链接还是扫描二维码都能直接下载app. 由于微信对第三方应用管的非常严格,故目前的大环境 ...

  3. 微信扫二维码调用外部浏览器页面

    需求分析 现在微信分享二维码进行推广的方式已经成为大家常用且便捷的方法了.但是经常会有分享出去的链接或二维码都无法正常打开指定页面,提示"已停止访问网页",故导致无法下载app. ...

  4. js如何调用h5的日期控价_微信公众号支付H5调用支付解析

    最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验. 一.配置公众号微信支付 ...

  5. vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口

    一直都想搞一下微信公众号网页开发,公司忙没有时间自己也没开发过所以也没有头绪,前两天通过自己的摸索以及自行查找的资料,终于通过nodejs在本地成功的获取到了微信的access_token及签名,以及 ...

  6. 微信支付(小程序,H5,公众号,扫码,App)

    一.支付模式 微信提供付款码支付.Native支付.JSAPI支付.APP支付.H5支付.小程序支付.刷脸支付共7种支付模式,其中Native支付是指生成支付二维码扫码支付,JSAPI支付是用户在微信 ...

  7. 【微信小程序系列:二】小程序常用功能:跳转地图、扫一扫、人脸识别、拍照、拨打电话、调整屏幕亮度、文字可复制、监听截屏...

    一.先言: (- ̄▽ ̄)-,hello,微信小程序系列第二篇,介绍下小程序里的前端常用功能api,可以快速copy使用~ 二.文字可复制: 小程序页面里的文字默认是没有长按复制功能的,需要套个标签来实 ...

  8. uniapp微信公众号h5开发--(微信开发回调、背景音乐自动播放、微信朋友分享、微信扫一扫)一站式踩坑

    微信公众号开发,一站式踩坑 开发前提:例如你们域名是https://www.baidu.com 配置nginx反向代理,把你项目的端口重定向到你们测试环境或线上环境域名 # 访问https://bai ...

  9. 微信扫描二维码调用手机默认浏览器打开APP(APK)应用链接下载

    很多朋友问我怎么解决微信内点击链接或扫描二维码可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们实现微信跳转功能即可.下面给大家介绍这个功能 ? 功能目的 生成微信跳转链接,实现微信内置 ...

  10. 微信小脚本之python调用wxpy

    微信小脚本之python调用wxpy 点击这里:wxpy官方文档链接 1. 安装wxpy 使用pip3安装: pip3 install wxpy python3中调用: from wxpy impor ...

最新文章

  1. openchain 环境部署
  2. 小程序上让随机的两个点都显示在地图可视区域
  3. 概率论与数理统计の笔记
  4. Spring Boot配置嵌入式Servlet容器的两种方法
  5. linux i217 v网卡驱动,手动安装Intel network I217-LM网卡的Linux驱动
  6. LoRa和ZigBee谁更适合智能家居?
  7. mysql字符集排序规则_MySQL原理 - 字符集与排序规则
  8. 计算机没有设置无线临时网络,如何创建临时无线网络
  9. linux testlink安装,Linux下安装testlink
  10. 介绍某现金贷平台的决策规则
  11. 设计模式(5)——单例模式
  12. 威猛“路威“,全新启航!
  13. Excel - 透视表 - 组合 分组
  14. #1_《经典控制理论复习》摘录
  15. ​【汇总】CV 图像分类常见的 36 个模型
  16. 我是如何揭穿“娱乐圈”大佬
  17. Unity学习笔记 实现某个动画只播放一遍然后回到初始动画
  18. HTML+CSS十分钟实现响应式布局页面,响应式布局实战教程
  19. 火山android端 4.7.0 版本,火山小视频 v4.7.0 安卓版
  20. 电话格式 php,php中ip地址 email格式 电话号码正则验证

热门文章

  1. GPLT-天梯赛-题解目录
  2. 【js】知乎chrome控制台字符画招聘信息实现
  3. 【Java】求100以内的斐波那契数列
  4. 【Java】使用Switch语句实现成绩等级判断
  5. git团队如何提交_如何使您的提交消息很棒并保持团队快乐
  6. aws dynamodb_如何使用AWS Lambda将DynamoDB集成到您的API中
  7. python @符号_Python金三角!python初学者很难绕过的坑,附教程资料
  8. Hive SQL 窗口函数
  9. Spark Streaming 遇到 kafka
  10. Python Flask实现查询和添加数据