全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS 调用微信扫一扫功能

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 + 
         "&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<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小时内与您取得联系。