前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 生成微信小程序码,并存储图片

PHP 生成微信小程序码,并存储图片

作者头像
泥豆芽儿 MT
发布2023-10-22 09:09:52
2810
发布2023-10-22 09:09:52
举报

背景

  • 当前鄙人接手的项目,需要在设备机器上展示 小程序二维码 为了记录扫码用户从哪台机器注册的 那么,实现方案就是:在小程序码中,绑定设备编号参数 在此,记录一番实现步骤 …

小程序开发文档 - 【 获取不限制的小程序码 】

实现步骤

①. 分析步骤

代码语言:javascript
复制
1. 获取 Access Token
   注意:access_token 在获取时,要根据自己的业务需求,可以考虑存储到 redis、mysql (7200秒内)
2. 根据小程序 APPID、APPSECRET - 获取不限制的小程序码
   主要请求参数:  page、scene、width
3. 将获得的小程序码,进行位置存储,方便后期查看使用

②. 代码实例

代码语言:javascript
复制
    /**
     * @Notes:获取 access_token
     * @return bool|string
     * @User: zhanghj
     * @DateTime: 2023-10-16 16:21
     */
    public function getAccessToken(){
        $appid = 'XXXXXXXXXX'; //APPID
        $secret = 'XXXXXXXXXXXXXXXXXXXXXXX'; //APPSECRET
        $urlss = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $urlss);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output??'';
    }

    /**
     * @Notes:生成 小程序码
     * @param $mini_page_link
     * @param int $img_tag
     * @return string
     * @User: zhanghj
     * @DateTime: 2023-10-16 16:48
     */
    public function generateToMiniCode($mini_page_link,$img_tag = 0){
        $mini_code_img = dirname(\Yii::$app->basePath) . '/backend/web/upload/mini_code/' . $img_tag . '.png';

        $access_token = $this->getAccessToken();
        $tk = json_decode($access_token)->access_token;

        $urlss = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$tk;
        $ch = curl_init();
        $_pageData = [
            "page"=> $mini_page_link, //例如:pages/home/index
            "scene"=>"device_id={$img_tag}", //参数绑定
            "width" => 120 //宽度
        ];
        $datass = json_encode($_pageData);
        curl_setopt($ch, CURLOPT_URL, $urlss);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $datass);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, false);
        $output1 = curl_exec($ch);
        curl_close($ch);
        file_put_contents($mini_code_img, $output1, true);
        return $this->imgHost . '/mini_code/' . $img_tag . '.png';
    }

③. 实现结果

  • 所得小程序码,截图如下:
  • 提示: 小程序端,开发人员通过对所配置页的初始化加载, 提取参数 "scene",以方便后期的业务处理 … 对于Linux 系统,使用 file_put_content() 有时会有操作权限的影响,可以使用 chmod 777 -R 进行权限赋值

附录

参考文章

使用技巧

  • 转换成base64编码
代码语言:javascript
复制
$imgUrl = 'data:image/jpg;base64,'.base64_encode($output1);
  • 直接在页面显示为图片
代码语言:javascript
复制
header("Content-type: image/jpg;charset=gb2312");
echo $output1;
  • 保存为图片
代码语言:javascript
复制
$url = "test.jpg";
file_put_contents($url, $output1, true);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 实现步骤
    • ①. 分析步骤
      • ②. 代码实例
        • ③. 实现结果
        • 附录
          • 参考文章
            • 使用技巧
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档