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

news2025/2/23 17:49:52

背景

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

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

实现步骤

①. 分析步骤

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

②. 代码实例

    /**
     * @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 进行权限赋值

附录

参考文章

  • PHP生成带参数的小程序码
  • PHP生成带参数的微信小程序的二维码

使用技巧

  • 转换成base64编码
$imgUrl = 'data:image/jpg;base64,'.base64_encode($output1);
  • 直接在页面显示为图片
header("Content-type: image/jpg;charset=gb2312");
echo $output1;
  • 保存为图片
$url = "test.jpg";
file_put_contents($url, $output1, true);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构-----红黑树简介

目录 前言 1.什么是红黑树? 2.为什么需要红黑树?(与AVL树对比) 3.红黑树的特性 前言 在此之前我们学习过了二叉排序树和平衡二叉树(AVL树),这两种树都是属于搜索树的一种,那么今天…

计算机毕业设计 无人智慧超市管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

FSM人物动画状态机

人物动画状态机 介绍FSM角色模型的设置角色动作的设置角色动画控制器的设置书写角色动画的具体状态,实现缓动起步的FSM总结 介绍 摇杆我就不介绍了,之前我在这里面讲过怎么用摇杆,摇杆连接。 这里我先说下什么是FSM人物动画状态机&#xff0…

文心一言 VS 讯飞星火 VS chatgpt (114)-- 算法导论10.2 7题

七、用go语言,给出一个 O(n)时间的非递归过程,实现对一个含 n个元素的单链表的逆转。要求除存储链表本身所需的空间外,该过程只能使用固定大小的存储空间。 文心一言: 在Go语言中,你可以使用迭代方法来反转一个单链表…

【C++】:string用法详解

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

算法通过村第十四关-堆|黄金笔记|中位数

文章目录 前言数据流中的中位数的问题总结 前言 提示:我独自度过了太多的时光,沉默已成一种习惯。 帕瑞尔马卡姆《夜航西飞》 这个是一个比较难的题目,要不尝试一下看看。 数据流中的中位数的问题 参考题目地址:295. 数据流的中位…

身为程序员,你很有必要了解一下JNPF

一、JNPF是什么? JNPF是一个“低代码”的可视化编程平台,采用J2EE技术体系,基于Spring Boot框架封装的快速开发平台,包含多种开箱即用的功能,具备RBAC、自动生成代码、SaaS多租户等多个功能和模块。 JNPF,重…

真人现在猫鼠躲猫猫游戏搭建流程:专业思考与深度思考

真人现在猫鼠躲猫猫游戏是种充满乐趣和挑战的团队竞技游戏。本文将从游戏规则设计、场地布置、技术实现和用户体验等方面,深入探讨人现在猫鼠躲猫猫游戏的搭建流程,并结合专业思考与深度思考,为游戏搭建提供全面指导。 一、游戏规则设计&…

【uboot】Uboot的启动流程

引言 在驱动岗位上,每一位新员工刚入职期间都需要理解和掌握uboot,但深入的理解代码往往需要耗费大量的时间去反复阅读。本文希望对uboot进行尽可能详细的解析,帮助其他人更快的掌握和理解uboot源码。 准备工作 uboot源码 本文是基于Hi35…

Redux详解(二)

1. 认识Redux Toolkit Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。 通过传统的redux编写逻辑方式,会造成文件分离过多,逻辑抽离过于繁琐(具体可看上篇文章 Redux详解一),React官方为解决这一问题,推…

【设计模式】单例模式、“多例模式”的实现以及对单例的一些思考

文章目录 1.概述2.单例模式实现代码2.1.饿汉式单例2.2.懒汉式单例2.3.双检锁单例2.4.静态内部类单例2.5.枚举单例 3.对单例的一些思考3.1.是否需要严格的禁止单例被破坏?3.2.懒汉式真的比饿汉式更佳吗?3.3.单例存在的问题 4.其他作用范围的单例模式4.1.线…

空调原理与结构、制冷剂类型及相关先进技术

一、空调相关知识 1. 空调定义 空调是指利用各种技术和设备对某一空间内空气的温度、湿度、洁净度和流速进行调节,以满足人们对舒适性要求或不同工艺环境要求。 2. 基本原理 蒸发吸热、冷凝放热 压力越低沸点越低 3. 空调主要结构 空调主要由压缩机、冷凝器、…

求臻医学:MRD的十八般武艺 AI双驱动流派

作为专注于肿瘤精准诊疗领域的国家高科技企业,求臻医学依托《中国肿瘤基因图谱计划》和《肿瘤精准医学大数据平台》项目,围绕肿瘤诊断监测、预后评估、肿瘤早筛、遗传筛查、药物研发服务等场景,开发了针对肺癌、结直肠癌、胃癌、前列腺癌等实…

【Qt高阶】Qt D-Bus 简介【2023.10.16】

Qt D-Bus介绍 简介总线技术名词消息(阐述总线的消息内涵)服务名对象路径接口备忘表(便于记住名字的格式)调试 麒麟V10 与D-Bus 简介 D-Bus 是一个进程间通信(IPC)和远程过程调用(RPC)机制,最初是为了 Linux 开发,用来取代现有的竞争的 IPC 解决方案,提供…

交通部 EDI是什么?如何处理?

交通部于1996年开始实施《国际集装箱运输电子信息传输和运作系统及示范工程》,即在中国远洋运输集团、上海口岸、宁波口岸、天津口岸和青岛口岸建立 EDI 示范工程。 交通部 EDI 的数据结构 电子口岸或者其他物流企业需要确保能够生成和解析符合交通部要求的EDI数据…

两个pdf合并成一个pdf?

两个pdf合并成一个pdf?pdf合并是我们在处理PDF中非常常见的一个操作。我们看似有很多方法能够实现这一操作,但是真正适合自己的方法确实能够帮助我们很多。那么多方法的话,小编今天打算汇总几个比较适合新手的快速方法,这样效率更…

建立线上线下一体化营销体系,数字化营销系统必不可少

​在当今的市场环境中,实体行业想要取得持续的收入增长,必须将线上线下业务相结合,充分利用数字化营销系统的功能,以构建“全链路式”数字化营销体系。 而数字化营销系统中,常见的如分销系统、拼团系统、分红系统、积分…

mission planner通过串口连接3DR数传,远程飞控

前提 pixhaw2.4.8已布线,有单独的电源供电,通过电量计接power接口 电量计的输入端接24V电源,飞控的输入是5v电源,电量计上有个模块可以分压将5v的电输入到飞控 数传接在接口telem 2上(一个接飞控,一个接电…

用浏览器进行web应用测试,你会怎么做?

有没有遇到这样的一个场景:你在使用浏览器进行web应用测试,但是你想知道你在测试过程中的前端输出和后端响应的情况究竟如何。那么,你会怎么做呢?想必大多人会毫不犹豫地回答:通过浏览器console面板和network面板抓取信…

idea使用debug无法启动,使用run可以启动

1、将调试断点清除 使用快捷键ctrl shift F8,将勾选的选项去除即可 2、Error running SampleApplication: Command line is too long. Shorten command line for SampleApplication or also for Spring Boot default configuration,报这种错误&#x…