php学习笔记:获取小程序二维码

article/2025/11/8 16:14:13

前几天同事小游戏项目要生成一个二维码展示,返回的二维码需要展示在客户端那里。但这个返回二维码的文档却是带一点小坑。小程序提供二维码的获取接口,一共有三个(实验以其中一个为主)。但返回的格式是二进制文件流,所以返回的文件想显示在客户端需要做一个转码。而转换方案采取base64编码。

在返回给客户端展示的时候,php 在base64_encode 的时候返回前端需要对编码一个前缀。例如

data:image/jpeg;base64 //输出jpg
或者 data:image/png;base64  //输出png

这样就可以实现转换过程。小程序并不能直接生成。需要借助后端,这里是有一些限制。限制小程序主动去请求接口返回。微信做了一些限制,即使加了白名单依旧是不推荐这种方式。

还有需要注意到的事情,小程序获取二维码三个接口都有不一样。前提还是需要发布后才能生成和调用。 获取access_token 的有效时长是7200秒,也就是说一般情况下2个小时后就会过期,需要重新生成。还有一种做法是在一个小时内,提前刷新请求此接口让access_token 保持最新。

下面记录一下实验的内容写一个小工具。需要填写自己的小程序APPID和密钥。

<?php
header('content-type:text/html;charset=utf-8');$APPID = "填写小程序APPID"; 
$APPSECRET =  "填写小程序密钥"; 
$access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET";session_start();$_SESSION['access_token'] = "";$_SESSION['expires_in'] = 0;$ACCESS_TOKEN = "";if(!isset($_SESSION['access_token']) || (isset($_SESSION['expires_in']) && time() > $_SESSION['expires_in'])){$json = httpRequest( $access_token );$json = json_decode($json,true); var_dump($json);$_SESSION['access_token'] = $json['access_token'];$_SESSION['expires_in'] = time()+7200;$ACCESS_TOKEN = $json["access_token"]; } else{$ACCESS_TOKEN =  $_SESSION["access_token"]; }$qcode ="https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN";$param = json_encode(array("path"=>"pages/index/index","width"=> 430));$result = httpRequest( $qcode, $param,"POST");file_put_contents("qrcode.png", $result);$base64_image ="data:image/jpeg;base64,".base64_encode( $result );function httpRequest($url, $data='', $method='GET'){$curl = curl_init();  curl_setopt($curl, CURLOPT_URL, $url);  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);  curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);  curl_setopt($curl, CURLOPT_AUTOREFERER, 1);  if($method=='POST'){curl_setopt($curl, CURLOPT_POST, 1); if ($data != ''){curl_setopt($curl, CURLOPT_POSTFIELDS, $data);  }}curl_setopt($curl, CURLOPT_TIMEOUT, 30);  curl_setopt($curl, CURLOPT_HEADER, 0);  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  $result = curl_exec($curl);  curl_close($curl);  return $result;} //https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN?><img src="<?php echo $base64_image;?>"/>

将结果输出到网页端。这样就对小程序的二维码获取到了。

这里写图片描述


http://chatgpt.dhexx.cn/article/uw9kJyUH.shtml

相关文章

玩抖音,了解它的推荐算法吗?

点击上方“大鱼机器人”&#xff0c;选择“置顶/星标公众号” 福利干货&#xff0c;第一时间送达&#xff01; 一、系统概览二、内容分析三、用户标签四、评估分析五、内容安全 本次分享将主要介绍今日头条推荐系统概览以及内容分析、用户标签、评估分析&#xff0c;内容安全等…

2019-2020 PHP面试-12家(答案全)

目录 一、洛可可设计 1、判断一个字符串A(ghtabcdef)是否包含另一个字符串B(bac),不考虑顺序。 2、ip的正则表达式 3、Restful动词中post,patch,put的区别&#xff1f;什么是安全&#xff1f;什么是幂等&#xff1f;哪些动词符合安全幂等&#xff1f; 4、写出LRU最近最久未…

【B站、西瓜抖音视频课件】Docker K8S教程

title: Docker&K8S教程 date: 2023-03-13 18:33:19 tags: [K8S,Docker] categories: [K8S] 网络策略 1.3开始提供 NetworkPolicy 基于策略的网络控制&#xff0c;用于隔离应用以减少攻击面 pod之间能否通信可通过如下三种组合进行确认&#xff1a; 其他被允许的pods&am…

一件代发分销商城系统怎么规避拼多多、淘宝、抖店对无货源的限制,还能继续做无货源代发

今年以来&#xff0c;淘宝、拼多多、抖音都在打压非库存电商。打压持续了很长时间&#xff0c;平台不断出台一系列监控缺货电商的新政策。让我们谈谈这三个平台的作用&#xff1a; 第一个是抖音。抖音发布的规则最多。基本上&#xff0c;细则每两个月更新一次。从8月份开始&…

php显示图片信息流的问题,信息流广告投放常见问题解析,速来查看~

Q1&#xff1a;信息流计划测试期&#xff0c;效果上下起伏&#xff0c;是什么原因? A&#xff1a;一方面是信息流渠道整体流量不稳定&#xff0c;会导致效果不稳定&#xff0c;因为竞争环境时刻都在变化&#xff0c;竞争对手也在不断的变化策略&#xff0c;会影响我们账户的效…

抖音矩阵号运营工具应该注意的关键事项丨抖音账号矩阵系统源码开发

1. 支持私有化部署 私有化部署其实是指一些有技术研发能力的企业&#xff0c;将开发好的系统源码打包给第三方企业&#xff0c;私有化部署到对方的服务器上&#xff0c;由运营方根据自己的运营模式进行运营推广&#xff0c;那在私有化部署的同时&#xff0c;系统的稳定性、数据…

2023全网首发抖音标签检测程序源码+花800买的/最新版本

正文: 4.0版本新增【单作品标签检测】【互关检测】【单作品限流检测】【定位申请动画】【最后更新时间】【断更时间】【作品黄金发布时间】【账号估值】 使用方法&#xff0c;上传解压后直接使用&#xff0c;想修改默认视频直接修改第一行抖音分享的链接 程序: wweoeg.lanzo…

如何使用脚手架搭建react项目

工作不易&#xff0c;小白叹气 身为一位实打实的后端同学&#xff0c;由于最近换了一份工作需要去写前端&#xff0c;还是从没接触过的react&#xff0c;简直崩溃到苦&#xff0c;我改了2个小时的前端&#xff0c;前端同学一会就搞定了&#xff0c;差点就给劝离了。。。 但是…

react脚手架创建项目失败?

收藏从未停止&#xff0c;学习从未开始 react脚手架创建项目 时隔一年&#xff0c;中间虽参与过几个react项目&#xff0c;但是一直没机会从0创建项目开始。后一直致力于vue的开发&#xff0c;所以暂时放下了react。 至今&#xff0c;闲暇之余本想着重新温习一下react&#xf…

React 开发环境的搭建 (React脚手架)

1. react脚手架 xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置&#xff08;语法检查、jsx编译、devServer…&#xff09;下载好了所有相关的依赖可以直接运行一个简单效果react提供了一个用于创建react项目的脚手架库: create-react-app项目…

react官方脚手架安装

1 npm i create-react-app -g 全局安装 2 create-react-app --version 检测版本号 3 create-react-app 项目的名字&#xff08;项目名一般小写&#xff09; 4 cd 项目的名字 5 运行 yarn start 6 一般都是要安装路由的 npm i react-router-dom (注意的是react路由安装的版本不同…

React创建脚手架

第一步&#xff1a;全局安装:npm i -g create-react-app或者npm install -g create-react-app npm i -g create-react-app //在全局安装create-react-app 我有遇到报错&#xff08;如果没有遇到这个报错的请忽略该处&#xff09;&#xff1a; 遇到这个错误&#xff0c…

React脚手架的搭建

1、安装Node.js 下载 | Node.js 2、运行node -v和npm -v两条命令 查看是否安装成功 3、npm install -g cnpm --registryhttps://registry.npm.taobao.org 用npm安装cnpm&#xff0c;将镜像源设置为国内镜像源,有些软件可能在国外,就会下载比较慢,cnpm就会相对快很…

React脚手架安装

一,npm与yarn 都能安装脚手架,如果没有yarn,全局执行命令行安装 npm install -g yarn查看版本: yarn --versionYarn 淘宝源安装&#xff0c;分别复制粘贴以下代码行到黑窗口运行即可 yarn config set registry https://registry.npm.taobao.org -g yarn config set sass_bin…

React脚手架搭建及创建React项目

1.安装node.js和npm: 可自行到node官网下载&#xff0c;下载node完成后&#xff0c;npm也会自行下载完成。 2.通过cmd执行 node -v 和 npm -v 查看是否下载成功和下载成功后的版本号。 3.安装好的npm的源默认是国外的源&#xff0c;会因为网络原因导致执行npm操作有延时&#…

React-6-脚手架

1、介绍 React脚手架名称&#xff1a;create-react-app。 什么是React脚手架&#xff1a;FaceBook的React团队官方出的一个快速构建React单页面应用的工具&#xff0c;用来帮助开发者创建一个基于React库的模板项目&#xff0c;项目引入了React及其它基础的依赖库&#xff08…

React安装脚手架

create-react-app 脚手架&#xff1a;用一行命令&#xff0c;帮助开发者&#xff0c;自动创建项目工程&#xff0c;创建目录&#xff0c;创建文件&#xff0c;编写起始代码 如果没有脚手架我们需要自己一个文件一个目录的创建。 使用脚手架步骤 1&#xff1a;安装脚手架2&…

React脚手架的安装

React脚手架是基于webpak基础&#xff0c;所以前提条件是安装好npm或者yarn版本管理器。 目录 yarn基于npm安装 安装React脚手架步骤 React脚手架项目结构 当运行React项目卡住 yarn基于npm安装 //全局安装&#xff1a;npm install -g yarn //查看版本&#xff1a;yarn -…

React应用(基于React脚手架)

目录 前言&#xff1a;一、使用create-react-app创建react应用1、什么是 react 脚手架&#xff1f;2. 创建 cli 脚手架方式13. 创建 cli 脚手架方式24. npx:5. react脚手架项目结构6. 功能界面的组件化编码流程&#xff08;通用&#xff09;7. 如何更改脚手架版本 二、React 组…

React-(1)React工程搭建(脚手架)

React工程搭建 简而言之&#xff0c;脚手架是一个CLI工具。可以帮我们创建已经配置好打包工具和项目目录结构的工程化项目模板。脚手架让项目从搭建到开发&#xff0c;再到部署&#xff0c;整个流程变得快速和便捷 1.安装react脚手架 npm i -g create-react-app2.创建react工程…