调用微信扫一扫需要使用微信公众号(订阅号也可以)自带的微信扫一扫功能

公众号配置

首先配置js接口安全域名

然后找到appid和secret 备用

然后代码,PHP文件(填入appid和secret)

public function index () {$Config = $this->getConfig();$this->assign("Config", $Config);return view();}public function getConfig(){// 微信 JS 接口签名校验工具: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign$appid = 'wxb9b9*****07df';$secret = 'e503***************4845c86';// 获取token$token=$this->get_token($appid,$secret);// 获取ticket$ticket=$this->get_ticket($token);// 进行sha1签名$timestamp = time();$nonceStr = $this->createNonceStr();// 注意 URL 建议动态获取(也可以写死).$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // 调用JSSDK的页面地址// $url = $_SERVER['HTTP_REFERER']; // 前后端分离的, 获取请求地址(此值不准确时可以通过其他方式解决)$str = "jsapi_ticket={$ticket}&noncestr={$nonceStr}&timestamp={$timestamp}&url={$url}";$sha_str = sha1($str);return ['appid'=>$appid,'timestamp'=>$timestamp,'nonceStr'=>$nonceStr,'sha_str'=>$sha_str];}function get_token($appid,$secret){$token_data = @file_get_contents('wechat_token.txt');if (!empty($token_data)) {$token_data = json_decode($token_data, true);$time  = time() - $token_data['time'];if ($time > 3600) {$token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";$token_res = $this->https_request($token_url);$token_res = json_decode($token_res, true);$token = $token_res['access_token'];$data = array('time' =>time(),'token' =>$token);file_put_contents('wechat_token.txt', json_encode($data));} else {$token = $token_data['token'];}}else{$token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";$token_res = $this->https_request($token_url);$token_res = json_decode($token_res, true);$token = $token_res['access_token'];$data = array('time' =>time(),'token' =>$token);file_put_contents('wechat_token.txt', json_encode($data));}return $token;}function get_ticket($token){$ticket_data = @file_get_contents('wechat_ticket.txt');if (!empty($ticket_data)) {$ticket_data = json_decode($ticket_data, true);$time  = time() - $ticket_data['time'];if ($time > 3600) {$ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$token}&type=jsapi";$ticket_res = $this->https_request($ticket_url);$ticket_res = json_decode($ticket_res, true);$ticket = $ticket_res['ticket'];$data = array('time'    =>time(),'ticket'  =>$ticket);file_put_contents('wechat_ticket.txt', json_encode($data));} else {$ticket = $ticket_data['ticket'];}}else{$ticket_url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$token}&type=jsapi";$ticket_res = $this->https_request($ticket_url);$ticket_res = json_decode($ticket_res, true);$ticket = $ticket_res['ticket'];$data = array('time'    =>time(),'ticket'  =>$ticket);file_put_contents('wechat_ticket.txt', json_encode($data));}return $ticket;}function createNonceStr($length = 16) {$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str = "";for ($i = 0; $i < $length; $i++) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}/*** 模拟 http 请求* @param  String $url  请求网址* @param  Array  $data 数据*/function https_request($url, $data = null){// curl 初始化$curl = curl_init();// curl 设置curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);// 判断 $data get  or postif ( !empty($data) ) {curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 执行$res = curl_exec($curl);curl_close($curl);return $res;}

然后html

<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><title>test</title><script src="js/jquery-3.3.1.min.js"></script><script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script><style>a:hover{text-decoration: none;}</style></head>
<body>
<button id="scanQRCode">扫码</button>
<text id="code"></text>
</body>
<script>$(function(){wx.config({// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。debug: false,// 必填,公众号的唯一标识appId: "{$Config['appid']}",// 必填,生成签名的时间戳timestamp:""+"{$Config['timestamp']}",// 必填,生成签名的随机串nonceStr:"{$Config['nonceStr']}",// 必填,签名,见附录1signature:"{$Config['sha_str']}",// 必填,需要使用的JS接口列表,所有JS接口列表见附录2jsApiList : [ 'checkJsApi', 'scanQRCode' ]});wx.error(function(res) {alert("出错了:" + res.errMsg);//这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。});wx.ready(function() {wx.checkJsApi({jsApiList : ['scanQRCode'],success : function(res) {}});//点击按钮扫描二维码document.querySelector('#scanQRCode').onclick = function() {wx.scanQRCode({needResult : 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,scanType : ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有success : function(res) {alert(res.resultStr);//二维码信息var result=res.resultStr.split(",");//条形码信息$('#code').html(result[1]);}});};});})</script>
</html>

tp5.1 页面调取微信扫一扫识别条形码和二维码相关推荐

  1. 微信小程序之生成条形码和二维码

    需求描述:商家用扫描枪扫用户条形码或二维码实现支付. 效果图: 说明:微信小程序.支付宝小程序的条形码和二维码都可以由一串数字通过 barcode.js 和 qrcode.js 插件绘制在页面的 Ca ...

  2. 【Exception】微信小程序,配置普通链接二维码规则 文件校验失败问题 校验文件检查失败 扫普通链接二维码打开小程序

    [Exception]微信小程序,配置普通链接二维码规则 文件校验失败问题 校验文件检查失败 扫普通链接二维码打开小程序 一.问题描述 1.公司业务有个需求,扫描普通的二维码,跳转到小程序的某个页面, ...

  3. 钉钉开发平台 —H5微应用-- 扫条形码、二维码 api 示例

    扫条形码.二维码 使用说明 客户端 Android iOS PC 支持说明 支持 支持 不支持 dd.biz.util.scan({type: String , // type 为 all.qrCod ...

  4. 微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能

    微信小程序开发交流qq群   581478349    承接微信小程序开发.扫码加微信. 正文: 先上效果图,再附上完整源码: 1.多张图片循环渲染后预览.保存.识别带参数二维码 <view w ...

  5. 实现微信小程序和支付宝小程序二维码合并

    实现微信小程序和支付宝小程序二维码合并,这样用户就可以通过同一个二维码进入微信或者支付宝啦 1.需要准备可以通过公网访问的服务器 2.微信小程序 打开微信小程序后台->开发(左边)->开发 ...

  6. 最新在线客服系统php代码微信软件公众号小程序app二维码聊天网站源码

    最新在线客服系统php代码微信软件公众号小程序app二维码聊天网站源码 管理界面 独家长期更新日志(欢迎反馈BUG) 1.添加手机端前后台声音提示 2.添加后台客户管理显示在线离线 3.添加清空当前对 ...

  7. 微信公众号带场景参数的二维码生成与使用?

    2019独角兽企业重金招聘Python工程师标准>>> 微信公众号推广时,用户通过扫码关注公众号,统计用户是通过哪个带场景二维码进行关注的,并对用户自动分组打标签备注.直接使用微号帮 ...

  8. 小程序长按识别公众号二维码、个人微信号、企业微信号、微信群、-已实现

    一.微信原则上不在支持小程序中长按识别 在2020年微信的一次版本更新后,就不在支持 在小程序中长按识别微信公众号了. 可以看到这个文章: 紧急!!! 微信8.0版本,在小程序webview内嵌公众号 ...

  9. uniapp小程序中长按识别公众号二维码,企业微信二维码,个人微信二维码

    长按识别公众号二维码,企业微信二维码,个人微信二维码 效果图 通过给image标签添加show-menu-by-longpress="true"属性,实现长按识别功能 注意:二维码 ...

  10. 微信电子健康卡——获取健康卡二维码接口

    静态二维码 通过调用barcodeJs生成二维码 <%@ Page Language="C#" AutoEventWireup="true" CodeBe ...

最新文章

  1. java getitemcount_RecyclerView.Adapter中的getItemCount() 返回数组的size是出现异常?
  2. Intel Realsense pyrealsense2 points对象
  3. css实现垂直居中的几种方式(布局常用)
  4. Netflix视频质量感知评价模型之路
  5. [SAP成都] SAP UI5应用的sap-ui-core.js被加载之前,还有哪些js文件被加载了
  6. 福音!微信个人公众号可以改名了!
  7. 精仿腾讯视频php源码开源免安装版,自动采集
  8. 电磁感应理论之父,法拉第传奇
  9. python和django的关系_Django一对一关系实践
  10. 可视化实验二:大数据可视化工具—Tableau
  11. javascript脚本_应用JavaScript:用户脚本
  12. Win7下更改iTunes备份路径最便捷的方法
  13. 什么促使计算机图形学发展,计 算 机 图 形 学 的 过 去、 现 在 和 未 来.doc
  14. 如何在 R 中计算二项式置信区间
  15. android 原生控件,抽离Android原生控件的方法
  16. java中explain什么意思_explain关键字使用解释
  17. Coloring Torus(Atcoder Grand Contest 030 C)
  18. 电子印章助推《上海市公共数据和一网通办管理办法》施行
  19. 计算机输入法如何显示在桌面,Windows10系统启用输入法语言栏桌面提示框的方法...
  20. nginx详细文档 – 安装配置,深入源码,模块编写,编译器参数,系统函数

热门文章

  1. app 原形设计常用工具总结
  2. 三维地图3DGIS平台技术指标要求规划
  3. 中国公开课《如何培养孩子的学习兴趣》2020 郑日昌 观后感
  4. 时序分析 42 -- 时序数据转为空间数据 (一) 格拉姆角场
  5. SMILES:化学结构的线性表示方法
  6. 企业微信群:机器人定时提醒功能数据库配置化
  7. element-UI设置背景色和边框色
  8. mpls工作原理通俗解释_网工知识角|三分钟让你醍醐灌顶,熟练掌握MPLS技术
  9. 紫光同创 FPGA 开发跳坑指南(五)—— DDR3 控制器 IP 的仿真
  10. 编写c语言数据从结构时头文件,C语言与数据结构 实验指导.doc