PHP实现生成带参小程序二维码进入指定页面并存储本地文件 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

PHP实现生成带参小程序二维码进入指定页面并存储本地文件

发表时间:2020-9-29

发布人:葵宇科技

浏览次数:32

重点:使用小程序二维码必须先发布小程序!!!

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)
  }
})

更多功能查看 官方文档。

欢迎大神指教

相关案例查看更多