PHP生成带参数的小程序码

2023-11-10

生成小程序码并携带参数

        我们平时在开发微信小程序时,会遇到如下场景,需要制作某个推广链接,然后需要生成一个专属小程序码,扫描这个专属二维码时,获取到推广的链接携带的参数跳转到指定的界面。这个看似很难,其实特别简单,阅读微信官方的接口就很容易弄明白,获取小程序的appid和小程序的secret,然后生成token,再通过这个token请求微信那边的生成小程序码的接口,完事!

        第一步:检测token是否存在于redis中且没有过期,如果都满足就直接到下一步,否则就通过接口获取token后将token存入redis。第二步:调用token,设置生成小程序码的页面、参数、和版本(开发版、体验版、正式版),生成小程序码。生成的小程序码是二进制内容,可以转换成base64编码后存入redis方便调用,也可以直接展示为图片或直接保存为图片。

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$getToken = $redis->exists("Token");
if ($getToken==0){
    $appid = '小程序appid';
    $secret = '小程序secret';
    $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);
    $redis->set("Token", $output);
    $redis->expire("Token","7000");
}
$tk = json_decode($redis->get("Token"))->access_token;

$urlss = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$tk;
$ch = curl_init();
$datass = json_encode(array("page"=>"pages/login/login","env_version"=>"develop", "scene"=>"aa&bb&cc"));
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);

        转换成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);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP生成带参数的小程序码 的相关文章

  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • 图像随机损坏(但刷新后加载)并显示“资源解释为图像但使用 MIME 类型 text/html 传输”

    我目前正在开发一个简单的 php 网站 问题是 我的整个网站中的图像 发生在所有 php 文件中 随机损坏并显示错误资源解释为图像 但以 MIME 类型 text html 传输但是 如果我尝试多次刷新页面 可以再次加载图像并且错误消失 我
  • PHP MongoDb 驱动程序:如何设置执行代码的超时

    我有以下代码 它在 MongoDb 端执行一段代码 mongoCode new MongoCode Some JS code db gt execute mongoCode array socketTimeoutMS gt 1000000
  • AWS-PHP-SDK / SNS 直接寻址返回错误

    您好 我正在使用 Laravel 4 设置来利用 AWS SNS 向我的 iOS 设备发送推送消息 从 AWS 控制台向我的设备发布命令效果很好 然后我尝试从 PHP sns AWS get sns sns gt publish array
  • PHP - 如何获取主要 HTML 内容,例如 Firefox 中的阅读器模式

    在 android Firefox 应用程序和 safari iPad 中 我们只能通过 阅读器模式 阅读主要内容 阅读更多 http support mozilla org en US kb how enable reader mode
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • 在哪里可以学习网络编程从入门到精通? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我尝试做教程 但它是无组织且无结构的 我在哪里可以学习 PHP 从初学者到大师 我正在寻找类似的网站w
  • 分页显示所有其他页面上第 1 页的相同帖子

    我最近在创建即将发生的事件列表时得到了很多帮助 请参阅此处显示即将举行的活动 包括今天的活动 https stackoverflow com questions 17343615 showing upcoming events includ
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • Facebook API sdk 4.0 - 将照片发布到 Facebook

    我正在尝试创建一个应用程序 用户可以在其中浏览照片并将其从计算机提交到 Facebook 为此 他们首先必须将照片上传到服务器 然后使用 Facebook 请求将此图像发布到 Facebook 我正在使用多部分 表单数据 这就是我到目前为止
  • Nginx 502 网关错误。通过增加buffer来解决。为什么?

    我正在设置 LEMP 堆栈来运行 Drupal 我安装了 Nginx 和 PHP FastCGI Nginx 工作正常 但任何运行 PHP 的尝试都会出现错误 502 Bad Gateway 谷歌很快发现 nginx 502 错误网关 ht
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • PHP 中的 -> 和 :: 有什么区别?

    这个东西困扰我好久了 一直找不到 在 php 中使用 和 gt 之间的类有什么区别 让我举个例子 想象一个名为 MyClass 的类 该类中有一个函数 myFunction 使用有什么区别 MyClass myclass new MyCla
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • PHP更改小数点分隔符

    在某些情况下 PHP 会在操作后更改小数点分隔符 下面是一个示例 为什么小数点分隔符变成 这是一个多语言网站 在西班牙语版本中 区域设置设置为西班牙语 es ES 小数点分隔符为 这就是为什么正在改变 解决方案是强制 LC NUMERIC

随机推荐

  • 基于Multisim的四人抢答器设计与仿真

    功能 1 抢答器最多可供4名选手参赛 编号为1 4号 各队对应用一个按钮S1 S4中一个控制 并设置一个清零和抢答控制开关S5 该开关由主持人控制 2 抢答器具有锁存功能 直到主持人 清零 3 开关S作为清零及抢答控制开关 由主持人控制 当
  • 关于Navicat 报错1251连接不成功Mysql

    使用Navicat 连接数据库时候出现1251错误 解决方法 1 首先打开mysql exe 然后输入密码 mysql exe可以在安装的位置搜索一下 2 输入ALTER USER root localhost IDENTIFIED WIT
  • C#WinForm界面: 使用IrisSkin4实现美化换肤

    记录IrisSkin4应用过程 方便以后参考 步骤一 在网上下载IrisSkin4 dll和它的皮肤文件 步骤二 复制以下两个文件到winfrom项目的Debug文件夹下 步骤三 引用IrisSkin4 dll文件 步骤四 在工具箱空白处点
  • 数字图像处理(冈萨雷斯 第三版)

    1 1 图像与图像处理的概念 图像 Image 使用各种观测系统以不同形式和手段观测客观世界而获得的 可以直接或间接作用于人眼并进而产生视觉的实体 包括 各类图片 如普通照片 X光片 遥感图片 各类光学图像 如电影 电视画面 客观世界在人们
  • MySQL——索引详解

    目录 一 为什么要有索引 二 什么是索引 三 索引的原理 四 MySQL的存储引擎 五 索引的数据结构 六 聚簇和非聚簇索引 七 索引的设计原则 一 为什么要有索引 一般的应用系统 读写比例在10 1左右 而且插入操作和一般的更新操作很少出
  • 系统分析中的决策问题

    例如你设计一个图书馆系统支持用户预订被借出的书籍 有两个解决方案 一是 每一本书被归还时校验是否有人预订 如有预订则以某种方式如短信等通知预订客户 同时书籍做另类处理不会被流入馆内以节省时间 但是问题是预订的客户要来走一个预订的流程即管理员
  • 【B站】动态规划学习

    https www bilibili com video BV1ET4y1U7T6 p 6 spm id from pageDriver 暴力递归到动态规划 测试用例 include
  • 基于STM32F103C8T6的超声波模拟雷达设计。【C8T6最小系统板+标准固件库+1.8‘TFT-LCD屏】

    前言 之前为做毕设一直在网上浏览关于STM32单片机的DIY项目 大多数设计都是关于智能家居方面的应用 通过浏览不同平台的内容发现了一个采用超声波测距并通过屏幕反馈障碍物位置的模拟雷达设计 感觉很有创意 但网上关于此项目的内容大多都是采用a
  • 手撕 AVL 树——C++ 高阶数据结构详解

    目录 传统艺能 概念 AVL 树结构定义 数据插入 AVL 树旋转 左单旋 右单旋 左右双旋 右左双旋 验证 AVL 树 查找 删除 传统艺能 小编是双非本科大一菜鸟不赘述 欢迎各位指点江山 期待 QQ 1319365055 此前博客点我
  • 四、FTP服务

    四 FTP服务 FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一 是目前Internet上使用最广泛的文件传送协议 FTP概述 ftp是典型的C S架构的应用层传输协议 需要由服务端软件 客户端软件两个部分共同实现
  • TCP是怎么处理长连接、短连接

    TCP 协议是一种面向连接的协议 即在通信双方之间建立连接后才能开始传输数据 TCP 协议通过三次握手建立连接 在连接建立后就可以保持长时间的连接 以实现长连接 在 TCP 协议中 数据被分成多个数据包进行传输 每个数据包都有序号和确认应答
  • mac idea spark运行报错WARN Utils: Service ‘sparkDriver‘ could not bind on port 0. Attempting port 1.

    报错截图如下 在hosts里加入 本机ip 机器名 如 192 168 22 22 centos7 解决 原因是sparkDriver会根据主机名去找地址 找不到就报错 增加环境变量即可 SPARK LOCAL IP 127 0 0 1 也
  • efficientdet在gpu训练好的模型无法再cpu上使用

    AssertionError The NVIDIA driver on your system is too old found version 9010 Please update your GPU driver by downloadi
  • hdu 1069 Monkey and Banana

    Problem acm hdu edu cn showproblem php pid 1069 Reference www cnblogs com kuangbin archive 2011 08 04 2127291 html 题意 给
  • Educational Codeforces Round 67 (Rated for Div. 2)

    contest链接 A Stickers and Toys time limit per test 2 seconds memory limit per test 256 megabytes input standard input out
  • Sonarlint问题汇总

    1 Fields in a Serializable class should either be transient or serializable 说明 类属性中存在不能被序列化的属性 一般是对象 如 public class Addr
  • eMMC RPMB分区介绍

    EMMC标准中 将内部的 Flash Memory 划分为 4 类区域 最多可以支持 8 个硬件分区 如下图所示 一般情况下 Boot Area Partitions 和 RPMB Partition 的容量大小通常都为 4MB 部分芯片厂
  • CentOS7.X修改网卡名称为eth*

    修改相关配置文件 vi etc default grub cd etc sysconfig network scripts sed i s ens32 eth0 g ifcfg ens32 sed i s ens33 eth1 g ifcf
  • 虚幻4(UE4) 读取XML文件方式

    虚幻4引擎 读取XML文件 1 导入XmlParser模块 2 1读取方式一 从根节点读 读XML文档 TSharedPtr
  • PHP生成带参数的小程序码

    生成小程序码并携带参数 我们平时在开发微信小程序时 会遇到如下场景 需要制作某个推广链接 然后需要生成一个专属小程序码 扫描这个专属二维码时 获取到推广的链接携带的参数跳转到指定的界面 这个看似很难 其实特别简单 阅读微信官方的接口就很容易