<?php
session_start();
/**
* [getWxAcsessToken 获取access_token]
* @return [type] [description]
*/
function getWxAcsessToken(){
$appid = "xxx";//开发者ID(AppID)
$appsecret = "xxx";//开发者密码(AppSecret)
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
//2.初始化
$ch = curl_init();
//3.设置参数
curl_setopt($ch , CURLOPT_URL, $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
//如果获取的token为null,不妨先看看curl_exec返回值是否为false
//解决办法:跳过SSL证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//4.调用接口
$res = curl_exec($ch);
if( curl_errno($ch) ){
var_dump(curl_error($ch));
}
//5.关闭curl
curl_close($ch);
//微信以JSON数据包格式返回给公众号,需要json_decode,true使其返回数组
$arr = json_decode($res, true);
return $arr;
}
function http_curl($url){
//2.初始化
$ch = curl_init();
//3.设置参数
curl_setopt($ch , CURLOPT_URL, $url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
//如果获取的token为null,不妨先看看curl_exec返回值是否为false
//解决办法:跳过SSL证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//4.调用接口
$res = curl_exec($ch);
if( curl_errno($ch) ){
var_dump(curl_error($ch));
}
//5.关闭curl
curl_close($ch);
//微信以JSON数据包格式返回给公众号,需要json_decode,true使其返回数组
$arr = json_decode($res, true);
return $arr;
}
/**
* [getJsApiTicket 公众号用于调用微信JS接口的临时票据]
* @return [type] [description]
*/
function getJsApiTicket(){
if($_SESSION['jsapi_ticket_expire_time']>time() && $_SESSION['jsapi_ticket']){
$jsapi_ticket = $_SESSION['jsapi_ticket'];
}else{
$access_tiken = getWxAcsessToken();
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_tiken['access_token']."&type=jsapi";
$res = http_curl($url);
$jsapi_ticket = $res['ticket'];
$_SESSION['jsapi_ticket'] = $jsapi_ticket;
$_SESSION['jsapi_ticket_expire_time'] = time()+7000;
}
return $jsapi_ticket;
}
// 获取随机数
function getRandCode($num=16){
$array = array(
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'0','1','2','3','4','5','6','7','8','9'
);
$tmpstr = '';
$max = count($array);
for ($i=1; $i <= $num; $i++) {
$key = rand(0,$max-1);
$tmpstr .= $array[$key];
}
return $tmpstr;
}
$jsapi_ticket = getJsApiTicket();
$time = time();
$noncestr = getRandCode();
// 注意 URL 一定要动态获取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$signature = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$time."&url=".$url;
$signature = sha1($signature);
?>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
<title>调用扫一扫</title>
</head>
<body>
<div>点我调用扫一扫</div>
<input type="text" name="qrCode" id="qrCode">
</body>
<script src='https://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
<script>
var div=document.querySelector('div');
var qrCode = document.getElementById('qrCode');
div.onclick=function(){
wx.config({
debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
// debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId : '', // 必填,公众号的唯一标识
timestamp : , // 必填,生成签名的时间戳
nonceStr : '', // 必填,生成签名的随机串
signature : '',// 必填,签名,见附录1
jsApiList : ['onMenuShareTimeline','checkJsApi', 'scanQRCode'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function() {
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
console.log(res);
alert(result);
qrCode.value = result.substr(result.indexOf(',')+1);
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
sessionStorage.setItem('saomiao_result',result);
//其它网页调用二维码扫描结果:
//var result=sessionStorage.getItem('saomiao_result');
}
});
});
}
</script>
</html> 努力到无能为力,拼搏到感动自己
java myEclipse2017添加tomcat服务器 php使用redis redis类型与操作 php获取ip归属地 linux安装redis和redis扩展 cmd批量删除文件 Linux下mysql操作 一个人的旅途 PHP SFTP简单上传下载实现 基于PHP的微信公众平台开发(TOKEN验证,消息回复)
php获取ip归属地 PHP SFTP简单上传下载实现 基于PHP的微信公众平台开发(TOKEN验证,消息回复) php实现微信公众平台发红包功能 php使用redis redis类型与操作 linux安装redis和redis扩展 java myEclipse2017添加tomcat服务器 java Myeclipse 2017的安装 PHP中如何给日期加上一个月 加一周 加一天
Copyright © 2016-2019 709173702@qq.com 版权所有 ICP证:粤ICP备16117826号-1
联系邮箱:709173702@qq.com