PHP使用企业微信接口实现H5网页二维码、条形码扫码功能

2023-11-28   阅读:1555   类型:前端   分类:企业微信    标签: 微信开发 html 企业微信

实现H5二维码、条形码扫码使用企业微信接口,相比原生接口扫码功能,更加精准和准确识别,以下是个案例,供大家参考。

1、前端放置点击按钮,并引入js

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport">
 <title>企业微信H5扫码功能</title>
 <script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
 <script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
  <button type="button" class="sack"> 扫一扫</button>
</body>
</html>

2、js按钮点击时间代码:

<script>
$('.sack').click(function(){
  wx.scanQRCode({
   desc: 'scanQRCode desc',
    needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
    scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
    success: function(res) {
     // 回调
      var result = res.resultStr;//当needResult为1时返回处理结果
    },
    error: function(res) {
      if (res.errMsg.indexOf('function_not_exist') > 0) {
        alert('版本过低请升级')
      }
      alert(JSON.stringify(res))
    }
  });
 })
</script>

3、通过config接口注入权限验证配置

<script>
wx.config({
  beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
  debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  appId: '<?php echo $wxagentConfig["corpid"];?>', // 必填,企业微信的corpID,必须是本企业的corpID,不允许跨企业使用
  timestamp: '<?php echo $wxagentConfig["timestamp"];?>', // 必填,生成签名的时间戳
  nonceStr: '<?php echo $wxagentConfig["nonceStr"];?>', // 必填,生成签名的随机串
  signature: '<?php echo $wxagentConfig["signature"];?>',// 必填,签名,见 附录-JS-SDK使用权限签名算法
  jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
//通过ready接口处理成功验证
wx.ready(function(res){
 // alert(11)
  // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
//通过error接口处理失败验证
wx.error(function(res){
 // alert(JSON.stringify(res))
  // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
</script>

4、PHP获取配置信息方法

<?php
 $appid = "ww56e482c3201e863"; //企业信息中的ID
 $SECRET = "T4TAmrI4gSSErrNNe_bdo5L255018r2x2"; //应用secret
 $agentid = "1325122";

// 配置信息
// 1、获取access_token
$url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=".$appid."&corpsecret=".$SECRET;
$result = getJson($url);
// 通过code和access_token获取userid和user_ticket
$access_token = $result['access_token'];

// 2、获取企业的jsapi_ticket
$res3 = getJson("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=".$access_token);
if($res3['errcode']==0){
3、生成签名
$jsapi_ticket=$res3['ticket'];

$noncestr = noncestr(16);
$timestamp = time();
$surl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];;
$signatureString = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$surl;
$signature = sha1 ( $signatureString ); //对signatureString进行sha1签名,得到signature:
// var_dump($signature);exit;

$wxagentConfig = wxagentConfig($appid,$agentid,$timestamp,$noncestr,$signature,$surl,$jsapi_ticket);

// 生成企业微信所需字段
function wxagentConfig($appid,$agentid,$timestamp,$noncestr,$signature,$surl,$jsapi_ticket){
$wx['corpid'] =$appid; // 必填,企业微信的corpid,必须与当前登录的企业一致
$wx['agentid'] = $agentid; // 必填,企业微信的应用id (e.g. 1000247)
$wx['timestamp'] = $timestamp; // 必填,生成签名的时间戳
$wx['nonceStr'] = $noncestr; // 必填,生成签名的随机串
$wx['signature'] = $signature;// 必填,签名,见附录-JS-SDK使用权限签名算法

return $wx;
}

 // 生成签名的随机串
 function nonceStr($length){
 $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK1NGJBQRSTUVWXYZ';//随即串,62个字符
 $strlen = 62;
 while($length > $strlen){
  $str .= $str;
  $strlen += 62;
 }
 $str = str_shuffle($str);
 return substr($str,0,$length);
 }

 function getJson($url){
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($ch);
 curl_close($ch);
 return json_decode($output, true);
 }
?>
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://tpxhm.com/fdetail/1030.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×