PHP实现生成带参小程序二维码进入指定页面并存储本地文件
发表时间:2020-9-29
发布人:葵宇科技
浏览次数:44
重点:使用小程序二维码必须先发布小程序!!!
PHP代码
1.获取access_token
public function Atoken(){
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的APPID&secret=你的Appsecret';
$token = json_decode(getUrl($url),true); //使用CURL GET方法进行请求并将返回的JSON转成数组处理
//以下根据自己逻辑进行整理不做过多解释,过期时间为2小时 建议存储起来。
}
2.生成小程序二维码
/*
* 生成小程序二维码
* $code String 生成二维码中的参数
* */
private function createQR($code){
//Atoken() 公共方法 传入access_token
$URL = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$this->Atoken();
//索引键必须一致
$data = [
'scene' => $code, //二维码传入参数
'page' => 'pages/my/inviteFriends/inviteFriends', //扫码后进入页面
];
$json = json_encode($data); //数组加密
$result = postUrl($URL,$json); //用CURL 进行POST请求
if(isset($result['errcode'])){ //查看文档错误代码
return false;
}
//没有出现错误代码 会返回二进制文件流,可以转成base64直接使用也可以转成file
//以下是将二进制流转成file并写入本地
$data = date('Ymd');
$path = $path = ROOT_PATH.'public/Qrcode/'.$data; //ROOT_PATH 我使用的是TP5框架
if(!file_exists($path)){ //判断目录是否存在
mkdir($path);
}
$filename = md5($code);
$path = $path.'/'.$filename.'.png'; //最后要写入的目录及文件名
// 创建将数据流文件写入我们创建的文件内容中
$ifp = fopen( $path, "w" );
fwrite( $ifp, $result );
fclose( $ifp );
return $path; //路径根据自身需要返回
}
最后生成二维码
前端测试
打开生成的小程序二维码
scene 字段的值会作为 query 参数传递给小程序/小游戏。
用户扫描该码进入小程序/小游戏后,开发者可以获取到二维码中的 scene 值,再做处理逻辑。
调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟。
开发工具模拟时的 scene 的参数值需要进行 encodeURIComponent
Page({
>(query) {
// scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
const scene = decodeURIComponent(query.scene)
}
})
更多功能查看 官方文档。
欢迎大神指教